Avr jungo usb что это за программа

Обновлено: 30.06.2024

Нежданно-негаданно в новом 2016 году, как минимум, на двух компьютерах с Win10 и Avr Studio 5.1 одинаковым образом перестали работать avr-программаторы от слова вообще. Клон avrispmkII и самый настоящий jtagice3.

Выглядит это так: программаторы видны в списке, но сделать с ними что-то не выходит. Появляется окошко «Unable to connect to JTAGICE3», а в логе появляются несколько строк об ошибке, самой информативной из коих является одна:


Код ошибки 0x20000009 означает «No valid license». Имеется в виду, как я понял, атмеловская лицензия на драйвер Jungo. Лицензия эта в виде строки забита намертво в файле com_atmel_hil_usb.dll (найти её можно по строке Atmel_Norway). То ли срок у неё вышел (офигеть теперь), то ли драйвера все испортились из-за очередного обновления винды — неясно, но работать ничего не хочет.

Полная переустановка делу не помогает. Я так и не понял, как можно починить текущую студию или как быть с лицензией на драйвер.

Пришлось обновлять студию до 7.0.634, где, по слухам, проблем с драйвером Jungo уже нет.
Не сразу, не без лагов, но JTAGICE3 после обновления своей прошивки завёлся. А вот клон, который у меня очень древней версии 1.11, и которым очень удобно шить, нет.

Информация по исправлению функциональности программатора взята из обсуждений гитхаба. В файле (папка студии)\atbackend\codeCache\com_atmel_hil_usb.dll надо пропатчить один условный переход:
— для AS 6.2: изменить байт 0x74 на 0xEB по смещению 0x35F11;
— для AS 7.0: изменить байт 0x74 на 0xEB по смещению 0x2F632;
— для AS 7.0.634: изменить байты 0x0F 0x84 на 0x90 0xE9 по смещению 0x2F74C.
Говорят, там есть какая-то проблема со сбросом частоты на стандартные 125кГц, но пока не заметил.
UPD: В версии студии 7.0.790 патчить файл не пришлось, всё заработало само.

Это исправление позволит студии работать с программатором, невзирая на его неоригинальность. Но если программатор выдаёт версию менее, чем 1.18, то студия не даст работать, требуя обновления.
Есть два варианта решения:
1. Прогрейдить программатор прошивкой с версией 1.18 или выше (если есть такая возможность);
2. Убрать файлик avrispmkii_fw.zip из папки (папка студии)\tools\AVRISPmkII или его переименовать. Требование об обновлении исчезнет.

Ещё одна засада, связанная с версией ПО, поджидает пользователей консольного интерфейса atprogram.exe:


Но это решается ключом --force, который запрещает проверять версию ПО.

Может, решение не идеальное, но мало ли кому срочно надо что-то прошить, а тут такие пироги.
Интересно, кого-нибудь ещё случилась такая оказия в последнее время?

UPD от 10.05.2016:
Вчера срочно потребовалось прошить пару десятков авр приборов, и вдруг выяснилось, что атмел студия сдохла. Выдавала какие-то ошибки типа

(с десяток аналогичных). Помогла переустановка студии, но вот программаторы отказались работать (как минимум, клон авриспмк2). Все вышеперечисленные действия не помогли. В консоли он выдавал что-то вроде TCF Error code: 1, в студии при попытке подключиться к контроллеру, появлялась надпись у программатора «Disconnected». Что это было — непонятно.
Проблема решилась с помощью программы Zadig, драйвер с Jungo переставил на LibUsb 1.2.6.0, оказывается, студия нынче и так умеет. Надеюсь, хоть с этим драйвером проблем не будет.
Программаторы работают и из студии (потребовалось только перезапустить студию), и из консоли.

UPD от 14.04.2017:
Слетела неожиданно Visual Studio 2015 и Atmel Studio 7.0 всё с той же ошибкой насчёт «ErrorListPackage» и кучей подобных после установки обновлений. Переставил обе, при этом пришлось почистить все папки от старой студии:
AppData\Roaming\Microsoft\AppEnv\14.0
AppData\Roaming\Microsoft\VisualStudio\14.0
AppData\Roaming\Atmel\AtmelStudio\7.0
AppData\Local\Atmel\AtmelStudio\7.0
AppData\Local\Microsoft\VisualStudio\14.0
ProgramData\Atmel\AtmelStudio\7.0
ProgramData\Microsoft\VisualStudio\14.0
Program Files (x86)\Microsoft Visual Studio 14.0


