AVR-USB-MEGA16: работа под Windows 8 Печать
Добавил(а) microsin   

С выходом операционной системы Windows 8 появляется много вопросов по поводу используемого программного обеспечения для работы с платой AVR-USB-MEGA16. Как установить драйвер бутлоадера USBasp, какую брать утилиту для прошивки платы, как использовать библиотеку LibUSB для того, чтобы ПО хоста могло управлять устройством USB HID? Все эти вопросы постараюсь рассмотреть в этой статье.

Как выяснилось на практике, под Windows 8 нет никаких проблем - все работает точно так же, как работало и под Windows XP. Теперь подробнее про установку драйвера USBasp, прошивку платы с помощью утилиты Khazama 1.6.2, про драйвер фильтра и библиотеку LibUSB.

[Установка драйвера программатора USBasp]

Поскольку в макетной плате AVR-USB-MEGA16 используется загрузчик USBasp (bootloader USB), который эмулирует поведение программатора USBasp [2], то в системе Windows нужен драйвер этого программатора. Далее процесс установки драйвера USBasp по шагам.

1. Скачайте архив с драйвером USBasp. Его можно найти на сайте автора программатора USBasp [2], или скачайте пакет программ [12], или пакет программы Khazama 1.6.2 [16], там найдете этот драйвер. Архив с файлами драйвера USBasp будет называться наподобие usbasp-windriver.2011-05-28.zip. Распакуйте этот архив в любое удобное место на диске, например в папку c:\temp.

2. Установите на макетную плату AVR-USB-MEGA16 перемычку для активизации бутлоадера USBasp. Перемычка устанавливается на контакты 4 и 6 коннектора U1 ISP.

image

3. Подключите через USB макетную плату к компьютеру. Система Windows 8 обнаружит новое устройство USB, на макетной плате загорится светодиод. Чтобы увидеть обнаруженное устройство USB, зайдите в Диспетчер Устройств (Win+X -> Диспетчер Устройств). Вы увидите устройство USBasp, помеченное желтым треугольником и восклицательным знаком, что обозначает проблему - для устройства USBasp пока не установлен драйвер.

Windows8-Device-Manager-USBasp-driver-not-installed

4. В Диспетчере Устройств сделайте правый клик на устройстве USBasp, и выберите в контекстном меню Обновить драйверы. Запустится мастер установки драйвера, укажите ему в качестве места расположения драйвера папку usbasp-windriver.2011-05-28\libusb_1.2.4.0.

Windows8-USBasp-driver-isntall-step1 Windows8-USBasp-driver-isntall-step2 Windows8-USBasp-driver-isntall-step3 Windows8-USBasp-driver-isntall-step4

Имейте в виду, что этот драйвер не имеет цифровой подписи, поэтому если включена защита от установки неподписанных драйверов, то драйвер не установится, и Windows 8 сообщит об ошибке установки драйвера:

Windows8-USBasp-driver-isntall-not-signed

Если такая ошибка произошла, то беспокоиться не надо, это совершенно нормальная ситуация. Чтобы установить драйвер для USBasp на Windows 8, необходимо отключить проверку цифровой подписи устанавливаемых драйверов. Давайте рассмотрим, как это делается (процедура отключения проверки цифровой подписи для драйверов хорошо рассмотрена в [3]).

[Установка не подписанного цифровой подписью драйвера в Windows 8]

4. Временно отключите макетную плату AVR-USB-MEGA16 от компьютера, если она у Вас подключена через USB.

5. Win+X -> Командная строка (администратор) -> выполните в консоли команду:

shutdown.exe /r /o /f /t 00

6. Через несколько секунд отобразится сервисное меню "Выберите действие", щелкните на среднем пункте "Диагностика" (Troubleshoot).

7. Далее выберите Дополнительные параметры (Advanced options) -> Параметры загрузки (Startup Settings) -> Перезагрузить (Restart). Через минуту отобразится меню запуска, где кнопками F1..F9 можно выбрать нужную опцию загрузки. Нас интересует отключение проверки цифровой подписи драйвера, для этого нажмите кнопку F7 Отключить обязательную проверку подписи драйверов (Disable driver signature enforcement). После этого система перезагрузится с новыми параметрами.

