Главная arrow Программирование arrow AVR arrow Разработка устройства USB - как начать работу с библиотеками AVR USB (V-USB) и libusb Thursday, March 30 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:

Разработка устройства USB - как начать работу с библиотеками AVR USB (V-USB) и libusb Версия для печати
Написал microsin   
25.09.2008

Сначала немного общих слов о пакете (библиотеке) AVR USB (новое название V-USB) компании Objective Development, и библиотеке libusb.

AVR USB (V-USB) - пакет, содержащий библиотеку подпрограмм (и примеры её использования), которая позволяет с помощью микроконтроллеров семейства AVR (призводитель Atmel) делать низкоскоростные (low-speed, стандарт USB 1.0) USB-устройства. В этих устройствах протокол USB реализован программно - в firmware, прошиваемом в микроконтроллер. Кроме того, пакет AVR-USB содержит пример программ для хоста (компьютер, к которому подключаются USB-устройства), которые реализуют обмен данными с разработанными устройствами USB. Библиотека V-USB разработана компанией Objective Development и доступна как для свободного, так и для коммерческого использования (в зависимости от выбранной Вами лицензии).

Программы для хоста используют, в свою очередь, другую библиотеку - libusb [13]. Будем для простоты называть программы, прошиваемые в микроконтроллер термином firmware, а программы, которые работают на компьютере и общаются с разрабатываемыми нами устройствами USB - термином ПО хоста. Итак, процесс работы с пакетом AVR-USB (V-USB) и библиотекой libusb на платформе Windows по шагам.

1. Для просмотра и редактирования файлов Makefile и исходников нужно обзавестись хорошим текстовым редактором, поддерживающим окончания строк в стиле Unix (для тех, кто в танке - в Windows принято заканчивать строки в текстовых файлах как 0x0D, 0x0A, а в Unix более экономно - 0x0A). Я рекомендую скачать notepad2 - все просто и без затей, программа даже не требует установки, см. [14]. Там же описано, как прикрутить notepad2 заместо стандартного notepad.

2. Скачиваем пакет драйвера AVR-USB со странички http://obdev.com/products/avrusb/download.html. Версия пакета представлена в формате avrusb-YYYYMMDD.zip. Скачивайте самую последнюю версию. 24 сентября 2008 года я скачал avrusb-20080418.zip размером в 424594 байт.

3. Распакуйте в любое место папку, содержащуюся в архиве. В моем архиве была папка avrusb-20080418, я её распаковал в папку c:\avrprj.

4. В папке c:\avrprj\avrusb-20080513\examples\ находятся примеры firmware и ПО хоста. Всего там 5 папок, каждая из которых хранит отдельный проект:
custom-class - пример firmware и ПО хоста, показывающую работу с разработанным USB-устройством типа custom class.
hid-custom-rq - пример firmware и ПО хоста, показывающую работу с USB-устройством HID-класса путем отправки ему управляющих запросов (control request). Демонстрируется обмен данными в обоих направлениях.
hid-data - пример firmware и ПО хоста, также показывающую работу с устройством HID. Демонстрируется обмен данными в обоих направлениях.
hid-mouse - пример firmware, реализующего HID устройство типа мышь.
usbtool - пример ПО хоста - универсальная программа, работающая с USB-устройствами.

Для компиляции firmware и ПО хоста нужны специальные программные пакеты, установку и использование которых рассмотрим далее.

5. Начнем с firmware. Понадобится либо avr-gcc, либо IAR Embedded Workbench for AVR. В этой статье я рассматриваю установку и работу с avr-gcc. Пакет avr-gcc на платформе Windows входит в состав пакета WinAVR. Скачиваем этот пакет - идем по адресу http://winavr.sourceforge.net/, находим там ссылку на пакет (ссылка для закачки поведет на http://sourceforge.net/), скачиваем. Я скачал WinAVR-20080610-install.exe размером 23433168 байт - обычный инсталлятор. После завершения скачки запускаем его. Выбор языка установки ни на что не влияет, я выбрал русский. Инсталлятор предлагает выбрать папку для установки, я согласился на предлагаемую по умолчанию папку C:\WinAVR-20080610. Далее запросит установить снять галочки - выбрать состав устанавливаемых компонентов (Install Files, Add Directories to PATH (Recommended), Install Programmers Notepad) - я оставил все компоненты выбранными, как и предлагалось. После установки в переменную окружения Path пропишутся пути C:\WinAVR-20080610\bin и C:\WinAVR-20080610\utils\bin. Второй путь важен для работы утилиты make. Чтобы изменения для переменной Path вступили в силу для окружения пользователя, нужно перелогиниться (по крайней мере у меня так было под w2k), либо перезапустить экземпляр командного интерпретатора cmd (чтобы обновились для него переменные окружения).