После переустановки всё завелось (студия стала версией пожирнее и тоже с паками, как кейл 5: 7.0.1417), но клон перестал снова работать, уже с новой ошибкой:

отключение проверки версии ПО

Как обычно, переименовал файл avrispmkii_fw.zip (см. выше), хотя есть вариант отключить проверку версии ПО (в окне программирования у поля с напряжением есть кнопка настроек):

И надо ещё с помощью zadig сменить драйвер с теперь уже WinUSB (который тоже нифига не работает с клоном) на LibUsb 1.2.6.0. И всё снова заработает, как и должно.

UPD от 19.04.2017
Сегодня столкнулся с очередной странной проблемой: atprogram видела два одинаковых программатора, хотя включен был только один

два avrispmkII


Перетыкание программатора ничего не меняет. Помогло удаление устройства из диспетчера устройств и перетыкание (он поставил те же драйвера на libusb, но стал видеться только один программатор, как и надо).

wdreg.exe это исполняемый файл, который является частью AVR Jungo USB Программа, разработанная Atmel, Программное обеспечение обычно о 2.48 MB по размеру.

Расширение .exe имени файла отображает исполняемый файл. В некоторых случаях исполняемые файлы могут повредить ваш компьютер. Пожалуйста, прочитайте следующее, чтобы решить для себя, является ли wdreg.exe Файл на вашем компьютере - это вирус или троянский конь, который вы должны удалить, или это действительный файл операционной системы Windows или надежное приложение.

Является ли wdreg.exe вирусом или вредоносным ПО?

Wdreg.exe безопасный или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, такой процесс, как wdreg.exe, должен запускаться из, а не из другого места.

Для подтверждения откройте диспетчер задач, выберите «Просмотр» -> «Выбрать столбцы» и выберите «Имя пути к изображению», чтобы добавить столбец местоположения в диспетчер задач. Если вы обнаружите здесь подозрительный каталог, возможно, стоит дополнительно изучить этот процесс.

Еще один инструмент, который иногда может помочь вам обнаружить плохие процессы, - это Microsoft Process Explorer. Запустите программу (не требует установки) и активируйте «Проверить легенды» в разделе «Параметры». Теперь перейдите в View -> Select Columns и добавьте «Verified Signer» в качестве одного из столбцов.

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Наиболее важные факты о wdreg.exe:

Если у вас возникли какие-либо трудности с этим исполняемым файлом, перед удалением wdreg.exe вы должны определить, заслуживает ли он доверия. Для этого найдите этот процесс в диспетчере задач.

Найдите его местоположение (оно должно быть в C: \ Program Files \ Atmel \ AVR Jungo USB) и сравните размер и т. Д. С приведенными выше фактами.

Кроме того, функциональность вируса может сама влиять на удаление wdreg.exe. В этом случае вы должны включить Безопасный режим с поддержкой сети - безопасная среда, которая отключает большинство процессов и загружает только самые необходимые службы и драйверы. Когда вы можете запустить программу безопасности и полный анализ системы.

Могу ли я удалить или удалить wdreg.exe?

Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.

Согласно различным источникам онлайн, 3% людей удаляют этот файл, поэтому он может быть безвредным, но рекомендуется проверить надежность этого исполняемого файла самостоятельно, чтобы определить, является ли он безопасным или вирусом. Лучшая диагностика для этих подозрительных файлов - полный системный анализ с Reimage, Если файл классифицируется как вредоносный, эти приложения также удалят wdreg.exe и избавятся от связанных вредоносных программ.