8. Дождитесь полной загрузки системы, и повторите шаги 1..4 для установки драйвера USBasp. Теперь драйвер установится успешно:

Windows8-USBasp-driver-isntall-step5 Windows8-Device-Manager-USBasp-driver-installed

Драйвер загрузчика USBasp установлен, давайте теперь рассмотрим установку утилиты программирования Khazama версии 1.6.2.

Примечание: аналогичный процесс установки драйвера USBasp был и под Windows XP, и под Windows 7. Отличие только в том, что под Windows 8 нужно специальным образом отключать проверку цифровой подписи устанавливаемого драйвера.

[Установка программы Khazama 1.6.2]

Для работы с загрузчиком USBasp (для прошивки платы AVR-USB-MEGA16) можно использовать программу Khazama 1.6.2 или утилиту командной строки AVRDUDE. Удобнее всего использовать Khazama, потому что она имеет понятный и удобный графический интерфейс пользователя. Скачайте программу Khazama 1.6.2 с сайта [4], или см. пакет программ [12].

Примечание: на сайте автора [4] также есть и более новая версия, Khazama 1.7.0, но все-таки нужна нужна Khazama именно версии 1.6.2, потому что более современная Khazama использует расширенный протокол USBasp, который плохо поддерживает загрузчик (в процессе прошивки Khazama 1.7.0 будет выдавать предупреждения и сообщения об ошибках). Кстати, установка и дальнейшее использование программы Khazama под Windows 8 ничем не отличается от Windows XP и Windows 7.

8. Скачанный архив будет иметь имя KhazamaAVRProgrammer162.rar, распакуйте из него файл Khazama AVR Programmer.msi в любое место на диске, и двойным щелчком на этом MSI-файле запустите установку программы.

Khazama162-install1 Khazama162-install2 Khazama162-install3

9. После установки сделайте ярлычок запуска программы Khazama 1.6.2 для исполняемого файла C:\Program Files (x86)\khazama.com\Khazama AVR Programmer\Khazama AVR Programmer.exe. Утилита программирования Khazama 1.6.2 установлена, теперь можно прошивать макетную плату AVR-USB-MEGA16 через USB.

Примечание: в принципе программа Khazama 1.6.2 портабельна, т. е. она не требует установки, достаточно сделать копию папки уже установленной программы. Вы можете так и поступить, и скачать уже установленную программу вместе с драйвером в архиве [16]. Распакуйте из архива папку Khazama162 в любое место на диске (например, прямо в корень C: или в папку Program Files), создайте ярлычок для исполняемого файла Khazama AVR Programmer.exe, и установка на этом завершена.

[Программирование макетной платы AVR-USB-MEGA16 через USB]

Чтобы запрограммировать микроконтроллер ATmega32A, установленный на макетной плате AVR-USB-MEGA16, нужен обычный HEX-файл прошивки (firmware микроконтроллера). Давайте рассмотрим программирование микроконтроллера на примере записи прошивки Сергея Кухтецкого [5].

10. Скачайте архив в прошивкой 101022V-USB-Csharp-libusb.zip [13], распакуйте его. Готовые прошивки для измерителя pH (это и есть универсальная прошивка Сергея Кухтецкого) находятся в папке V-USB_C#_libusb\firmware\phmeter-fw\bin\. Прошивки - это обычные текстовые файлы в формате Intel HEX, которые имеют расширение файла *.hex. В имени файла прошивки указан тип микроконтроллера и тактовая частота, на которой он работает (зависит от частоты кварца, установленного на макетной плате). Так, к примеру, если Ваша макетная плата AVR-USB-MEGA16 имеет установленный кварцевый резонатор на 12 МГц, то Вам нужен файл phmeter-ATmega32-12MHz.hex. Подробнее о том, как узнать частоту кварца см. [6].

11. Установите перемычку между контактами 4 и 6 на коннекторе U1 ISP макетной платы AVR-USB-MEGA16, и подключите макетную плату через USB к компьютеру. На макетной плате загорится светодиод, сигнализирующий о готовности загрузчика USBasp к работе.

