Главная arrow Программирование arrow AVR arrow Макетная плата AVR-USB-MEGA16 Saturday, February 04 2012  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:
Реклама на Бегуне

Макетная плата AVR-USB-MEGA16 Версия для печати
Написал microsin   
16.09.2008

Эта отладочная плата позволяет разрабатывать устройства USB. Идеально подходит для новичков в протоколе USB.

 avr-usb-mega16-sch.jpg  AVR-USB-MEGA16-topside.JPG AVR-USB-MEGA16-botside.JPG 
 avr-usb-mega16-IMG_8082.JPG  avr-usb-mega16-IMG_8085.JPG avr-usb-mega16-IMG_8080.JPG avr-usb-mega16-IMG_8098.JPG

Макетная плата AVR-USB-MEGA16 спроектирована для быстрой разработки низкоскоростных (low-speed) устройств USB на микроконтроллере ATmega16 (или ATmega32), при этом протокол USB реализован программно, без использования дополнительных специализированных чипов. Это решение хорошо подходит для проектирования таких периферийных устройств для компьютера, которые не требуют высоких скоростей обмена по шине USB (подключение датчиков, устройств ввода, специализированных программаторов для чипов). Программная реализация протокола USB значительно упрощает принципиальную схему и снижает стоимость устройства в целом. Новичок в протоколе USB может легко спроектировать свое устройство USB и программу компьютера (ПО хоста) для него, поскольку имеются простые примеры работающих устройств (USB HID - управление портами, передача данных, есть даже пример мыши) с подробными комментариями на русском языке.

С июля 2010 года макетная плата AVR-USB-MEGA16 поставляется в новой модификации - с микроконтроллером ATmega32 и прошитым загрузчиком кода по USB - usbasploader. Это позволяет начинающим программистам загружать в макетку программу без использования программатора. Все, что Вам нужно - только макетная плата и подключение по USB к компьютеру. Загрузчик usbasploader с исходниками можно скачать по ссылке [10], а простая инструкция по использованию доступна по ссылке [12].

Для варианта макетки с микроконтроллером ATmega16 лучше подойдет другой загрузчик - bootloadHID. Загрузчик bootloadHID с исходниками можно скачать по ссылке [11], там же есть ссылка на статью с описанием работы загрузчика bootloadHID.

Значения фьюзов по умолчанию, которые прошиты в платы - LOW FUSE BYTE: 0xCF, HIGH FUSE BYTE: 0x98, LOCKOPT BYTE: 0xEF.

[Аппаратура]

На плате имеются:
- макетное поле 8x11 с шагом между отверстиями 2.54 мм, разъем MINI USB, индикационный светодиод (используется в демонстрационных программах, поставляемых с платой), микроконтроллер ATmega16 в корпусе TQFP44, тактовая частота 12 МГц (или 16 МГц, в зависимости от того, какой кварц используется)
- размеры платы с макетным полем 64.8 x 30.7 мм, без макетного поля 45.4 x 30.7 мм (для уменьшения размеров макетное поле можно отрезать). Толщина платы вместе с монтажом 11.5 мм (определяется самыми высокими элементами на плате - ISP и JTAG коннекторами, они выступают над поверхностью TOP платы на 9 мм). USB-коннектор выступает за край платы на 2 мм.
- программирование микроконтроллера возможно прямо на плате через стандартный (цоколевка Atmel) 6-контактный разъем для serial-программатора ISP
- для отладки программы микроконтроллера имеется 10-контактный JTAG-коннектор (цоколевка Atmel, может использоваться эмулятор JTAGICE mkII или аналогичные эмуляторы), также установленный на плате
- из 32 линий ввода/вывода ATmega16 занято 10 (2 - под сигналы USB, 1 для светодиода, 3 для программатора ISP, 4 для подключения JTAG-эмулятора), свободно для нужд пользователя 22 (порты микроконтроллера выведены на двухрядную линейку контактов)
- из аппаратных ресурсов микроконтроллера для реализации протокола USB используется только прерывание INT0
- из ресурсов памяти программ для простых примеров используется 1464..2090 байт (зависит от типа устройства, опций оптимизации и версии компилятора), что составляет не более 13% памяти программ ATmega16. Утилизация времени процессора зависит от интенсивности потока данных через интерфейс USB (если он используется).
- питание платы осуществляется от 5 вольт шины USB