Однако, если это не вирус и вам необходимо удалить wdreg.exe, вы можете удалить AVR Jungo USB со своего компьютера с помощью программы удаления, которая должна находиться по адресу: "C: \ Program Files \ InstallShield Информация об установке \ \ setup.exe "-runfromtemp -l0x0009 -removeonly. Если вы не можете найти его деинсталлятор, вам может потребоваться удалить AVR Jungo USB, чтобы полностью удалить wdreg.exe. Вы можете использовать функцию «Добавить / удалить программу» в Панели управления Windows.

  • 1. в Меню Пуск (для Windows 8 щелкните правой кнопкой мыши в нижнем левом углу экрана), нажмите Панель управления, а затем под Программы:
    o Windows Vista / 7 / 8.1 / 10: нажмите Удаление программы.
    o Windows XP: нажмите Установка и удаление программ.
  • 2. Когда вы найдете программу AVR Jungo USBщелкните по нему, а затем:
    o Windows Vista / 7 / 8.1 / 10: нажмите Удалить.
    o Windows XP: нажмите Удалить or Изменить / Удалить вкладка (справа от программы).
  • 3. Следуйте инструкциям по удалению AVR Jungo USB.

Наиболее распространенные ошибки wdreg.exe, которые могут возникнуть:


• «Ошибка приложения wdreg.exe».
• «Ошибка wdreg.exe».
• «Возникла ошибка в приложении wdreg.exe. Приложение будет закрыто. Приносим извинения за неудобства».
• «wdreg.exe не является допустимым приложением Win32».
• «wdreg.exe не запущен».
• «wdreg.exe не найден».
• «Не удается найти wdreg.exe».
• «Ошибка запуска программы: wdreg.exe».
• «Неверный путь к приложению: wdreg.exe.»

Аккуратный и опрятный компьютер - это один из лучших способов избежать проблем с AVR Jungo USB. Это означает выполнение сканирования на наличие вредоносных программ, очистку жесткого диска cleanmgr и ПФС / SCANNOWудаление ненужных программ, мониторинг любых автозапускаемых программ (с помощью msconfig) и включение автоматических обновлений Windows. Не забывайте всегда делать регулярные резервные копии или хотя бы определять точки восстановления.

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

Чтобы помочь вам проанализировать процесс wdreg.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

Обновлено ноябрь 2021 г .:

Мы рекомендуем вам попробовать это новое программное обеспечение, которое исправляет компьютерные ошибки, защищает их от вредоносных программ и оптимизирует производительность вашего ПК. Этот новый инструмент исправляет широкий спектр компьютерных ошибок, защищает от таких вещей, как потеря файлов, вредоносное ПО и сбои оборудования.

скачать


(опциональное предложение для Reimage - Cайт | Лицензионное соглашение | Политика конфиденциальности | Удалить)

ПРОГРАММАТОР AVR ЧЕРЕЗ USB

При правильной сборке и исправных компонентах проблем с программатором быть не должно. Если же вы собираетесь прошивать контроллер для этого программатора прямо через USB при помощи утилиты FLIP, то скорее всего загрузчик прошитый в контроллер будет адекватно работать только на частоте 8 мгц. Для этого выкладываю две прошивки для кварца 16 мгц и для кварца 8 мгц (в архиве).

ПЕЧАТНАЯ ПЛАТА НА ПРОГРАММАТОР AVR - USB

Теперь перейдем непосредственно к прошивке контроллера и установки драйвера. Весь процесс был проделан на операционной системе windows XP, пройдет ли успешно процесс прошивки и установки драйвера на windows 7 не знаю, так как у меня установленная XP, но вы можете проверить и сообщить на форуме о результате.

После того, как вы собрали программатор и проверили плату на наличие капель олова, обрывов дорожек и верности установки компонентов делаем следующее: подключите его к разъему USB система распознает его как AT90USB162 и запросит драйвер устройства, драйвер необходимо поместить в корень диска С например в Program Files после установки драйвера для AT90USB162 его необходимо прошить, прошивок две на 8 и 16 мгц. с каким кварцем запустился программатор на ту частоту и нужно брать прошивку, у меня на частоте 8 МГц устройство распознавалось как не известное, после установки кварца на 16 МГц устройство распозналось как AT90USB162 и мне удалось установить драйвер. Прошивать нужно через программу Atmel Flip, программу прилагаю. Порядок операций:

1.) Запускаем программу FLIP, Нажимаем на кнопку с изображением микросхемы
2.) В открывшемся окне выбираем тип микроконтроллера (AT90USB162), Нажимаем ОК.
3.) Жмём кнопку с изображением USB разъёма, В открывшемся списке выбираем USB
4.) Жмём на верхнее меню File выбираем в списке Load HEX File
5.) В открывшемся окне выбираем файл прошивки его желательно так же поместить в корень диска С.
6.) Убеждаемся, что галочки в левом поле окна программы выставлены как на картинке:

