AVR-USB-MEGA16: управление устройством USB из GCC, Visual Studio CPP, VB6, Python, Delphi Печать
Добавил(а) microsin   

Примеры работы с самодельным USB-устройством (макетная плата AVR-USB-MEGA16) из различных языков программирования - GCC, Microsoft Visual Studio C++ (.NET 2003), Visual Basic (VB6), Delphi.

Устройство USB использует свободную библиотеку V-USB, программы для компьютера (ПО хоста) - свободную библиотеку libusb. Все примеры программ, которые здесь описаны, управляют светодиодом USB-устройства вот на этой макетной плате:

avr-usb-mega16-IMG_8082.JPG

Назначение папок архива с примерами (см. Ссылки [1]):

circuits\
   принципиальные схемы устройств USB, построенных на библиотеке V-USB

hid-custom-rq\commandline\
   ПО хоста, написанное на C (компилятор GCC), в виде утилиты командной строки. Позволяет получить состояние светодиода на макетной плате AVR-USB-MEGA16, а также включить и выключить светодиод.

howto-use-libusb-cmdline.PNG

hid-custom-rq\firmware\
   Firmware для USB-устройства, записанное в макетную плату AVR-USB-MEGA16.

hid-custom-rq\firmware-bin-all\
   Скомпилированное, готовое firmware для USB-устройства, записываемое в макетную плату AVR-USB-MEGA16, на разные частоты кварцев и микроконтроллеры ATmega16 и ATmega32.

hid-custom-rq\set-led-gui\
   ПО хоста, написанное на Microsoft Visual Studio C++ (.NET 2003), в виде GUI-утилиты. Позволяет управлять состоянием светодиода на макетной плате AVR-USB-MEGA16 (включить и выключить светодиод).

howto-use-libusb-CPP.PNG

hid-custom-rq\set-led-gui-VB6\
   ПО хоста, написанное на Microsoft Visual Studio Basic (VB6), в виде GUI-утилиты. Позволяет управлять состоянием светодиода на макетной плате AVR-USB-MEGA16 (включить и выключить светодиод). Автор Степаненко Вячеслав (Казахстан, г. Талдыкорган). Работает точно так же, как и GUI-программа, написанная на Microsoft Visual Studio C++. Используется обертка для функций libusb, выполненная в виде libusbvb0.dll (автор Stephan Meyer).

howto-use-libusb-VB6.PNG

hid-custom-rq\usbhidioc\
   ПО хоста, написанное на Microsoft Visual Studio C++ - пример взаимодействия с устройствами USB HID класса.

libusb\
   Дистрибутив библиотеки libusb 0.1.12.1 (возможно, уже устарел, ищите более новую версию на sourceforge.net).

src-libusbvb0.dll\
   Исходники (GCC) обертки для функций libusb, выполненной в виде libusbvb0.dll. Позволяет программе на Visual Basic VB6 получать доступ к функциям библиотеки libusb. Автор Stephan Meyer.

usbdrv\
   Библиотека V-USB компании Obdev.at.

111015 UPD: Иван Забурдаев написал замечательную программу на Delphi, которая может читать состояние всех портов P1..P22 макетной платы AVR-USB-MEGA16, а также управлять их логическими уровнями. Программа использует возможности firmware для класса-обертки Сергея Кухтецкого (см. ссылку [6]).

AVR-USB-MEGA16-Delphi-useport.jpg

130303 UPD: еще один отличный пример [7] работы с USB HID на Delphi7. Работает на основе библиотеки JEDI Visual Component Library (JVCL).

hid-mm-fan-control-pic07-host-software-connected

[Решение возможных проблем]

Здесь описаны некоторые типичные проблемы, которые возникают при использовании прошивки Сергея Кухтецкого. Решение других проблем см. в статье AVR-USB-MEGA16, V-USB, FAQ: переписка по вопросам программирования.