[Программное обеспечение]

Для ATmega16 (или ATmega32) используется пакет V-USB (старое название AVR-USB), разработанный компанией OBJECTIVE DEVELOPMENT Software GmbH. Пакет распространяется по лицензии GPL, см. [14].

Для компьютера (назовем его для краткости хост, как предлагает OBJECTIVE DEVELOPMENT) используется библиотека libusb-win32 для операционной системы Windows (2000, 2003, XP) и libusb для операционных систем семейства *nix (Mac OS, Linux и т. д.). Библиотека также поставляется по лицензии GPL, см. [15].

Примеры программ для ATmega16 - USB-устройство пользовательского класса, класса HID, HID-мышь (для HID-устройств USB не нужны драйвера в операционных системах Windows), см. папку examples пакета V-USB. Программное обеспечение предназначено для компиляции с помощью gcc, есть также порт на систему IAR Embedded Workbench for Atmel AVR (заголовочный файл)

Примеры программ для компьютера (ПО хоста) - управляющие программы устройств USB, см. папку examples пакета V-USB. Программное обеспечение предназначено для компиляции с помощью gcc (и под Windows, и под *nix).

Плата поставляется с тестовой прошивкой, реализующей работу устройства HID (драйвер для такого USB-устройства в Windows 2000 и XP не требуется), см. описание работы этой прошивки в [1]. Возможна прошивка платы другим firmware, например Сергея Кухтецкого, см. [3] - по желанию пользователя.

[Лицензии]

Все программное обеспечение, используемое для разработки, доступно под лицензией GPL, что освобождает Вас от выплат (но не освобождает от публикации исходных кодов Вашего программного обеспечения). Если у Вас нет возможности для публикации проекта (что требует лицензия GPL), обратитесь напрямую в OBJECTIVE DEVELOPMENT, либо напишите мне (я могу опубликовать Ваш проект на моем сайте). На пакет V-USB имеется также и коммерческая лицензия, подробности см. на сайте авторов библиотеки.

Для устройств USB необходимы также идентификаторы производителя (vendor ID, или VID) и продукции (product ID, или PID). Компания OBJECTIVE DEVELOPMENT предлагает такие пары как с бесплатными, так и с коммерческими лицензиями. Предлагаемые значения VID и PID и указания по их выбору имеются в документации на библиотеку, см. [14].

Пошаговые инструкции для начала работы с библиотекой V-USB читайте в [7]. Это позволит Вам быстро установить все необходимое для работы с библиотекой, и начать разрабатывать собственные устройства USB.

[Как заказать]

Если хотите приобрести макетную плату AVR-USB-MEGA16, отправьте мне email (адрес см. на страничке Контакты), или оставьте комментарий ниже, указав контакты для связи с Вами (email, ICQ или телефон). Если Вы находитесь не в Москве, возможна пересылка наложенным платежомВнимание: в таблице указана цена без учета стоимости пересылки (180 руб. - это мои расходы на отправку бандероли, плюс еще около 60 рублей Вы заплатите на почте за почтовый перевод. Таким образом, например, готовая плата Вам обойдется 500+180+60=740 рублей). Возможна предоплата, тогда 60 рублей съэкономите.

Стоимость готовой макетной платы AVR-USB-MEGA16        500 руб.
Стоимость пустой печатной платы 100 руб.
Библиотека V-USB, примеры, документация на русском языке  0 руб.

[Ссылки]

