AVR-USB162: где найти рабочие примеры кода firmware и ПО хоста |
Написал microsin | |||
30.05.2009 | |||
Статья писалась несколько лет назад, и многое изменилось. Сейчас уже лучше было бы её озаглавить - "где не надо искать примеры кода для микроконтроллеров Atmel с аппаратным интерфейсом интерфейсом USB". Дело все в том, что библиотека LUFA выросла и набрала силу, к тому же появились и другие примеры работы с чипами AVR USB, а фирменные библиотеки Atmel далеки от того, чтобы их можно было назвать дружественными для пользователя (особенно для начинающего). Поэтому для быстрого старта с чипами AVR USB сейчас наилучший выбор LUFA (см. [3]). Эта статья посвящена только примерам от Atmel, которые есть на сайте atmel.com. Основная сложность примеров от Atmel в том, что они разбиты по сериям микроконтроллеров AVR с аппаратным USB. Различают микроконтроллеры AVR USB серий 2, 4, 6, 7, и для серий и их групп пакеты примеров доступны для закачки в виде отдельных пакетов. Если об этом не знать, то в примерах легко запутаться. Вторая сложность - ассортимент примеров для разных серий 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. Примеры кода от Atmel, которые будут работать на этих макетных платах, основаны на библиотеке "USB Software Library for AT90USBxxx Microcontrollers" AtUsbHid.dll, см. [4]. Примеры изначально предназначены для макетной платы Atmel STK526, см. [5], но работают и на AVR-USB162 без переделки. Пример firmware можно найти на страничке AVR USB Series2 Software Packages сайта Atmel. Там много всего полезного, но нас интересует USB HID Generic I/O for STK526. Распакуйте содержимое скачанного архива 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:
[ПО хоста]
Пример ПО хоста (программа на компьютере, которая управляет устройством USB) можно найти на страничке AVR USB Software Packages сайта Atmel, см. USB PC Drivers Based on Generic HID Class, документация находится в файле doc7645.pdf. Распакуйте содержимое архива 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.
Порты P3..P6 макетки AVR-USB162 соответствуют кнопкам макетки STK526 (они в firmware STK526-series2-hidio работают как входы). Если эти порты позамыкать на землю, то программа UsbHidDemoCode.exe будет выводить в сообщения: [Ссылки]
1. Примеры от Atmel - firmware и ПО хоста для платы AVR-USB162 в одном архиве. |
|||
Последнее обновление ( 08.02.2013 ) |