Коновалов Дмитрий Александрович

Реализация AVR309_USB в среде Algorithm Builder

Программная реализация протокола USB.
Может работать в составе AVR-микроконтроллеров с малым объемом памяти, от 2 кбайт.


AVR-309 "Программная реализация универсальной последовательной шины (USB)" - это довольно старая разработка словацкого инженера Игоря Чешко. Программный код написан целиком на ассемблере и может работать в составе AVR-микроконтроллеров с малым объемом памяти, от 2 кбайт.

USB ATtiny2313

Исходный файл прошивки USBtiny2313.asm был построчно перенесён в среду Algorithm Builder (AB) с учётом её синтаксиса и особенностей. Перенесены также все оригинальные комментарии Игоря.

В этой прошивке реализованы функции:

- Непосредственное управление линией ввода-вывода;

- Преобразователь USB - RS232;

- Запись – чтение EEPROM.

Более подробно все описано в оригинальном документе AVR309 (имеется перевод: http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR309.htm).

Схема устройства, на которой проверялась работоспособность прошивки, представлена на рис.1.


Рис. 1 Принципиальная схема для тестирования AVR309.

По шине VBUS от порта USB подаётся напряжение 5 В. Светодиод HL1 уменьшает напряжение питания микропроцессора до 3.5 В. Это необходимо для совместимости с уровнями напряжения на информационных шинах USB. Резистор R1 нужен только для внутрисхемного программирования. Если микропроцессор будет программироваться в программаторе, то R1 можно заменить перемычкой.

К сожалению драйверы имеются только для Win98/ME/2000/XP. Драйвера для Windows 7 отсутствуют, но в режиме XP-Mode все прекрасно работает.

USB ATmega8A

В ATtiny2313 прошивка AVR309 занимает почти всю программную память и для дополнительных функций места практически не остаётся. Микропроцессор ATmega8A в этом смысле более интересен, так как имеет 8 Кбайт программной памяти, 512 байт EEPROM и 1 Кбайт оперативной памяти SRAM при одинаковой стоимости. Для этой микросхемы Игорь Чешко также разработал прошивку. От прошивки для ATtiny2313 она отличается увеличенным буфером FIFO RS232, порт RS232 работает в режиме Double speed (тактируется удвоенной частотой), а для дополнительных функций остаётся более 2/3 программной памяти.

Прошивка для ATmega8 была портирована в среду AB, скорректирована для тактовой частоты 16 МГц и дополнена функцией вывода на LCD. На LCD выводятся символы, посылаемые на RS232 (в функции DoRS232Send).


Рис. 2 Принципиальная схема AVR309 ATmega8A + LCD.


Рис. 3 Модуль Evolution light SEM0010M-8A на ATmega8A (кварц 16 МГц) + USB + LCD (WH0802).


Рис. 4 Скриншот AVR309USBdemo.exe. Передача текста на RS232 и LCD.

Замечание. Для кварцевого резонатора на 16 МГц исходная прошивка была слегка модифицирована. При этом оригинальная AVR309.DLL будет выставлять завышенную скорость порта RS232, так как вычисляет значение регистра UBRR для частоты 12 МГц. Для получения корректной скорости в AVR309.DLL надо передавать значение требуемой скорости, умноженной на 0.75. Например, если нужна скорость 57600, то устанавливать надо 57600*0.75 = 43200. Другой путь – перекомпилировать AVR309.DLL, внеся исправления в исходный текст.

Приложение USB-AVR309-AB.zip:
AVR309 - Algorithm Builder/ AT90S2313/ - прошивка для AT90S2313 12МГц (АВ)
AVR309 - Algorithm Builder/ ATtiny2313/ - прошивка для ATtiny2313 12MГц (АВ)
AVR309 - Algorithm Builder/ ATtiny2313_16MHz/ - прошивка для ATtiny2313 16МГц (АВ)
AVR309 - Algorithm Builder/ ATmega8_16MHz/ - прошивка для ATmega8 16МГц (АВ)
AVR309 - Algorithm Builder/ ATmega8_LCD_16MHz/ - прошивка для ATmega8 16МГц c LCD (АВ)

Возврат к списку