1. Записал в платку прошивку Сергея Кухтецкого с помощью загрузчика USB и программы Khazama, но платка не определяется как устройство USB. Если снова установить перемычку для активации загрузчика USB, то платка определяется, и загорается светодиод. В чем проблема? Ответ: платка у Вас исправна, но Вы записали в неё не ту прошивку. Например, прошивка соответствует другой частоте кварца, не той что используется на Вашей макетной плате AVR-USB-MEGA16. Прошейте HEX-файл прошивки Сергея Кухтецкого, рассчитанный на нужную частоту кварца, который стоит у Вас. Частоту кварца можно прочитать на его корпусе, например если на корпусе написано 12.000, то кварц на 12 МГц.

2. При подключении платки к компьютеру (в платку записана прошивка Сергея Кухтецкого) система Windows запрашивает драйвер. Что это за драйвер, где его брать? Ответ: это драйвер библиотеки LibUSB, скачайте его по ссылке [8].

3. На моей системе Windows драйвер LibUSB не устанавливается, и о причине система не сообщает. Как быть? Ответ: такое нередко бывает на урезанных версиях Windows. Причина может быть в том, что не отключена система проверки цифровой подписи драйвера, либо пакет драйвера неполон (например, если Вы скачали драйвер по ссылке из статьи на сайте vanoid.ru, то там не хватает некоторых файлов, требуемых для 64-битных версий Windows). Поэтому, во-первых, перезагрузите систему, и при загрузке отключите проверку цифровой подписи драйвера (нажимайте при старте F8, и на черном экране выберите соответствующую нижнюю строчку загрузочного меню). Во-вторых, устанавливайте полную версию драйвера LibUSB (скачайте его по ссылке [8]).

4. Скомпилированное ПО хоста на C# не запускается с ошибкой. Что делать? Ответ: возможно не установлена библиотека .NET 3.5 от Microsoft. В этом случае могут выскакивать разные ошибки (наподобие The application failed to initialize properly 0xc0000135), но программа в любом случае не запустится. Чтобы решить проблему, скачайте и установите эту библиотеку (строка для поиска Microsoft .NET Framework 3.5 site:microsoft.com). Инсталлятор для библиотеки можете скачать по ссылке [8] (инсталлятор требует подключения к интернет, так как он закачивает недостающие модули).

[Ссылки]

1. 101029howto-use-libusb.zip.
2. Как использовать библиотеку libusb в Visual Studio C++ (управление макетной платой AVR-USB-MEGA16).
3. Как работать с платой AVR-USB-MEGA16 из C# (Visual Studio Express Edition 2008).
4. Класс C# (для Visual Studio Express Edition 2008) и соответствующая прошивка, позволяющие быстро сделать USB HID устройство и написать для него приложение для компьютера. Вы управляете микроконтроллером прямо из кода на C# (дергаете его ножками, читаете регистры и т. п.).
5. Пример работы с платой AVR-USB-MEGA16 на Delphi - ПРИМЕРЫ РАБОТЫ С V-USB ЧАСТЬ 1 site:avrhobby.ru, ПРИМЕРЫ РАБОТЫ С V-USB ЧАСТЬ 2 site:avrhobby.ru, ПРИМЕРЫ РАБОТЫ С V-USB ЧАСТЬ 3 site:avrhobby.ru.
6. Работа с USB для чайников на примере AVR-USB-MEGA16 site:vanoid.ru - программа на Delphi - управление портами макетной платы AVR-USB-MEGA16 (в макетную плату прошито firmware класса-обертки Сергея Кухтецкого).
7. USB HID регулятор вращения для компьютерных вентиляторов.
8140808LibUSB-driver.zip - архив с драйвером библиотеки LibUSB, он нужен для корректной работы прошивки Сергея Кухтецкого совместно с операционными системами Windows. Драйвер подходит для всех версий операционных систем Windows XP (32 bit и 64 bit), Windows 7 (32 bit и 64 bit), Windows 8 (32 bit и 64 bit). В этом же архиве найдете инсталлятор для библиотеки .NET 3.5 (требуется для приложений ПО хоста, написанных на Visual Studio C# 2010).