Программирование AVR: работа с USB AVR-USB162: где найти рабочие примеры кода firmware и ПО хоста Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

AVR-USB162: где найти рабочие примеры кода firmware и ПО хоста Печать
Добавил(а) microsin   

Статья писалась несколько лет назад, и многое изменилось. Сейчас уже лучше было бы её озаглавить - "где не надо искать примеры кода для микроконтроллеров Atmel с аппаратным интерфейсом USB". Дело все в том, что библиотека LUFA выросла и набрала силу, к тому же появились и другие примеры работы с чипами AVR USB, а фирменные USB-библиотеки Atmel далеки от того, чтобы их можно было назвать дружественными для пользователя (особенно для начинающего). Поэтому для быстрого старта с чипами AVR USB сейчас наилучший выбор LUFA (см. [3]). Эта статья посвящена только примерам от Atmel, которые есть на сайте atmel.com.

Основная сложность примеров от Atmel в том, что они разбиты по сериям микроконтроллеров AVR с аппаратным USB. Различают микроконтроллеры AVR USB серий 2, 4, 6, 7 (Series2, Series4, ..), и для серий и их групп пакеты примеров доступны для закачки в виде отдельных пакетов. Если об этом не знать, то в примерах легко запутаться. Макетная плата AVR-USB162AVR-USB162MU) относится к Series2, потому на ней установлен микроконтроллер AT90USB162. Вторая сложность - ассортимент примеров для разных серий AVR USB сильно отличается, и портирование от серии к серии затруднено. Третья сложность - все примеры изначально заточены только под платы разработчика Atmel. Четвертое незначительное неудобство - для ПО хоста компания Atmel предлагает использовать собственную библиотеку с закрытым исходным кодом AtUsbHid.dll, и работает такое решение только под Windows. Использовать эту библиотеку намного проще, чем HID.dll от Microsoft, но все-таки исходников нет (в отличие от libusb). Пятая сложность - скудная документация, малый ассортимент устройств в примерах. Шестое неудобство (для некоторых пользователей) - примеры рассчитаны в основном на платную среду разработки IAR Embedded Workbench for AVR. Во всем прямой контраст с LUFA, и явно не в пользу Atmel... Теперь о примерах подробнее. 

[firmware]

Как я уже упомянул, чип AT90USB162, который установлен на макетных платах AVR-USB162 и AVR-USB162MU (см. [6]) относится к младшей серии 2 микроконтроллеров AVR USB (Series2). Примеры кода от Atmel, которые будут работать на этих макетных платах, основаны на библиотеке "USB Software Library for AT90USBxxx Microcontrollers" AtUsbHid.dll, см. [4]. Примеры изначально предназначены для макетной платы Atmel STK526, см. [5], но работают и на AVR-USB162 без переделки.

Пример firmware можно найти на страничке AVR USB Series2 Software Packages [8]. Там много всего полезного, но нас интересует USB HID Generic I/O for STK526 [9]. Распакуйте содержимое скачанного архива STK526-series2-hidio-2_0_1-doc.zip, прошивка находится в файле STK526-series2-hidio-2_0_1-doc\STK526-series2-hidio-2_0_1-doc.a90. Можно её сразу прошить в макетную плату AVR-USB162 с помощью программатора Flip (как им пользоваться, см. [7]), но гораздо интереснее самому скомпилировать исходники. Файл проекта для IAR EWB AVR находится в файле STK526-series2-hidio-2_0_1-doc\demo\STK526-series2-hidio\iar\STK526-series2-hidio.eww. Я его открывал средой IAR версии 5.20, поэтому при открытии согласился на переконвертацию проекта в новую версию. Компиляция прошла без ошибок, прошивка появилась в файле STK526-series2-hidio-2_0_1-doc\demo\STK526-series2-hidio\iar\Debug\Exe\STK526-series2-hidio.a90. Прошьем файл в плату AVR-USB162 (либо с помощью Flip, либо стандартным ISP-программатором), и подключим плату через USB. В системе обнаружится и установится устройство AVR USB HID DEMO:

AVR_USB_HID_DEMO01.GIF  AVR_USB_HID_DEMO02.GIF

[ПО хоста]