ПРОГРАММАТОР AVR ЧЕРЕЗ USB - настройка

Нажимаем кнопку Run, которая находится под галочками (на скриншоте обведена синим цветом). Программа начнёт прошивать донгл (длительность прошивки 3-4 секунды). После прошивки нажимаем кнопку Start Aplication в правом поле программы. Система найдёт устройство JUNGO -AVRISP MKII прошивка окончена. Если же при первом подключение программатора система видит устройство как не опознанное вместо AT90USB162 попробуйте поменять местами D+ и D-.

ПРОГРАММАТОР МИКРОКОНТРОЛЛЕРОВ AVR - USB

Если и это не помогло, припаяйте конденсатор 0.1 мкф между землей и 24 ногой контроллера. Программатор использую в программе AVR Studio 4.19 с дрогой версией программы может работать не корректно. Плату поместил в старую мышь, на фотографии отсутствует буфер.

САМОДЕЛЬНЫЙ ПРОГРАММАТОР AVR ЧЕРЕЗ USB

Уверен, что кому-нибудь будет полезна эта информация. В архиве на форуме прошивка, драйвер, печатная плата в формате lay и принципиальная схема программатора. Схему собрал и проверил: serh7000

В данной статье речь пойдет о таком довольно популярном интерфейсе как USB, точнее как использовать этот интерфейс USB на микроконтроллерах семейства AVR. В интернете на данную тему много информации но большинство из нее представлено отдельными фрагментами и не дает полную картину о то как использовать этот интерфейс на микроконтроллерах AVR.

Такие интерфейсы как COM, MIDI, LPT широко использовались в свое время, но сейчас они морально устарели и все реже и реже встречаются в современных компьютерах в основном в компьютерах для промышленного и узкоспециализированного оборудования. Для связи собранного устройства с компьютером можно использовать всевозможные переходники конвертеры и эмуляторы, но как показывает практика они порождают множество проблем.

Для того чтобы использовать подружить USB и AVR можно пойти 3-мя путями:

Использовать аппаратную поддрежку USB интерфейса, к примеру микроконтроллера AT90USB*. Для того чтобы его использовать нужно написать для него особую прошивку. И если вашу собраное устройство не стандартного класса USB то придется для компьютера писать драйвер, который объяснит ПК с каким устройством имеем дело.

Использовать конверторы USB в какой нибудь другой интерфейст (к примеру USB-UART на микросхеме FTDI FT232RL). В качествое других интерфейсов может выступать RS232, I2C или другие. При таком подходе нам не нужно замарачиваться и знать как работает интерфейс USB, также нужда в драйвере для компьютера тоже отпадает, так как драйвера для таких конверторов уже написаны производителем.

Можно сделать все хитрее взять микроконтроллер AVR и написать для него программу которая будет эмулировать работу USB. При таком подходе возникает трудность в реализации большой скорости передачи данных. Интерфейс USB работает на большой скорости которая может быть: LowSpeed - 1,5 Mbit/s, FullSpeed - 12 Mbit/s, HighSpeed - 480 Mbit/s, а у интерфейса USB 3.0 скорость может быть еще выше. Поэтому на микроконтроллерах AVR можно сделать устройство только со скоростью LowSpeed. Для большинства самодельных устройств такой скорости вполне достаточно.

Igor Cesko первый кто сделал такой проект, он был написан на языке assembler.

После появился проект V-USB который написан на языке C с использованием ассемблерного кода Используя V-USB был сделан проект ИК приемника для компьютера.

USBtiny в свою очередь является произволным от ранней версии проекта V-USB. По возможности он уступает V-USB но зато гараздо проще теоретически и относительно легок в освоении.

Мы будем использовать проект V-USB