12. Запустите программу Khazama 1.6.2. В выпадающем списке выбора типа микроконтроллера выберите ATMEGA32, как показано на скриншоте.

Khazama162-selected-ATMEGA32

13. Зайдите в настройки программы, меню Command -> Program Options, и снимите все галочки, кроме Reload Last File before write и Write Flash Buffer to Chip.

Khazama162 program options

14. Зайдите в меню File -> Load FLASH file to buffer, откроется диалог выбора файла "Open Hex File". Выберите нужный HEX-файл прошивки, в нашем случае это файл phmeter-ATmega32-12MHz.hex.

Khazama162-selected-HEX-file

15. Нажмите кнопку Auto Program. Через секунду прошивка phmeter-ATmega32-12MHz.hex будет записана в память микроконтроллера ATmega32A макетной платы AVR-USB-MEGA16. Светодиод на макетной плате погаснет, и сразу же будет запущена записанная программа прошивки. Программирование макетной платы AVR-USB-MEGA16 завершено.

Снимите перемычку с контактов 4 и 6 коннектора U1 ISP, она теперь не понадобится до следующей перепрошивки платы. Мы записали в память микроконтроллера прошивку Сергея Кухтецкого. Это устройство USB HID, которое позволяет управлять микроконтроллером ATmega32A с компьютера через интерфейс USB (подробнее см. [5]).

Примечание: в Диспетчере Устройств будет все так же отображаться устройство USB как USBasp, хотя на самом деле это совсем другое устройство (оно называется LEDControl). Разницу можно увидеть, только если зайти в свойства устройства USB, открыть закладку сведения, и в выпадающем списке выбрать "Описание устройства, предоставленное шиной".

Windows8-AVR-USB-MEGA16-USB-HID-device-properties-USBasp Windows8-AVR-USB-MEGA16-USB-HID-device-properties-ATmega16-c-sharp-class

Так происходит потому, что устройство USB HID Сергея Кухтецкого LEDControl имеет те же самые VID и PID, что и программатор/бутлоадер USBasp (VID = 0x16C0, PID = 05DC).

[Установка драйвера фильтра LibUSB]

Для программного обеспечения компьютера, которое может управлять устройствами USB (ПО хоста), и использует при этом библиотеку USB, необходима также установка так называемого драйвера фильтра LibUSB. Так работают не все программы, а только те, что используют LibUSB (подробнее о различных библиотеках для написания ПО хоста см. [8]). В этом случае управление устройством USB (обычно это устройство USB HID) происходит по следующей схеме:

LibUSB-filter-driver

Не спрашивайте меня, почему так, просто так устроена популярная библиотека LibUSB, так захотели её программисты (другие библиотеки для ПО хоста драйвера фильтра не требуют). Таким образом, если Вы делаете свое собственное устройство USB HID, и пишете программу для его управления (ПО хоста), и ПО хоста использует в работе библиотеку LibUSB, то Вам необходимо установить также драйвер фильтра для устройства USB HID. Драйвер фильтра устанавливается на Windows 8 абсолютно так же, как и на Windows XP, и на Windows 7. Рассмотрим установку драйвера фильтра по шагам.

16. Зайдите на сайт LibUSB, найдите там раздел Installation для драйвера фильтра, и в этом разделе ссылку Download. Полную ссылку не даю, потому что она может измениться, лучше воспользоваться ключевыми словами для поиска [7]. Если не хотите искать, просто скачайте пакет программного обеспечения [12].

17. Исполняемый файл инсталлятора драйвера фильтра будет называться наподобие libusb-win32-devel-filter-1.2.6.0.exe. Запустите инсталлятор, и тупо следуйте его указаниям. Можно также скачать архив наподобие libusb-win32-bin-1.2.6.0.zip и распаковать его в любое удобное место - это уже готовые исполняемые файлы, пригодные для использования.