Пример ПО хоста (программа на компьютере, которая управляет устройством USB) можно найти на страничке AVR USB Software Packages [8], см. USB PC Drivers Based on Generic HID Class [9]. Распакуйте содержимое архива generic_usb_hid_2008-11-19.zip в отдельную папку. Откройте в Visual Studio проект UsbHidDemoPackage.dsw - там найдете 2 примера (я открывал проект из Microsoft Development Environment 2003, Version 7.1.3088, и при открытии ответил положительно на запрос конвертации проекта в более новую версию). UsbHidDemoCode - пример GUI приложения, управляющего светодиодами и воспринимающего нажатия кнопок STK526 (для того, чтобы UsbHidDemoCode скомпилировался без ошибки "Command line error D2004 : '/I' requires an argument", надо убрать опцию /I в свойствах соответствующего раздела проекта, см. UsbHidDemoCode -> Properties -> Configuration Properties -> C/C++ -> Command Line -> Additional Options). UsbHidSmallDemoCode - пример консольной программы, также работающей с STK526 (компилируется сразу без ошибок) - она тупо мигает светодиодами. Есть также пример на JAVA (я его не пробовал) в папке JNICodeForHIDDLL. Уже скомпилированные исполняемые файлы находятся в папке ExeDemo.
    
Попробуем поуправлять нашим USB-устройством AVR USB HID DEMO. Подключаем прошитую плату AVR-USB162 через USB, запускаем программу UsbHidDemoCode.exe. Третья кнопка внизу "LED 3 .." включает/и выключает светодиод VD1 на макетной плате AVR-USB162 (порт P16 PD4, выв. 10 микроконтроллера AT90USB162). Остальные кнопки управляют следующими портами (на макетной плате AVR-USB162 соответствующих светодиодов нет):

LED 1   P12 PD0, выв. 6 микроконтроллера AT90USB162
LED 2   P13 PD1, выв. 7 микроконтроллера AT90USB162
LED 3   P16 PD4, выв. 10 микроконтроллера AT90USB162
LED 4   P17 PD5, выв. 11 микроконтроллера AT90USB162

Порты P3..P6 макетной платы AVR-USB162 соответствуют кнопкам макетной платы STK526 (они в firmware STK526-series2-hidio работают как входы). Если эти порты позамыкать на землю, то программа UsbHidDemoCode.exe будет выводить в сообщения:
AVR_USB_HID_DEMO04.JPG

[Ссылки]

1. Примеры от Atmel - firmware и ПО хоста для платы AVR-USB162 в одном архиве.
2AVR328: стандартная (generic) реализация устройства USB HID.
3. LUFA (Lightweight USB Framework for AVRs) - бесплатная библиотека для AVR с аппаратным интерфейсом USB.
4. AVR276: USB Software Library for AT90USBxxx Microcontrollers.
5. STK526 site:atmel.com - плата разработчика (AVR USB серии 2) от Atmel, STK526 Hardware User Guide site:atmel.com - руководство пользователя.
6. Миниатюрные макетные платы с интерфейсом USB: AVR-USB162 и AVR-USB162MU (чип AT90USB162, относящийся к микроконтроллерам AVR USB серии 2 Atmel).
7. Как пользоваться bootloader DFU Flip - загружать программу в память чипа без программатора, через интерфейс USB.
8. AVR USB Series2 Software Packages site:atmel.com.
9. Работа с Generic HID Class на платформе Windows PC.
10. Библиотеки для управления устройствами USB HID.

 

Комментарии  

 
0 #4 Vladimir 11.01.2022 18:26
Спасибо, работаем!
Цитировать
 
 
0 #3 Svin 15.06.2016 22:55
Как конвертировать файл формата .a90 в hex или bin? И какая программа генерирует такие прошивки для контроллеров?

microsin: двоичный код прошивки генерирует линковщик, формат двоичного кода (HEX или BIN) задается его опциями. Для преобразования форматов используют специальные утилиты, прогуглите hex2bin или bin2hex.
Цитировать
 
 
0 #2 Сергей 29.04.2011 15:37
На последних платах avr-usb162 стоит кварц на 16 МГц, поэтому пример из статьи, рассчитанный на кварц 8 МГц, в исходном виде работать не будет - после прошивки компьютер не будет видеть плату. Чтобы пример заработал, нужно внести изменения в файл config.h в папке conf. Почти в самом конце в строке:
#define FOSC 8000
надо изменить 8 на 16:
#define FOSC 16000.
После этого файл прошивки нужно заново скомпилировать, например, в IAR (см. в тексте статьи).
После прошивки все будет работать.
Для того, чтобы заново открыть во FLIP уже прошитый контроллер, нужно нажать на плате кнопку SW1, удерживая ее нажать SW2, отпустить SW1, отпустить SW2. После этого контроллер снова загрузит бутлоадер, и его можно будет открыть во FLIP.
Цитировать
 
 
0 #1 Marat 26.02.2011 15:38
Перевел документ AVR328 - не кидайтесь тухлыми яйцами пжл, в переводе возможны неточности.
http://narod.ru/disk/6396163001/doc7599.doc.html
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page