Проект V-USB для микроконтроллеров AVR

  • хорошая документация под код C, в результата легче разбираться;
  • у V-USB есть свободная пара идентификаторов это Vendor-ID и Product-ID;
  • работает на многих AVR микроконтроллерах, необходима частота не менее 12 МГц, 2 кБ флеш памяти и 128 байт RAM;
  • хорошая эмуляция USB 1.1 со скоростью LowSpeed устройств, только нет обработки ошибок связи и электрических характеристик.
  • проект V-USB опубликован на GNU GPLV (General Public License Version 2) также есть платная версия.

В своих USB экспериментах, прошивку для микроконтроллера писал на языке C в среде AVR-Studio 4 + WinAVR, программа для ПК была разработана при помощи среды Borland C++ Builder как самый простенький и хустрый вариант. Поэтому все следующие примеры будут такими же. От правильного выбора инструментов зависит количество головной боли на последующих шагах. По поводу того что лучше C или Assembler можно говорить много. Как по мне то нужно владеть всеми инструментами, каким-то в большей степени каким-то в меньшей и использовать тот или другой в зависимости от конкретной поставленной задачи.

Считаю важным сказать пару слов про идентификаторы VID и PID которые представляют 16-битные числа. Эти числа использует операционная система и определяет какой подгрузить драйвер. Стоимость Vendor-ID на usb.org составляет 2000$. По поводу легальности использования VID/PID можно прочитать на станчике эмбеддера BSVi. V-SUB предоставлят свободную пару VID/PID. У вас наверное возникнет вопрос "Как подключить сразу несколько устройст с однинаковыми значениями VID/PID". Подключить несколько устройств с одниковами значениями вы можете, ничего страшного в этом нет так как каждое устройство USB имеет также свой VENDOR_NAME и DEVICE_NAME идентификаторы.

Давайте попробуем собрать свое первое USB HID устройство на микроконтроллере Atmega8 и научим его общаться с компьютером при помощи интерфейса USB. Может возникнуть вопрос "почему именно HID устройство". Ответ самый простой- потому что мы не хотим замарачиваться,выносить себе мозг и писать всякие там драйвера под Windows. А когда мы подключаетм HID устройство то операционная система сама выбирает и включает необходимый драйвер. Наша программа под компьютер не будет нуждаться в установки и настройки чего либо она сразу будет использовать готовый алгоритм для работы с HID устройством.

  • Borland C++ Builder 6 -среда для разработки приложение под Windows на языке программирования C++;
  • V-USB - программа под микроконтроллеры AVR реализующая работу low-speed USB 1.1,скачатьvusb.tar.gz;
  • WinAVR - набор для разработчиков AVR, сдесь нам нужен будет GNU GCC компилятор, который автоматически интегрируется в студию;
  • AVR Studio - отличная среда для разрабоки программ под микроконтроллеры AVR.

Схема подключения AVR к USB

avr-usb2

Микроконтроллер ATmega8 подключается по классической 5-ти вольтовой схеме питания. Другие схемы можно посмотреть в архиве V-USB в каталоге cirtuits. В интерфейсе USB на линиях D+ и D- уровень сигнала составляет 3,3 В, а вся наша схема работает от напряжения в 5 В. Поэтому нужно согласовать уровни USB с нашей схемой, для этого устанавливаются стабилитроны D1 и D2, которые снижают сигнал с микроконтроллера на гасящих резисторах R3 и R4 до требуемого уровня в 3,3 В необходимого стандарту. Для определения версии протокола используется делитель напряжения на резисторах R1 и R2 который создает на линии D- уровень в 3,4 В в режиме холостого хода. Если использовать другой номинал резистора 1,5 кОм вместо указанного R1 2,2 кОм, или если не установить резистор R2 вовсе то вместо 3,4 В получится 3,7 В что приведет к открыванию стабилитрона D1 который уменьшит его до напряжения открывания 3,4 В - 3,5 В. В итоге у нас получится перекос по току на холостом ходу (стабилитрон D2 получится не нагружен совсем, а по D1 уже будет течь ток) и это будет отражаться на длинных проводах USB. Значения сопротивлений R3 и R4 опреляются по току, в данной USB AVR схеме они равны значению в 68 Ом.