18. После завершения установки в каталоге bin Вы найдете утилиту inf-wizard.exe, это и есть мастер для установки драйвера фильтра. Устанавливается драйвер фильтра просто - сначала подключите устройство USB HID, для которого нужно установить драйвер фильтра, затем запустите inf-wizard.exe, и установите с помощью него драйвер фильтра для нужного устройства. Нужное устройство USB ищите в списке установленных устройств по значениям идентификаторов VID и PID. Процедура установки драйвера фильтра точно такая же, как была описана для Windows XP в статье [9] (в статье см. часть 8a. Установка драйвера фильтра). На скриншотах показаны основные шаги в мастере установки драйвера фильтра под Windows XP (для Windows 8 они абсолютно такие же).

libusb-win32-devel-filter-008.PNG libusb-win32-devel-filter-009.PNG libusb-win32-devel-filter-010.PNG

После успешной установки драйвера фильтра для устройства USB HID им смогут управлять программы (ПО хоста), которые используют библиотеку LibUSB.

[Примеры ПО хоста, управляющих макетной платой AVR-USB-MEGA16]

Обычно на основе макетной платы AVR-USB-MEGA16 делают устройства USB HID. Это может быть либо стандартная клавиатура, либо стандартная мышь, либо джойстик (см. проекты библиотеки V-USB, ключевые слова для поиска [10]), все это устройства USB HID. Это может быть также просто какое-то отвлеченное устройство USB HID, которое может использоваться произвольно для ввода и/или вывода, как это захочет программист. На основе AVR-USB-MEGA16 можно также сделать устройство класса USB CDC, виртуальный COM-порт. Для него не нужно даже писать ПО хоста, потому что это стандартное виртуальное устройство, с которым работают готовые консоли терминала наподобие HyperTerminal, putty, TerraTerm и другие популярные консольные клиенты.

Здесь будут рассмотрены только несколько вариантов применения макетной платы AVR-USB-MEGA16 (полный список готовых проектов см. [11]).

Это простейшее устройство USB HID, которое принимает команду от ПО хоста и по команде включает или выключает светодиод.

AVR-USB-MEGA16-switching.gif

Исходный код и прошивки, и ПО хоста открыт и доступен для скачивания, любой модификации и дальнейшего бесплатного использования. ПО хоста для отправки команд устройству USB HID использует библиотеку LibUSB, поэтому для устройства USB необходимо установить драйвер фильтра. Есть консольный вариант ПО хоста (утилита, принимающая опции командной строки), есть и утилита с GUI-интерфейсом. Полное описание проекта, ссылки на скачивание исходного кода и готовых прошивок см. в статье "Как использовать библиотеку libusb в Visual Studio".

Инженер Сергей Кухтецкий разработал оригинальную прошивку для микроконтроллера ATmega16 (она также подходит и для ATmega32A), которую он запустил на макетной плате AVR-USB-MEGA16. Он также написал класс на языке C#, который работает с этой прошивкой ATmega16.cs (так называемый класс-обертка). Класс-обертка позволяет управлять всеми ресурсами микроконтроллера через интерфейс USB, посылая устройству USB HID специальные команды. Таким образом, он получил универсальный интерфейс, с помощью которого можно в ПО хоста реализовать практически любой алгоритм работы всей системы, где макетная плата AVR-USB-MEGA16 работает как устройство USB HID, и выполняет различные функции ввода и вывода. Ниже в показаны несколько примеров готовых проектов на основе класса-обертки.

chromo01-common-view.jpg Подключение жидкостного хроматографа "Милихром" через USB к компьютеру.
termreg10waterbath-model.jpg Измерение температуры и управление нагревателем термостата.
pH06-avr-usb-mega16.JPG Простой измеритель pH с интерфейсом USB.
AVR-USB-MEGA16-power-meter-HF.PNG USB Power meter site:ra3wdk.qrz.ru - измеритель СВЧ мощности в 50-омном тракте выхода передатчика (частоты 10..11750 МГц).
stepmoto03-avr-usb-mega16.jpg Управление шаговым двигателем по USB.
AVR-USB-MEGA16-Delphi-useport.jpg Работа с USB для чайников на примере AVR-USB-MEGA16 site:vanoid.ru - программа на Delphi - управление портами макетной платы AVR-USB-MEGA16 (в макетную плату прошито firmware класса-обертки Сергея Кухтецкого).
hid-mm-fan-control-pic03-DSCF2668 USB HID регулятор вращения для компьютерных вентиляторов.
laser-control-IMG 3276 Класс-обертка для AVR-USB-MEGA16 с поддержкой событий.