1. Как работать с платой AVR-USB-MEGA16 из Visual Studio (версия 2003). На примере описано управление светодиодом на макетке из кода на C++.
2. Как работать с платой AVR-USB-MEGA16 из C# (Visual Studio Express Edition 2008).
3. Класс C# (для Visual Studio Express Edition 2008) и соответствующая прошивка, позволяющие быстро сделать USB HID устройство и написать для него приложение для компьютера. Вы управляете микроконтроллером прямо из кода на C# (дергаете его ножками, читаете регистры и т. п.).
4. Проекты, которые основаны на V-USB - все эти проекты можно реализовать на макетке AVR-USB-MEGA16.
5. Пример управления портами микроконтроллера через USB.
6. Еще пример управления портами - USB-LED-Fader. Пример, правда, для ATmega8, но он легко переделывается и для ATmega16.
7. Разработка устройства USB - как начать работу с библиотеками AVR USB (V-USB) и libusb.
8. Макетная плата AVR-USB-TINY45.
9. Макетная плата AVR-USB162.
10. AVR-USB-MEGA16: USB bootloader USBASPloader для микроконтроллера ATmega32. Мой вариант usbasploader, заточенный под макетную плату AVR-USB-MEGA16 с микроконтроллером ATmega32 (проект для AVRStudio с исходниками и скомпилированными вариантами для кварцев 12 МГц, 16 МГц).
11Исходники и скомпилированные прошивки проекта BootloadHID, модифицированные для использования с макетной платой AVR-USB-MEGA16. В код BootloadHID я добавил управление красным светодиодом макетки D1 - для индикации процесса работы загрузчика (активизация и запись памяти). Статья с описанием работы с загрузчиком bootloadHID.
12. AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32.
13. AVR-USB-MEGA16: управление устройством USB из GCC, Visual Studio CPP, VB6, Python, Delphi.
14. Библиотека V-USB в английском и русском варианте.
15. Библиотека libusb - версия для *nix и для Windows.

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