6. Откомпилируем firmware из папки c:\avrprj\avrusb-20080418\examples\hid-custom-rq\firmware\. Запустим cmd, перейдем в эту папку (cd c:\avrprj\avrusb-20080418\examples\hid-custom-rq\firmware). Введем команду make, которая откроет файл Makefile в текущей папке и выполнит имеющиеся там команды (см. статью "Как устроен Makefile..."). Makefile в текущей папке сделан так, что если ввести просто make без параметров, то выведется подсказка:
C:\avrprj\avrusb-20080418\examples\hid-custom-rq\firmware>make
This Makefile has no default rule. Use one of the following:
make hex ....... to build main.hex
make program ... to flash fuses and firmware
make fuse ...... to flash the fuses
make flash ..... to flash the firmware (use this on metaboard)
make clean ..... to delete objects and hex file

Для компиляции firmware нужно ввести make hex, что и сделаем:
c:\avrprj\avrusb-20080418\examples\hid-custom-rq\firmware>make hex
cp -r ../../../usbdrv .
avr-gcc -Wall -Os -DF_CPU=16000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atm-ga168 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=16000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atm-ga168 -x assembler-with-cpp -c usbdrv/usbdrvasm.s -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=16000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atm-ga168 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=16000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atm-ga168 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=16000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atm-ga168 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 1694 0 1694 69e main.hex

В результате в текущей папке получим файл main.hex, который и является прошивкой для микроконтроллера. Если у Вас подключен программатор avrdude (Makefile настроен на него), то для программирования кристалла просто введите make program.

Я здесь не рассматриваю, каким образом выбирается тактовая частота для микроконтроллера или его тип - это делается путем редактирования содержимого Makefile. Все хорошо расписано как в комментариях Makefile, исходного кода, а также в файлах readme.txt - на английском языке. Переведенный на русский язык пакет AVR-USB скачайте здесь - http://microsin.ru/Download.cnt/avr/avr-usb-russian.rar.

7. Теперь займемся ПО хоста. Для его компиляции нам понадобится gcc.exe, который есть в составе пакета MinGW (где скачать - см. Ссылки). Пакет MinGW - это набор портированных с Unix утилит командной строки. Я скачал MinGW-5.1.4.exe, файл размером в 140095 байт. Это хитрый инсталлятор, который при установке скачивает из интернета все необходимое. При запуске он запросит выбрать "Download and install" или "Download only", выбираем "Download and install". Далее спросит, какой пакет устанавливать - Previous, Current или Candidate. Выбираем то, что предлагается по умолчанию - Current. Далее запросят выбрать устанавливаемые компоненты. По умолчанию предлагается только "MinGW base tools", но я еще поставил галочку на всякий случай на "g++ compiler". Утилиту Make выбирать не стал, поскольку она у меня уже работает (поставилась из пакета WinAVR). Далее предложат выбрать папку для установки - C:\MinGW, соглашаемся. Далее предложат выбрать место для ярлыков, потом начнется процесс загрузки. Грузилось у меня долго, около часа, на скорости примерно 22 кбайт/сек (если верить информации инсталлятора). Грузится все в текущую папку, откуда запускали MinGW-5.1.4.exe. После установки gcc.exe оказывается в папке c:\MinGW\bin\, но в переменной Path этот путь не прописан, надо добавить вручную (надеюсь, не надо объяснять, как?).

path-tuning01.PNG path-tuning02.PNG

