|
USB для микроконтроллеров Atmel ATtiny. Часть2
Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком "Карта сайта"
Для безопасности я использовал последовательные резисторы в выходных сигналах. Устройство Atmel питается линиями данных D1-D3, через резисторы 220 Ом. D0 используется для управления светодиодом. Вот версия схемы ASCII:
DB25 папа ATtiny2313
---------- ----------
18 GND ---------------------- + ---- 10 GND
2 D0 ---- 330 ---- LED ---- +
3 D1 ---- 220 --- +
4 D2 ---- 220 --- + -------------- 20 VCC
5 D3 ---- 220 --- +
7 D5 ---- 1K ------------------- 1 / RESET
8 D6 ---- 680 ------------------ 19 SCK
9 D7 ---- 1K ------------------- 17 MOSI
10 ACK --------------------------- 18 MISO
Схема USBtiny может питаться через диод на контакте 14 разъема DB-25, чтобы обеспечить перепрограммирование внутрисистемной системы ATtiny2313. Для этого требуется переходный кабель между другим программным обеспечением SPI и разъемом DB-25 (подробнее см. README). Здесь представлены изображения преобразователя, подключенного к программисту параллельного порта, и крупный план схемы, встроенной в корпус DB25 (нажмите, чтобы увеличить):
Бит-биение сигналов SPI через USB оказалось очень медленным. Чтобы получить разумные скорости программирования, я переместил алгоритм SPI в AVR. Это означает, что вы можете отправить 32-битную команду SPI в один пакет USB. Кроме того, вы можете читать или записывать до 255 байт от / до вспышки или EEPROM в одной передаче управления. В дистрибутив входит патч для avrdude-5.4, который добавляет поддержку для управления этим конвертером SPI. Имя программиста - «usbtiny». Вы можете использовать параметр -B или команду sck для указания минимального периода SCK в микросекундах (диапазон: 1..250, по умолчанию: 10). Встроенная поддержка USBtiny была добавлена в avrdude версии 5.5. Второе приложение USBtiny - это приемник для инфракрасных пультов дистанционного управления, который можно использовать с пакетом LIRC . Прошивка хранит тайм-аут метки / пространства из ИК-декодера TSOP1738 в буфере, который опрошен драйвером устройства LIRC. В качестве визуальной обратной связи светодиод мигает при получении сигнала. В качестве дополнительной (дополнительной) функции к PORTB подключается ЖК-дисплей 2x16. Вы можете управлять дисплеем через шину USB. Ниже приведена схема схемы. Выпадающий резистор на PB3 предотвращает зависание в коде инициализации ЖК-дисплея, когда ЖК-дисплей не подключен к PORTB. Вы можете отключить код ЖКИ, установив макрос LCD_PRESENT в main.c на 0.
Я принял протокол «IgorPlug-USB», так что существующий драйвер устройства LIRC «igorplugusb» можно было использовать без изменений. Тем не менее, включены патчи для lirc-0.8.0 и lirc-0.8.2, которые повышают надежность.
В релиз входит третье приложение под названием «usbtinyisp». Это модифицированная версия приложения конвертера SPI, которое было адаптировано для использования в программном обеспечении USBtinyISP AVR . Код работает как для устройств v1.0, так и для v2.0. В подкаталоге «шаблон» содержится минимальное приложение шаблона, которое может использоваться в качестве отправной точки для новых приложений USBtiny. Программное обеспечение было разработано в системе Linux. В дополнение к стандартным инструментам, таким как GNU make, вам нужны версии gcc, binutils и glibc для создания кода: в системе Debian / Ubuntu вы можете использовать следующие пакеты:
· НКА-АРН
·Binutils-АРН
·АРН-Libc
Чтобы загрузить код в AVR, я использую avrdude с программатором параллельного порта. Сначала я использовал gcc-3.4.3 с опцией -Os, которая генерирует разумный компактный код. К сожалению, более новые версии, такие как gcc-4.1.0, сгенерировали на 10% больше кода, и в результате код приложения больше не вписывался в 2K. Чтобы он соответствовал, мне пришлось удалить необязательные строки поставщика и устройства, установив макросы USBTINY_VENDOR_NAME и USBTINY_DEVICE_NAME. К счастью, генерация кода улучшилась в более поздних версиях, таких как gcc-4.3.4. Схемы были созданы с помощью gschem, из пакета geda-gschem. Преобразование в Postscript выполняется со сценарием, который вызывает gschem неинтерактивно. В дистрибутив входит модуль Python usbtiny.py, который определяет класс USBtiny, который можно использовать для связи с прошивкой USBtiny. Этот класс используется тестовыми скриптами. Модуль usbtiny.py использует оболочку Python вокруг libusb, которая создается Swig . С помощью этого модуля вы можете управлять устройством USBtiny только с несколькими строками кода Python. Программное обеспечение USBtiny лицензируется в соответствии с GNU General Public License, опубликованным Free Software Foundation, либо версией 2 лицензии, либо (по вашему выбору) любой более поздней версии.
Материал к статье