Комментарии  

  1. #25 HTL
    2011-12-2415:22:34 Хотелось бы сменить прошивку на "firmware Сергея Кухтецкого". Как это можно реализовать? Можно ли его запрограммирова ть через собственный USB порт? Если требуется покупать программатор, то какой посоветуйте?

    microsin: прошивка Сергея Кухтецкого ничем не отличается от любой другой прошивки, и поэтому легко перезаливается через USB с помощью бутлоадера, никакой программатор не нужен. Бутлоадер USBasp прошит в память чипа ATamega32A макетной платы AVR-USB-MEGA16.
  2. #24 dima
    2011-07-0414:44:07 Скажите а почему вы в прошивке которая в плате по умолчанию стоит указали vid=0×16c0 pid=0×5df. Теперь я пытаюсь закинуть новую прошивку с помощью avrdude а он пишет что could not find USB device "USBasp" with vid=0×16c0 pid=0×5dc. Что с этим делать пока ума не приложу.

    microsin: эти VID и PID не я придумал, а компания Obdev.at, которая разработала библиотеку V-USB и соответственно примеры, один из которых (hid-custom-rq) и прошит по умолчанию в память чипа ATmega32 макетки AVR-USB-MEGA16. Если Вас что-то не устраивает, напишите ЛЮБУЮ свою программу (или возьмите готовую), с ЛЮБЫМИ понравившимися Вам VID и PID, и прошейте её в память чипа либо с помощью бутлоадера USBasp, либо с помощью generic-программатора ISP, либо с помощью тривиальнейшего JTAG-отладчика Atmel Dragon или JTAGICE MkII.
  3. #23 alex
    2011-03-1911:29:09
    Цитирую alex:
    А возможно ли работать с этой макеткой без V-USB и libUSB?

    microsin: конечно, можно работать с макеткой без V-USB, но тогда Вы не сможете разрабатывать на макетке устройства USB. Бутлоадер будет также нормально работать, и Вы сможете загружать в память чипа макетки любые программы.

    Есть также другие библиотеки для программной реализации интерфейса USB на AVR, но V-USB все-таки самая удобная для использования.

    Меня интересует реализация возможностей обертки Сергея Кутехцого - съем данных с датчиком и управление щаговым двигателем. Но не хотелось бы использовать V-USB или какие то сторонние библиотеки. Возможно ли это реализовать н этой макетки или стоит посмотреть в сторону макеток с аппаратным USB?

    microsin: Вы можете без библиотек на стороне ПО хоста использовать только класс USB CDC (виртуальный COM-порт), и ничего более (причем не имеет значения, "аппаратно" или "софтварно" устроен интерфейс у Вашего USB-устройства). Если же Вам нужен USB HID или пользовательски й класс/драйвер, то использовать библиотеки все равно придется - либо libusb, либо HID.dll (Microsoft), либо какие-то еще, другого выхода нет (причем опять-таки не имеет значения, "аппаратно" или "софтварно" устроен интерфейс у Вашего USB-устройства).

    Что же касается класса-обертки C# Сергея Кухтецкого, то:
    1. Этот класс использует внутри себя обращения к функциям libusb, но скрывает это внутри класса, т. е. непосредственно к функциям libusb программисту обращаться не нужно, нужно всего лишь обращаться напрямую к регистрам микроконтроллер а ATmega16 через методы класса. Таким образом, просто необходимо, чтобы библиотека libusb была установлена на компьютере, где работает программа, и на USB-устройство установлен драйвер фильтра, и все.
    2. Для низкоскоростног о съема данных с датчиков (например, с АЦП) класс-обертка подойдет хорошо. Однако для управления шаговым двигателем - это медленное решение, и высокой точности и скорости в управлении шаговым двигателем не достичь.
  4. #22 alex
    2011-03-1820:25:04 А возможно ли работать с этой макеткой без V-USB и libUSB?

    microsin: конечно, можно работать с макеткой без V-USB, но тогда Вы не сможете разрабатывать на макетке устройства USB. Бутлоадер будет также нормально работать, и Вы сможете загружать в память чипа макетки любые программы.

    Есть также другие библиотеки для программной реализации интерфейса USB на AVR, но V-USB все-таки самая удобная для использования.
  5. #21 дмитрий
    2011-03-1612:00:26 Скажите, правильно я понимаю, что для загрузки программ достаточно данной платы и не нужен программатор? Можно ли использовать ее как программатор?

    microsin: Вы все правильно поняли. Как программировать плату через бутлоадер, и как из неё сделать программатор - читайте соответствующие статьи (ключевые слова для поиска USBasp, bootloader, AVR-Doper, STK200, AVR910, STK500).
  6. #20 сергей111
    2011-02-2217:16:17 А где именно код на ассемблере для загрузки ATmega16? Я что то не разобрался. Подскажите пожалуйста, очень важно.

    microsin: подскажу, но только в том случае, если напишете мне на почту (см. Контакты). А то я не разобрался, про какой именно ассемблерный код Вы говорите, и что Вы подразумеваете под "загрузкой".
  7. #19 Александр
    2011-02-1515:22:41 Приветствую! А возможно на основе макетной платы AVR-USB-MEGA16 разработать подобие иммитатора, передаваемое данные с ПК на плату, а с нее благодаря сопряженному интерефейсу за 1 интервал времени выдавать такт (меандр) и соответствующую битовое значение, если быть точнее то последовательну ю логику работы LPT и COM порта?

    microsin: все зависит от подробностей техзадания - с какой скоростью должны передаваться данные, как должна работать программа. Макетка AVR-USB-MEGA16 предназначена для изготовления и отладки низкоскоростных устройств USB (Low Speed USB 1.0).
  8. #18 Илья
    2011-01-1602:38:07 Здравсьвуйnе! Уважаемый, а вы плату где разводили и трассировали?

    Вот не могу выбрать нормальный автотрассировщи к, подскажите пожалуйста.

    microsin: советовать ничего не буду, потому что это тема для холиваров. Вполне себе рабочий автотрассировщи к в EAGLE, и неплохая среда для разработки плат. Пользуйтесь, Вам должно понравиться. ИМХО, конечно.
  9. #17 Андрей
    2010-10-1411:12:28 Не подскажете, где найти информацию как подключить готовое USB устройство и управлять им не компьютером, а своим устройством на основе микроконтроллер ов фирмы Atmel. Хочется управлять флешкой, записывать и читать данные и usb модемом типа E1550 отправлять и получать SMS, совершать и принимать звонки.

    microsin: Вам нужен USB host и программное обеспечение для него. Копайте в сторону ARM9 и сотоварищи. Вообще-то задачи такого рода лучше переложить на операционную систему типа xNIX или WinCE.
  10. #16 Михаил
    2010-09-0910:06:24 Добрый день! Подскажите, пожалуйста, по схеме AVR-USB-MEGA16. Зачем стабилизировать выходные сигнады с USB порта 3,6 вольтами? МК же запитывается напряжением 5В. Спасибо!

    microsin: стандарт USB требует, чтобы напряжение на выводах D+ D- не превышало 3.3 вольта. Для этого стабилитроны и стоят.

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

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

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

< Пред.   След. >
Top of Page
 
microsin © 2012