8. Теперь надо установить библиотеку libusb. См. ссылку на закачку релизов [13]. Найдите там ссылку для скачки наподобие libusb-win32-filter-bin-0.1.12.1.exe (цифры версии могут быть другие, выбирайте самую свежую версию). Это установщик бинарников библиотеки (бинарники позволяют работать любым приложениям Windows, использующим LibUSB), а также мастер-инсталлятор драйвера фильтра). Ставим, установщик предлагает по умолчанию в папку "C:\Program Files\LibUSB-Win32", соглашаемся. После установки, создания ярлычков инсталлятор предложит запустить тест-программу ("C:\Program Files\LibUSB-Win32\bin\testlibusb-win.exe"), которая может показать все USB устройства, с которыми можно работать через библиотеку libusb (в принципе, это все устройства USB, которые распознаны системой и имеют установленный драйвер). Программа очень полезная, может пригодиться в дальнейшем для просмотра информации об USB-устройствах. Она показывает все USB-устройства, которые корректно определены в Windows и имеют драйвера (на скриншоте ниже видны два USB-устройства - флешка Kingston DataTraveler 2.0 и debugWIRE эмулятор ATMEL JTAGICE mkII).

testlibusb-win01.PNG

Опишу установку драйверов поподробнее, потому что иногда у пользователей библиотеки бывают с этим проблемы, особенно когда они подключают новое USB-устройство к компьютеру, с другими VID и PID (даже если на нем уже ранее была установлена библиотека libusb). Проблема заключается в том, что новому устройству USB (с новыми VID и PID) требуется новый так называемый драйвер фильтра (filter driver). В процессе установки libusb-win32-devel-filter-X.X.X.X как раз и будет предложено установить драйвер фильтра на все обнаруженные USB устройства, а Ваша задача выбрать именно то устройство, которое нужно, и установить драйвер фильтра именно на него. Итак, скачиваем libusb-win32-devel-filter, например libusb-win32-devel-filter-1.2.2.0.exe, и запускаем. На запрос подтверждения запуска (если нельзя проверить издателя) щелкните на кнопку "Выполнить":

libusb-win32-devel-filter-001.PNG

На приветсвии визарда установки библиотеки LibUSB-Win32 тупо жмем Next:

libusb-win32-devel-filter-002.PNG

На запрос подтверждения принятия лицензии выбираем как обычно "I accept the agreement" и жмем Next:

libusb-win32-devel-filter-003.PNG

На окошке "важной информации" тупо жмем Next:

libusb-win32-devel-filter-004.PNG

Дальше предложат поменять путь и название папки, в которую будет установлена библиотека. Ничего менять не надо, тупо жмем Next:

libusb-win32-devel-filter-005.PNG

Дальше предложат поменять путь и название папки, в которой будут лежать ярлычки. Ничего менять не надо, тупо жмем Next:

libusb-win32-devel-filter-006.PNG

На этом установка библиотеки LibUSB завершена. Если оставить галочку "Launch filter installer wizard" и нажать кнопку Finish, то запустится мастер установки драйвера фильтра на найденные USB-устройства. Это важный шаг, который я решил вынести в отдельный раздел 8a.

libusb-win32-devel-filter-007.PNG

Теперь должны нормально компилироваться примеры ПО хоста командной строки, предназначенные для GCC. Если компиляция идет с ошибками, то возможно, что у Вас в папке C:\Program Files\LibUSB-Win32\ не хватает папок include и lib. Можете скачать установленный каталог LibUSB-Win32 полностью по ссылке [9].

8a. Установка драйвера фильтра. Как я уже упоминал, программы ПО хоста, написанные с использованием библиотеки libusb, на платформе Windows общаются с устройствами USB через так называемый драйвер фильтра. Если драйвер фильтра USB-устройства не установлен, то при попытке обращения к USB-устройству Вы можете получить сообщения типа "Could not find USB device "hardctrl-HID" with vid=0x16c0 pid=0x5df" (в этом примере отображены параметры "hardctrl-HID", vid=0x16c0, pid=0x5df, задаваемые в файле usbconfig.h, макросы USB_CFG_DEVICE_NAME, USB_CFG_VENDOR_ID, USB_CFG_DEVICE_ID соответсвенно). Проблема устраняется установкой драйвера фильтра на устройство. Визард установки драйвера фильтра запускается в процессе установки библиотеки libusb (процесс описан на предыдущем шаге), но можно также запустить визард драйвера фильтра (Filter Wizard) и отдельно из меню запуска программ:

libusb-win32-devel-filter-012.PNG