Большинство этих проектов используют библиотеку LibUSB, поэтому нужно для устройства USB HID установить драйвер фильтра. Для всех проектов открыты исходные коды (см. разделы ссылок к каждому проекту). Прошивки класса-обертки и её исходные коды, а также проекты программ Сергея Кухтецкого на C# можно скачать в архиве 101022V-USB_C#_libusb.zip [13].

Простой проект, который может управлять реле. Проект может быть реализован на любом микроконтроллере AVR. Готовые примеры реализации и готовые прошивки есть для макетных плат AVR-USB-TINY45 и AVR-USB-MEGA16.

usb-Relay-conn-AVR-USB-TINY45.jpg

usb-Relay-conn-AVR-USB-MEGA16.jpg

Для ПО хоста драйвер фильтра не нужен. Подробнее см. статью "usb-Relay - маленькое USB-устройство, управляющее включением и выключением реле", там же в разделе ссылок можно скачать исходный код всех программ и готовые прошивки для микроконтроллеров.

Этот проект позволяет создать простое управление для любых радиолюбительских устройств с помощью текстовой консоли. Вы можете отдавать через USB любые текстовые команды, и устройство USB будет их принимать, обрабатывать и выдавать нужный ответ.

USB-is-the-king.png USB консоль для управления радиолюбительскими приборами.

Прелесть такого обмена данными с устройством USB в том, что ПО хоста писать не нужно, можно взять готовое - подойдет любой терминальный клиент наподобие Hyper Terminal, putty, TerraTerm, SecureCRT и т. п. Вы просто подключаетесь программой терминала к виртуальному COM-порту, и получаете управление устройством USB. Подробное описание проекта см. в статье "USB консоль для управления радиолюбительскими приборами". Там же можно скачать исходный код и готовые прошивки для макетной платы AVR-USB-MEGA16.

Это устройство эмулирует мультимедийную клавиатуру USB HID, и позволяет управлять громкостью микшера в операционной системе Windows. Никакие драйверы и дополнительные программы не нужны, потому что работу по взаимодействию с устройством берет на себя операционная система.

121217USB-volume-standard-multimedia-regulator USB регулятор громкости на энкодере и микроконтроллере AVR ver.2 site:obruboff.ru (строка для поиска Google).

[Ссылки]

1. Макетная плата AVR-USB-MEGA16.
2. USBasp - USB programmer for Atmel AVR controllers site:fischl.de (строка поиска Google).
3. Установка неподписанного драйвера в Windows 8 site:winitpro.ru (строка поиска Google).
4. Khazama AVR Programmer site:khazama.com (строка поиска Google).
5. AVR-USB-MEGA16: быстрая разработка USB приложений на C# при помощи класса-обертки ATMega16.
6. Как определить тактовую частоту микроконтроллера?
7. LibUSB filter driver installation site:libusb.org (строка поиска Google).
8. Библиотеки для управления устройствами USB HID.
9. Разработка устройства USB - как начать работу с библиотеками V-USB и libusb.
10. V-USB Reference Projects site:obdev.at (строка поиска Google).
11. AVR-USB-MEGA16: примеры применения, проекты с открытым исходным кодом и принципиальной схемой.
12. 140615Win8-AVR-USB-MEGA16.zip - драйвер для USBasp, драйвер фильтра LibUSB, Khazama 1.6.2.
13. 101022V-USB_C#_libusb.zip - прошивки Сергея Кухтецкого для класса-обертки, примеры программ на C#. 
14Как отключить проверку цифровой подписи драйвера в Windows 7 site:winitpro.ru.
15Как самостоятельно подписать драйвер для Windows 7 site:winitpro.ru.
16141122Khazama162.zip - утилита Khazama162, драйвер программатора USBasp для Windows XP, Windows Vista, Windows 7, Windows 8, прошивки загрузчика USBasp для различных микроконтроллеров.