Ассесмблерная часть V-USB написана с поддержкой следующего ряда частот: 12 МГц, 12,8 МГц,15 МГц,16 МГц,16.5 МГц, 18 МГц, 20 МГц. Другие частоты не поддерживаются. Данная частота вручную нигде не прописывается, она определяется в конфигурации проект AVR Studio. Proget>Configuration Options>General(вкладка)> Frequency (поле). Частота указывается в Герцах, если не правильно выставить частоту то при компиляции всплывет куча предупреждений и программа так и не будет скомпелированна. В студии сществует переменная F_CPU которую использует компилятор и она доступна всему проекту, V-USB также использует его. Для правильной работы кварца необходимо правильно выставить FUSE биты микроконтроллера.

Настройка частоты проекта

12 Мгц - частоиспользуемая частота для V-USB, она является минимальной частотой при которой возможна эмуляция всех необходимых таймингов спецификации USB;

15 МГц - близка к 12 МГц, местами выставлены NOP-ы. Использование такой частоты делает код несколько меньше, это связано с тем что большая частота позволяет чаше использовать циклы;

16 МГц - эта частота была добавлена для пользователей Arduino и других плат которые имеют кварцевый резонатор на 16 МГц. Ассемблерная реализация данной частоты была написна с некоторыми тонкостями которые применяют циклы замедления. Это происходит потому что 16 МГц не возможно разделить нацело на USB low speed bit clock;

12.8 МГц и 16,5 МГц - данные частоты предназначены для тактирования от внутреннего RC генератора, точность составляет 1%.

18 МГц - такая частота наиболее близка к стандартам USB. Использование такой частоты позволяет производить проверку входящих пакетов CRC прямо на лету. Если пакеты имеют не верную контрольную сумму то они отклоняются.ТАкже существует опция проверки данных на целостность на уровне программы.

20 МГц - для тех кто любит большие скоростя. Так как 20 МГц не делится нацело на USB speed bit clock 1,5 Мгц. То применяются циклы замедления как и при частоте 16 МГц.

Создание проекта в среде AVR Studio

Создаем проект AVR GCC, назовем его например Hid_example_firmware. И начнем писать нашу прошивку.

Создание проекта AVR USB в среде AVR Studio

  • usbdrv.c;
  • oddebug.c;
  • usbdrvasm.s.

Для того чтобы добавить файла нужно выбрать в контекстном меню "Add existing Source File(s)"

avr-usb4

Далее нам необходимо корректно настроить файл usbconfig.h и также его поместить в папку с проектом. Inline комментарии usbconfig.h была переведена на русский язык. Код приведен ниже.

Алгоритм работы

Перед тем как начать писать программу для МК, необходимо разобраться с базовыми принципами работы. HID устройство обменивается с хотом данными, данные поступают блоками фиксированного размера - или репортами. Их структура описана в дискрипторе HID, это дискриптор предоставляет хосту при подключении. Инизиализацию приема и передачу данных осуществляет хост прогамма на компьютере. В случае если хост хочет послать данные устройству то он сначала посылает команду HID_SET_REPORT, при этом V-USB вызывает функцию usbFunctionRead().

Линия данных D+ подключается к прерыванию INT0 так как это прерывание с наивысшим приоритетом. В процессе обмена данных по USB, микроконтроллер постоянно уходит на обработку INT0, на котором как раз и подключен V-USB. И только после этого управление будет передано основной программе. Если вам в вашем устройстве нужно еще и обрабатывать свои прерывания, то нужно выставить глобальный флаг прерывания используя команду sei(), для того чтобы смогло сработать INT0 с целью правильной работы V-USB.

Такая функция как usbPoll() сообщает хосту что подключенное устройство еще находится в живом состоянии и готово к работе, эту функцию нужно вызвать не реже чем 50 ms. Если не выполнять это условие то операционная система Windows напишет следующее " Подключено неизвестное устройство"

Интервал в 50ms - это USB timeout for accepting a Setup message- представляет собой специальную команду хоста в нашем примере HID_SET_REPORT и HID_GET_REPORT.

USB HID report description

Объясняя более понятными словами то это константы собранные в массив и зашитые в Flash память устройства, которые необходимы и описывают структуру пакетов данных (HID репортов). В нем содержится инфорамация о количестве пакетов которое поддерживает устройство. Каждый бит и каждый байт в пакете имеет свое назначение. После того как устройство подключается к компьютеру, дескриптор сообщает все свои параметры, в свое очередь операционная система компьютера поймет как следует общаться с таким устройством, к примеру будет знать какие биты ответсвенны за нажатие тех или иных кнопок джостика.