После запуска фильтра появится окно, где выбирается необходимое действие - установить драйвер фильтра на USB-устройство, удалить ранее установленный на USB-устройство драйвер фильтра, удалить все установленные драйвера фильтра со всех USB-устройств. В случае проблем с доступом к USB-устройству нам нужно установить драйвер фильтра, поэтому выбираем 1-й пункт, "Install a device filter":

libusb-win32-devel-filter-008.PNG

Далее появится окошко, в котором визард отобразит все найденные USB-устройства, на которые можно установить драйвер фильтра библиотеки libusb. Нужно по значениям VID и PID найти в списке наше проблемное USB-устройство, выбрать его и нажать кнопку Install.

libusb-win32-devel-filter-009.PNG

Далее произойдет быстрая процедура установки драйвера фильтра:

libusb-win32-devel-filter-010.PNG

По окончании установки драйвера фильтра получим соответствующее сообщение. Теперь проблем с обращением к USB-устройству через библиотеку libusb не будет.

libusb-win32-devel-filter-011.PNG

9. Попробуем откомпилировать c:\avrprj\avrusb-20080418\examples\hid-custom-rq\commandline (это ПО хоста, которое может управлять нашим устройством USB). Сначала отредактируем файл c:\asm\avrusb-20080513\examples\hid-custom-rq\commandline\Makefile. Эти 2 строки надо закоментировать (коментарий начинается с символа # в начале строки):

#USBFLAGS = `libusb-config --cflags`
#USBLIBS = `libusb-config --libs`
далее, нужно изменить пути до файлов библиотеки. Было так:
USBFLAGS = -I/usr/local/include
USBLIBS = -L/usr/local/lib -lusb
теперь должно быть так (не спрашивайте меня, почему. Это мне стоило нескольких часов "плясок с бубном"):
#USBFLAGS = -I/usr/local/include
USBFLAGS = -I"c:/Program Files/LibUSB-Win32/include"
#USBLIBS = -L/usr/local/lib -lusb
USBLIBS = -L"c:/Program Files/LibUSB-Win32/lib/gcc" -lusb
Все, теперь можно компилировать. Как обычно, запускаем cmd и переходим в нашу папку (cd c:\avrprj\avrusb-20080418\examples\hid-custom-rq\commandline). Вводим make, без параметров:
c:\avrprj\avrusb-20080418\examples\hid-custom-rq\commandline>make
gcc -I"c:/Program Files/LibUSB-Win32/include" -O -g -Wall -c opendevice.c
gcc -I"c:/Program Files/LibUSB-Win32/include" -O -g -Wall -c set-led.c
gcc -o set-led opendevice.o set-led.o -L"c:/Program Files/LibUSB-Win32/lib/gcc" -lusb

Процесс компиляции закончен, в текущей папке появятся объектные файлы (расширение *.o) и исполняемый файл set-led.exe - этот исполняемый файл и есть та программа, которая работает с разрабатываемым USB-устройством.

10. Теперь нужно собрать USB устройство по одной из схем в папке c:\avrprj\avrusb-20080418\circuits\. Можно купить готовую плату, см. http://microsin.ru/content/view/605/44/.

11. Теперь нужно прошить программу в микроконтроллер (прошивку c:\avrprj\avrusb-20080418\examples\hid-custom-rq\firmware\main.hex). Как это делать, рассказывать не буду, в Интернете полно информации по теме. Ищите по ключевым словам ISP, avrdude, PonyProg, ITAJICE mkII.

12. Подключите Ваше устройство к компьютеру. Если Вы его собрали и прошили правильно, то появится сообщение, что обнаружено новое устройство LEDCtlHID:
insert-LEDCtlHID1.jpg

а потом еще одно, USB Human Interface Device:
insert-LEDCtlHID2.jpg

Если посмотреть в Диспетчере Устройств, то в папке Human Interface Devices появится 2 новых устройства:
insert-LEDCtlHID3.jpg

Если посмотреть свойства USB Human Interface Device, то мы увидим имя LEDCtlHID, которое было задано в макросе USB_CFG_DEVICE_NAME (файл c:\avrprj\avrusb-20080513\examples\hid-custom-rq\firmware\usbconfig.h):
insert-LEDCtlHID4.jpg

Никакие драйвера нам не потребовались - наше устройство USB принадлежит к классу HID!

13. Теперь попробуем поуправлять устройством. Сначала запустим set-led.exe без параметров, выведется подсказка:
c:\avrprj\avrusb-20080418\examples\hid-custom-rq\commandline>set-led.exe
usage:
set-led.exe on ....... turn on LED
set-led.exe off ...... turn off LED
set-led.exe status ... ask current status of LED
Теперь мы можем командой "set-led.exe on" зажечь светодиод на макетной плате, а командой "set-led.exe off" его погасить. Наше устройство работает!

Все упоминавшееся в статье программное обеспечение можно скачать здесь - avr-usb-tools.rar на href="http://depositfiles.com/files/7y6setdxw.

На этом все! Остается только изучать пробовать примеры один за другим (примеры описаны на шаге 4), изучать их код, а еще лучше на основе примера сделать собственное USB-устройство и программу для него.

[Устранение проблем]

1. Устройство hid-data работает, а hid-custom-rq - нет. Утилита управления светодиодом set-led.exe выдает сообщение об ошибке "Could not find USB device "LEDCtlHID" with vid=0x16c0 pid=0x5df". При этом Диспетчер устройств показывает наличие подключенного устройства "USB HID-coвмecтимoe ycтpoйcтвo" LEDCtlHID (как и должно быть), а утилита TestLibUsb - это устройство не показывает. Причина - у Вас не установлена библиотека libusb, либо её установка была испорчена (например, так произошло у меня после заражения вирусом - Касперский все вылечил, но при этом кое-что поломал). Устранить просто - установите библиотеку libusb (повторите шаг 8).

2. ПО хоста не запускается с ошибкой "Пpилoжeнию нe yдaлocь зaпycтитьcя, пocкoлькy libusb0.dll нe был нaйдeн. Пoвтopнaя ycтaнoвкa пpилoжeния мoжeт иcпpaвить этy пpoблeмy". Причина - в папке %SystemRoot%\system32\ отсутствует файл libusb0.dll. Устранить просто - нужно скопировать этот файл с другого компьютера, где установлена библиотека libusb, либо переустановить библиотеку libusb.

3. Часто встречающаяся проблема у начинающих работать с библиотекой V-USB - использование прерываний. Желательно таких ситуаций избегать, оставлять одно прерывание INT0, которое работает для V-USB, и использовать код только основной программы. Если все же нужно организовать еще один другой обработчик прерывания, то это надо делать максимально осторожно. В этом случае наилучшим выходом будет написание обрабочика на ассемблере.

4. Новички часто пытаются неумело подсунуть примеры из пакета avr-usb-russian.rar в AVRStudio, и у них ничего не получается - проект не компилируется, вылезают ошибки. На самом деле все примеры avr-usb-russian.rar предназначены для компилирования из командной строки командами make.

5. Забывают также перед сборкой проекта (make, make hex) делать очистку - make clean. Команда make clean удаляет все объектные файлы, что гарантирует корректную компиляцию во всех случаях - и при изменении настроек makefile, и при изменении исходников.

6. В файле makefile лежат важные настройки проекта firmware - тип микроконтроллера (DEVICE), его тактовая частота (F_CPU). Иногда частота кварца на микроконтроллере не соответствует переменной F_CPU, и USB-устройство из-за этого не работает. Необходимо также помнить, что допустима частота кварца из ряда 12, 15, 16, 16.5, 20 МГц, другие кварцы работать не будут.

7. Важны также настройки в файле usbconfig.h - в нем определены все параметры USB-устройства, например указаны используемые ножки для сигналов D+ и D-. Назначение каждой опции подробно задокументировано. Файл usbconfig.h является общим для firmware (папка firmware) и ПО хоста (папка commandline).

8. Решение многих проблем описано в статье AVR-USB-MEGA16, V-USB, FAQ: переписка по вопросам программирования.

[Ссылки]

1. Макетные платы с интерфейсом USB
2. Простой пример управления портами P1..P22 макетки AVR-USB-MEGA16
3. Автомат управления освещением ledlight на макетке AVR-USB-MEGA16 (параметры автомата, хранящиеся в EEPROM, настраиваются консольной программой через интерфейс USB)
4. Как использовать библиотеку libusb в Visual Studio на языке C (пример управления светодиодом макетки AVR-USB-MEGA16)
5. Как использовать библиотеку libusb в Visual Studio на языке C# (пример использования AVR-USB-MEGA16 для получения входных данных)
6. AVR USB (библиотека V-USB): переписка по вопросам программирования.
7. Пакет MinGW.
8. V-USB и libusb: обмен с устройством USB HID с помощью управляющих сообщений (USB control messages).
9. Установленная библиотека LibUSB-Win32.
10. AVR-USB-MEGA16, V-USB, FAQ: переписка по вопросам программирования.
11. V-USB + libusb + Python = быстрый старт (как начать программировать для USB с использованием Python на Linux и Windows).
12. AVR-USB-MEGA16: управление устройством USB из GCC, Visual Studio CPP, VB6, Python, Delphi.
13. Ссылки на закачку релизов библиотеки libusb.
14. Notepad2.

Последнее обновление ( 01.08.2012 )
 

Комментарии  

  1. #29 don_slavone
    2013-04-0511:59:54 Сделал на ATmega8 макетку с ИК приемником. С обычного RC-5 пульта принимаю команды 4-х кнопок, влево, вправо, вверх, вниз. Назначил эти команды на нажатие соответствующих клавиш клавиатуры, т. е. сделал на ATmega8 HID-клавиатуру. Это все работает, но как то медленно. Т. е. если допустим на обычной клавиатуре нажать и держать стрелку вправо, то курсор бежит как сумасшедший. А с макетки как-то медленно. Где искать?

    microsin: могут быть несколько причин, причем эти причины могут действовать одновременно.

    1. Инфракрасный пульт передает посылки медленнее, чем работает автоповтор на обычной клавиатуре. Это самая вероятная причина.
    2. На Вашей самодельной HID-клавиатуре настроен слишком большой интервал автоповтора (это только в том случае, если Вы автоповтор используете).
    3. Недоработка в программе HID-клавиатуры.

    Конкретную причину можно найти только если провести подробную отладку и собрать больше информации.
  2. #28 ask
    2013-03-0919:38:07 Пользуюсь вашей отладочной платой на ATmega32A. Пытаюсь написать простенькую программку управления светодиодом только на java. Пример ПО хоста написал быстро, а вот с МК и прошивкой застрял! Подскажите пожалуйста где можно найти расширенную информацию по взаимодействию ПО хоста с firmware. Т. е. для взаимодействия ПО и firmware мне необходимо написать собственное прерывание в МК ? (c МК я чайник. Пишу Firmware на С, и попутно вспоминаю asm!)

    microsin: нигде более достоверную информацию не найдете, только в первоисточнике - в готовых рабочих примерах ПО хоста и firmware, которые работают совместно, и обмениваются данными. Итак, Вам нужна библиотека V-USB. В ней есть эти примеры. Вся расширенная информация имеется в коде примеров (в комментариях), в сопроводительны х файлах readme.txt. Информацию по компилированию ищите в файлах makefile.
  3. #27 inhouse
    2013-01-3109:56:23 Здравствуйте! Я использую вашу макетку на базе ATMEGA32. Сделал все по инструкции. Результат: в диспетчере задач видно устройство USBasp, у него в свойствах отображаются корректные Vid и Pid. Filter-wizard же его в своих списках не отображает, не могу установить драйвер на него.

    microsin: насколько мне известно, для использования бутлоадера USBasp никакой драйвер фильтра не нужен, надо только поставить драйвер от программатора USBasp.
  4. #26 Олег
    2013-01-1616:00:07 Подскажите пожалуйста, почему при передачи к МК происходит небольшая задержка, т. е. если я передаю репорт МК, он его считывает и сразу зажигает светодиод, а вот между нажатием кнопки и загоревшим светодиодом проходит время около секунды (так много?..) и никак нельзя ускорить процесс? Мега8, 12 МГц

    microsin: можно, конечно, никакой видимой глазу задержки быть не должно. Библиотека V-USB тут ни при чем, у Вас просто какая-то логическая ошибка в программе, возможно неправильно работает подавление дребезга контактов кнопки.
  5. #25 Олег
    2013-01-0219:31:51 Очень хотелось бы увидеть пример взаимодействия hid устройства, созданное на базе пакета драйвера AVR-USB, и ПО хоста основанного на базе HIDComponent, если есть таковые (именно рабочие), скиньте пожалуйста ссылку или так покажите…
    Заранее благодарен.
  6. #24 Олег
    2013-01-0219:10:00 Доброго времени суток. Собрал HID устройство, зашил в него пример из пакета драйвера AVR-USB. Цепляю его к ПК, но тут проблема: кроме приложенной к примеру консольной программы из папки с гаджетом ничего не может работать, точнее я не могу достучаться до самоделки. Пробовал HidComponent из проекта JEDI (на других проектах). Можете ли Вы что то мне посоветовать?

    microsin: к сожалению, не знаком с компонентом HidComponent, и не знаю, как его использовать. Если нет документации по использованию HidComponent, то попробуйте найти готовые проекты ПО хоста, написанные на HidComponent. Проанализируйте их код, и на его основе напишите собственный.
  7. #23 Олег
    2013-01-0112:51:41 Доброго времени суток. Чтобы заработало/определилось в WinXP мое hid на mega8, мне нужно из пакета драйвера AVR-USB скопировать например папку firmware из hid-data в свое место. В папке изменить 2 файла: это Makefile и usbconfig.h, где в Makefile я меняю: DEVICE = atmega8, F_CPU = 12000000, FUSE_L = 9f, FUSE_H = 09.; usbconfig.h я меняю: #define USB_CFG_IOPORTN AME D, #define USB_CFG_DMINUS_ BIT 3 (D- подсоединен к PD3/INT1), #define USB_CFG_DPLUS_B IT 2 (D+ подсоединен к PD2/INT0). Затем все сохраняю и компилирую из командной строки , появляется make.hex (-mmcu=atmega, зашиваю/проверяю в контроллер, зашиваю/проверяю фьюзы. Вставляю, виндовс неопредляет устройство , мучаюсь уже неделю. Железо 100% рабочее, потому что зашиваю другую прошивку (скачанную из инета), виндовс все видит и все работает.

    Если я все верно менял в пакете-драйвере AVR-USB, в чем может быть причина?

    microsin: причина в том, что Вы не до конца читаете документацию и FAQ. Ваша проблема описана в этой статье - забыли сделать make clean, и только потом make hex.
  8. #22 Иван
    2011-08-2318:20:13 Прошил ATiny45 через программатор STK200, программа из WinAVR, в результате устройство обнаруживается как неизвестное, а идентификаторы PID и VID нулевые, в чем дело?

    microsin: наверное, Вы прошили не ту прошивку - не для Вашего кристалла и/или схемы. Попробуйте почитать FAQ по макетной плате AVR-USB-MEGA16 (там похожая проблема уже обсуждалась), и раздел [Устранение проблем] статьи.
  9. #21 дмитрий
    2011-07-0513:03:04 Извиняюсь за дурацкие вопросы. Просто надо было после установки перемычки вытащить шнур usb и вставить обратно тогда устройство определяется как USBAsp с vid=0?16c0 pid=0?5dc. А я уж было исходники avrdude ковырять начал.

    microsin: ничего страшного, дело-то житейское. Не Вы первый, и не последний, кто документацию читает только тогда, когда уже ничего не получается =).
  10. #20 дмитрий
    2011-07-0418:40:06 скажите, вы не знаетет avrdude работает только с парой vid=0×16c0 pid=0×5dc? Потому что он у меня при прошивке выдает ошибку : avrdude: error: could not find USB device "USBasp" with vid=0×16c0 pid=0×5dc
    Хотя в вашей прошивке pid 0×5df и конечно такого устройства нет. Как заменить вашу прошивку на другую?

    microsin: Вы случайно не забыли установить перемычку, активизирующую бутлоадер USBasp? Почитайте пожалуйста статью "AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллер а ATmega32". Как только установите перемычку, и подключите USB, активизируется бутлоадер, и на компьютере появится устройство, работающее как программатор USBasp, у которого VID=0×16C0 и PID=0×05DC.

    Если хотите заменить прошивку на другую, то используйте бутлоадер, как описано в его документации. Если хотите заменить бутлоадер, то используйте ISP или JTAG программатор, как описано в его документации.

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

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

< Пред.   След. >

Top of Page
 
microsin © 2017