У нас будет "HID совместимое устройство" которое будет передавать разные данные определенного размера (это не мышь и не дждостик). В нашем примере дескриптор предаставляет собой некоторого рода набор произвольных чисел с комментариями. Полезная информация про дескрипторуUSnooBie's USB HID Report Descriptor TutorialиHID Related Specifications.

Меняя дескриптор можно представиться конкретным HID устройством, к примеру клавиатурой или чем либо еще. Интересные примеры на эту тему:Маленькая USB пакостьиThe Haunted USB Cable!. Много интресных примеров находится на сайте V-USB.

Как происходит процесс передачи данных

С целью передачи данных сделаем структуру, ее использование сделает код удобнее и гибче к переделкам чем простое использование массива. Если нужен массив то в его можно добавить и использовать внутри структуры. В нашем дескрипторе есть один вид репорта который имеет размер 8 бит - REPORT_SIZE, его количество равно размеру передаваемой структуры - REPORT_COUNT. Получается что данные передаются порциями по 8 бит. По умолчанию V-USB поддерживает передачу и прием размером по 254 байта. Если нам нужен размер по больше тогла нам нужено в файле usbconfig.h выставитьUSB_CFG_LONG_TRANSFERS в значение 1, только в этом случае увеличится размер самого драйвера.

  • usbFunctionRead(uncachar *data, unchar len);
  • usbFinctionWrite(uncachar *data, unchar len).

Для простоты структура данных заполняется внтури этих функций, но так делать не обязательно, заполнить их можно в других участках кода, в этом случае их необходимо объявить как volatile.

Такой парамет как *data представляет собой указатель на буфер V-USB где происхоид чтение и запись данных которые имеют размер len. Такой буффер данных имеет максимальный размер в 1 байт типа uchar и данное значение равняется размеру нашего репорта. А размер нашей структуры имее рамер больше чем 1 байт, именно по этой причине процесс передачи данных происходит по частям. Для этого существуют переменные currentAddress и bytesRemaining в которых хранится информация про текущую передачу.

  • pdata - это структура;
  • &pdata - адрес начала нашей структуры;
  • (uchar*)&pdata - это явное приведение типа;
  • uchar* - указатель на данные типа uchar.

Получается что мы объявили указатель с именем uchar *buffer на определенное место в памяти где находится(хранится) наша структура. Передача осуществляется кусками uchar.

Как происходит процесс передачи данных

Программа для микроконтроллера

Далее нам необходимо откомпилировать программу и записать ее в микроконтроллер. Если все настроено и сделано правильно то после подключения микроконтроллера к USB, компьютер должен определить ваше устройстов как HID.

Подключение устройства к USB

Подключение устройства к USB

Написание программы для компьютера

Программы писали в среде C++ Builder 6, интерфейс программы создавался в визуальном редакторе. В форму добавил 3 чекбокса и две кнопки.

Программа для компьютера

После создания проекта нам необходимо скопировать туда специальную библиотеку для работы с устройствами HID из среды C++ Builder, называется она hidlibrary.h сделана как класс. Эта библиотека при помощи LoadLibrary-WINAPI функции, подгружает hid.dll, далее при помощи GetProcAddress - происходит вычисление адреса функции внутри hid.dll.

Предоставляется удобный и простой интерфейс для работы с HID. Полезая стать "общение с контроллером по USB". На настройку проекта и передачу данных ушло довольно много времени, пока не наткнулся на эту библиотеку.

В коде ничего сложного нет, есть функция connect() она необходима для подключения устройства, также обработчики событий для отправки данных и для принятия данных. Используя эти кнопочки можно теперь мигать светодиодами, включать и выключать нагрузки. Данные передаются при помощи структуры dataexchange_t, для микроконтроллера описана точно такая же структура.

Для того чтобы написанная нами прогрмма работа и на других компбютерах где не установлена программа Borland C++, нам нужно перейти настройки проекта и там выключить использование динамических библиотек. Для этого нужно выполнить следующее: Project>Options. Во вкладках Linker и Packages снять галочки напротив "Use dynamic RTL" и "Build with runtime packages.

Читайте также: