Usb avr: USB для AVR. Введение / Хабр

Содержание

USB для AVR. Введение / Хабр


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

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

Всё хватит пустой болтовни, приступим к делу. Как использовать USB в собственных устройствах?

  • Можно взять микроконтроллер, который имеет аппаратную поддержку USB интерфейса (например AT90USB* ). Далее нужно знать как с ним работать и написать для него специальную прошивку. Ну и на последок также необходимо написать драйвер для компьютера, если ваше устройство не стандартного класса USB.
  • Использовать универсальный конвертор USB в «другой» интерфейс. В качестве «другого» может быть RS232, I2C,… При таком раскладе нам не нужно знать как работает USB, не нужно писать специальную прошивку и драйвер для компьютера. За нас всю работу делает конвертор, и как правило драйвер уже написан производителем конвертора.
  • Взять обычный микроконтроллер без аппаратной поддержки USB и программно эмулировать интерфейс USB. Тут возникает проблема в производительности нашего микроконтроллера. Скорость USB очень большая: LowSpeed — 1.5Mbit/s, FullSpeed — 12Mbit/s, HighSpeed — 480Mbit/s. Я вообще молчу за USB 3.0. Поэтому дома на коленке получится только LowSpeed USB, и то з некоторыми трудностями. Правда в большинстве случаев для самодельных устройств этого более чем достаточно.

Мы настоящие джедаи, поэтому пойдем по пути эмуляции. На данный момент уже существует три готовых проекта для программной эмуляции USB на микроконтроллерах AVR:

Проект от Igor Češko был первым, написан полностью на ассемблере и он послужил своего рода вдохновением для V-USB. На его основе сделан заслуживающий внимания универсальный ИК приемник для компьютера, а также множество других проектов. V-USB в свою очередь написан на C, правда с использованием ассемблерного кода в местах критических к производительности и точности эмуляции. USBtiny является производным от более ранней версии V-USB, имеет меньше возможностей из-за чего теоретически он проще для понимания.

Я остановился на реализации от V-USB, думаю вот основные преимущества:
  • V-USB опубликован на принципах GNU General Public License Version 2, так же имеется коммерческая лицензия
  • полная эмуляция USB 1.1 low-speed устройств за исключением обработки ошибок связи и электрических характеристик
  • запускается практически на всех AVR-ках, нужно минимум 2 килобайта флеша, 128 байт RAM и частота 12, 15, 16, 16.5 или 20 МГц.
  • V-USB предоставляет свободную пару идентификаторов (Vendor-ID и Product-ID)
  • хорошо задокументированный код на C, легче разбираться


Я в своих экспериментах с USB прошивку для МК писал языком C на AVR-Studio 4 + WinAVR, программу для ПК разрабатывал при помощи Borland C++ Builder 6.0 как самый быстрый и простой вариант. Соответственно такими будут все будущие примеры. Вообще выбор средств разработки очень ответственный шаг, но холивар по поводу что лучше C или Assembler устраивать не нужно. Я скажу просто: это лишь инструменты в наших руках. Нужно владеть всеми а использовать тот что удобней и правильней в поставленных перед собой целях. Естественно в умелых руках любой инструмент эффективный.
Также нужно отдельно сказать про идентификаторы VID и PID. Это 16-битные числа, при помощи которых операционная система определяет устройства и подгружает нужный драйвер. Для того, чтобы получить Vendor-ID нужно заплатить usb.org 2000$. Интересные мысли по поводу легальности использования VID/PID можно прочитать на страничке эмбеддера BSVi. Тот факт, что V-USB предоставляет свободную пару VID/PID (легально купленную в usb.org) очень греет душу. Но что делать когда нужно одновременно подключить несколько USB устройств с одинаковыми VID/PID? Ничего страшного, помимо этих VID/PID каждое USB устройство имеет VENDOR_NAME и DEVICE_NAME идентификаторы, потом в примерах я покажу как этим воспользоваться.
Несколько ссылок по сабжу:
  • www.usb.org/developers/docs — официальная документация по USB. Не легкая для чтения, но наиболее полная.
  • www.beyondlogic.org/usbnutshell/usb1.htm — хороший обзор важных частей USB спецификации. Легче раскуривать чем официалку…
  • www.lvr.com/usb.htm — много хороших ссылок связанных с USB

В заключение напишу, что все условия для создания USB 1.1 устройств доступны каждому:
  • дешевые микроконтроллеры AVR
  • программная эмуляция USB, выберем V-USB
  • свободная пара Vendor-ID и Product-ID (вместе с V-USB)
  • множество примеров как для микроконтроллера так и для компьютера

Остается только одно — желание разобраться! А потом творить чудеса на копеечных микроконтроллерах всем мажорам на зависть.

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

Миниатюрный USB программатор для AVR микроконтроллеров / Хабр
Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.

Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.

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

Прошивка управляющего микроконтроллера

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:

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

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:

Выбираем папку где лежат дрова и жмем Далее

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

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

Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по этой ссылке

Ну вроде все, если возникнут вопросы, постараюсь ответить.

USB программатор AVR — USBAsp

Вид сверху

!!! ЭТЕНШН !!!
Появилась схема USB программатора которая НЕ требует предварительной прошивки управляющего микроконтроллера.

Так как у многих уже давным давно нет ни COM ни LPT порта, то я решил выложить схему USB программатора для AVR. Это будет широко известный в узких кругах USBASP. Схема простая как три копейки, но COM или LPT порт все же потребуется — для того, чтобы прошить управляющий контроллер. Так что можешь сходить к другану. Программатор строится на контроллере ATMega48 или ATMega8. Нужна именно 8 или 48, без всяких индексов L. Так как у нас требуется частота выше чем 8 Мгц.

Сборка

Так как я стараюсь не выкладывать непроверенные решения, то я повторил этот программатор. Чисто для себя, поприколу. Подобрал наиболее компактную схему и перевел ее в формат Sprint Layout. Изготовил печатную плату, стравил. Засверловал и напаял компоненты. Микросхему рекомендую ставить на панельку.

Прошивка программатора
Далее замыкаем перемычку J1 и J2 и подключаем к разьему стандартный последовательный программатор, да хоть тот же программатор Громова. Программатор должен иметь свое питание, иначе нужно подать его на схему.

И заливаем в проц прошивку. Для ATMega8 одна прошивка, для ATmega48 другая. Дальше нужно выставить биты конфигурации.

Для ATMega48:
Старший байт FUSE выставляется как 0хDD, младший 0xFF. На картинке я привел скриншот из UniProf с правильно расставлеными битами конфигурации для контроллера ATMega48.

Если применяется контроллер ATmega8, то байты FUSE таковы:
Старший 0xC9, младший 0xEF

Настройка в работу
После прошивки нужно снять перемычку J1 и все, можно втыкать в комп. Сразу же должно обнаружитсья USB устройство. Скармливаем ему дрова и у нас в системе появляется новый девайс — USBAsp. Если система ругается на драйвера, говорит, что это не драйвер, а фуфел какой то. Значит контроллер либо криво прошился, либо ты забыл снять перемычку J1.

Перемычка J3 используется для прошивки контроллеров у которых частота не превышает 1.5 МГц. Я ее поставил, без нее у меня мега 8 не хотела определяться. Потом подправил меге Fuse биты, чтобы она заработала на 8 Мгц, перемычку не снял, но работает. Слышал, что подправили и теперь перемычку можно не дергать туда сюда.

Красный светодиод показывает, что программатор подключен к USB и запитан. Зеленый, что идет обращение к прошиваемому контроллеру.

Прошивающий софт
Все, теперь можно подключать к программатору провод и тыкать им в прошиваемые контроллеры.
Единственная софтина которая поддерживает этот программатор это AVR-чувак, она же дудка, она же AVRDUDE. Мощнейший консольный программатор. Не стоит пугаться его консольности, во первых батники никто не отменял, а во вторых не него существует несколько оболочек.

ВНИМАНИЕ! В той GUI оболочке что находится в архиве ИНВЕРСНЫЕ FUSE!!! То есть если в даташите написано, что дефолтные SCKEL3..0 = 0100 то тут будет показан 1011!!! Короче, как в PoniProg. Чего эти утырки так вертят эти несчастные FUSE я понять не могу, хоть бы предупреждали, а то бы залочил кристалл нахрен.

Вот, пример командной строки для прошивки через USBAsp — Записываем main.hex во флеш ATmega8:

   avrdude -c usbasp -p atmega8 -U flash:w:main.hex
В архив usbasp.rar я сложил все файлы необходимые для этого программатора:
  • Прошивка для ATMega 48 и ATMega 8
  • Драйвер для винды
  • Схема
  • Печатная плата в формате Sprint Layout
  • Фотки
  • AVRDUDE
  • GUI к AVRDUDE

UPD:
Для тех у кого вдруг пишет, что архив битый, я выложил то же самое в ZIP —USBASP.ZIP

Проверено — работает! Пользуйтесь 🙂

Страничка автора USBASP — там обновления прошивок, драйверов и варианты разводок плат.

Страничка разработчика GUI оболочки для AVRDude

!!!WARNING!!!
Тут появилась подтвержденная инфа, что новая прошивка (с оригинального сайта автора) может не работать на некоторых компах. У меня в архивах лежит старая прошивка, от 2007 или даже 2006 года. Она может не работать на самых новых компах. Короче, не работает — попробуй другую версию прошивки. С сайта автора или из моего архива.

З.Ы.
Также существует программатор AVR910, работающий также через USB и имеющий практически идентичную конструкцию. Чем он лучше/хуже я не знаю. Но можете попробовать сделать его. А я в скором времени выложу описание изготовления и использования JTAG адаптера для внутрисхемной отладки AVR.

USB для AVR. Часть 1. Вводная / Связь железа с компьютером. / Сообщество EasyElectronics.ru

Здравствуйте, решился я испытать свои творческие таланты 🙂 Речь пойдет об популярном интерфейсе USB, а именно как заюзать этот самый USB на простых микроконтроллерах AVR. Планирую написать несколько топиков с примерами кода и разъяснениями как со стороны микроконтроллера, так и со стороны компьютера. Конечно на просторах интернета полно всяческих примеров на данную тематику, но как писал DI HALT в правилах конкурса: «в лучшем случае это исходник в котором сам черт ногу сломит, да краткое, на страничку, его описание.»

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

Всё хватит пустой болтовни, приступим к делу. Как использовать USB в собственных устройствах?

  1. Можно взять микроконтроллер, который имеет аппаратную поддержку USB интерфейса (например AT90USB* ). Далее нужно знать как с ним работать и написать для него специальную прошивку. Ну и на последок также необходимо написать драйвер для компьютера, если ваше устройство не стандартного класса USB.
  2. Использовать универсальный конвертор USB в «другой» интерфейс (например Преобразователь USB-UART на FTDI FT232RL). В качестве «другого» может быть RS232, I2C,… При таком раскладе нам не нужно знать как работает USB, не нужно писать специальную прошивку и драйвер для компьютера. За нас всю работу делает конвертор, и как правило драйвер уже написан производителем конвертора.
  3. Взять обычный микроконтроллер без аппаратной поддержки USB и программно эмулировать интерфейс USB. Тут возникает проблема в производительности нашего микроконтроллера. Скорость USB очень большая: LowSpeed — 1.5Mbit/s, FullSpeed — 12Mbit/s, HighSpeed — 480Mbit/s. Я вообще молчу за USB 3.0 🙂 Поэтому дома на коленке получится только LowSpeed USB, и то з некоторыми трудностями. Правда в большинстве случаев для самодельных устройств этого более чем достаточно.
Мы настоящие джедаи, поэтому пойдем по пути эмуляции 🙂 На данный момент уже существует три готовых проекта для программной эмуляции USB на микроконтроллерах AVR:
Проект от Igor Češko был первым, написан полностью на ассемблере и он послужил своего рода вдохновением для V-USB. На его основе сделан заслуживающий внимания универсальный ИК приемник для компьютера, а также множество других проектов. V-USB в свою очередь написан на C, правда с использованием ассемблерного кода в местах критических к производительности и точности эмуляции. USBtiny является производным от более ранней версии V-USB, имеет меньше возможностей из-за чего теоретически он проще для понимания.

Я остановился на реализации от V-USB, думаю вот основные преимущества:
  • V-USB опубликован на засадах GNU General Public License Version 2, так же имеется коммерческая лицензия
  • полная эмуляция USB 1.1 low-speed устройств за исключением обработки ошибок связи и электрических характеристик
  • запускается практически на всех AVR-ках, нужно минимум 2 килобайта флеша, 128 байт RAM и частота не меньше 12 MHz
  • V-USB предоставляет свободную пару идентификаторов (Vendor-ID и Product-ID)
  • хорошо задокументированный код на C, легче разбираться

Я у своих экспериментах с USB прошивку для МК писал языком C на AVR-Studio 4 + WinAVR, программу для ПК разрабатывал при помощи Borland C++ Builder 6.0 как самый быстрый и простой вариант. Соответственно такими будут все будущие примеры (кстати ATMEL уже выпустила 5-ю версию студии). Вообще выбор средств разработки очень ответственный шаг, но холивар по поводу что лучше C или Assembler устраивать не нужно. Я скажу просто: это лишь инструменты в наших руках. Нужно владеть всеми а использовать тот что удобней и правильней в поставленных перед собой целях. Естественно в умелых руках любой инструмент эффективный 🙂

Также нужно отдельно сказать про идентификаторы VID и PID. Это 16-битные числа, при помощи которых операционная система определяет устройства и подгружает нужный драйвер. Для того, чтобы получить Vendor-ID нужно заплатить usb.org 2000$. Интересные мысли по поводу легальности использования VID/PID можно прочитать на страничке эмбеддера BSVi. Тот факт, что V-USB предоставляет свободную пару VID/PID (легально купленную в usb.org) очень греет душу. Но что делать когда нужно одновременно подключить несколько USB устройств с одинаковыми VID/PID? Ничего страшного, помимо этих VID/PID каждое USB устройство имеет VENDOR_NAME и DEVICE_NAME идентификаторы, потом в примерах я покажу как этим воспользоваться.

Несколько ссылок по сабжу:
www.usb.org/developers/docs — официальная документация по USB. Не легкая для чтения, но наиболее полная.
www.beyondlogic.org/usbnutshell/usb1.htm — хороший обзор важных частей USB спецификации. Легче раскуривать чем официалку…
www.lvr.com/usb.htm — много хороших ссылок связанных с USB

В заключение напишу, что все условия для создания USB 1.1 устройств доступны каждому:

  • дешевые микроконтроллеры AVR
  • программная эмуляция USB, выберем V-USB
  • свободная пара Vendor-ID и Product-ID (вместе с V-USB)
  • множество примеров как для микроконтроллера так и для компьютера
Остается только одно — желание разобраться! А потом творить чудеса на копеечных микроконтроллерах всем мажорам на зависть 🙂
Продолжение: USB для AVR. Часть 2. HID Class на V-USB
описание USBASP драйвера, инструкция по настройке своими руками в AvrDude Prog, Atmel Studio и Khazama AVR Programmer, обновление проши
В моём случае это абсолютный рекордсмен по скорости доставки — около 5 месяцев беспечного блуждания непонятно где. Несмотря на чудовищную задержку по времени, пакет я всё-таки получил, чему несказанно рад, не взирая на недочёты, о коих поведаю ниже. Поскольку у меня весьма плохая память, то нужно было объединить найденную полезную информацию где-то в одном месте в виде памятки, собирать её по крупицам в разных закоулках сети оказалось делом нетривиальным, поэтому оформлю всё это отдельным постом.
USB ISP — самый дешёвый программатор контроллеров AVR, что можно найти в продаже, брался для расширения кругозора и более углубленного изучения AVR.
Обзор в себя включает: описание программатора, как его подключить к чипу, настройку его работы в программах AvrDude Prog, Khazama, Atmel Studio 7, и не только это.

Конечно вместо него можно использовать Arduino UNO с прошитым в него скетчем ArduinoISP, но это не удобно, возня с проводами, особенно если UNO всего одна, отбивает энтузиазм. Проще было заиметь отдельно такой программатор, точнее два. По двум причинам:
1) Ещё перед покупкой уже из отзывов было понятно, что качество пайки этих устройств страдает, а некоторым ещё и с расколотыми стабилитронами они приходили. Решено было подстраховаться, заказав два.
2) Один программатор к тому же можно шить другим, переставив перемычку на ведомом устройстве.

Технические характеристики

Поддерживаемые ОС: Windows, MacOS, Linux
Процессор: Atmega8A
Интерфейс подключения к ПК: USB
Интерфейс программирования: ISP (внутрисхемное)
Напряжение программирования: 5В или 3.3В (в зависимости от положения перемычки JP2)
Частота программирования: 375кГц (по умолчанию) и 8кГц (при замкнутой перемычке JP3)
Поддерживаемые контроллеры: все AVR с интерфейсом SPI
Описание: ссылка

Список поддерживаемых микроконтроллеров

ATmega серия

ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Tiny серия

ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 Attiny85 ATtiny2313

Серия Classic

AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN серия

AT90CAN128

PWM серия

AT90PWM2 AT90PWM3

Внешний вид

Комплект поставки минимальный — программатор + шлейф без резинки. В моём случае в удвоенном количестве.

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







Некоторые отверстия не целиком заполнены припоем

SMD-элементы тоже криво припаяны

Гребёнку чуть позже выровнял, уж больно неприятно на такую раскосую смотреть, элементы пропаял, а плату затем отмыл

Размеры платы несколько больше USB-TTL-конвертера на CP2102

Длина шлейфа около 30см, бытует мнение, что чем короче шлейф, тем лучше. Некоторые его специально укорачивают. Если заказать оригинальный USBASP — там комплектный шлейф уже 50см.

Органы управления на плате

На плате имеются три перемычки, задающие разные режимы работы программатора:
JP1 — замыкается в случае обновления прошивки самого программатора
JP2 — тройная перемычка, здесь выбирается, какое напряжение будет подаваться на прошиваемый микроконтроллер, либо 5В (левое положение) и 3.3В (правое положение)
JP3 — если её замкнуть, то программирование контроллера будет происходить с пониженной частотой, однако китайцы не стали сюда впаивать гребёнку, т.к. на данной прошивке она не требуется
Программатор, как можно заметить, построен на базе Atmega8 с кварцем на 12МГц. Самый правый верхний элемент, подписанный F1, с перевёрнутой цифрой 4 — самовосстанавливающийся предохранитель, защищает USB-порт ПК/ноутбука, если на прошиваемой плате вдруг произошло короткое замыкание. Под перемычкой JP2 находится LDO-стабилизатор 662К, понижающий напряжение с 5В до 3.3В, если перемычка установлена в правое положение.

Установка драйверов

Чтобы начать пользоваться программатором, необходимо сперва поставить на него драйвера. Вставляю любой программатор в USB-порт ПК, звучит сигнал о новом оборудовании, на самом девайсе горит светодиод, но автоматического поиска драйверов не происходит.
примечание. перед установкой драйвера необходимо отключить проверку цифровой подписи в Windows
1) Скачать драйвера, распаковать в удобное место.
2) Зайти в «Диспетчер устройств», например навести курсор на главную кнопку (Win10), нажать ПКМ и выбрать пункт «Диспетчер устройств».

3) В ветке «Другие устройства» можно увидеть неопознанное устройство USBASP с оранжевым треугольничком — > навести на него курсор, нажать ПКМ -> «Обновить драйверы...»

4) Указать путь до раннее распакованной папки с драйверами — «libusb_1.2.4.0», нажать «ОК»

5) «Всё равно установить этот драйвер»

6) Готово, теперь оранжевый треугольничек пропал, драйвера поставлены

Прошивка собрата

Мне уже было известно до этого, что китайцы продают эти программаторы с не самой свежей прошивкой. Решил сперва обновить прошивку на одном из них, а затем ради интереса сравнить оба программатора в работе. Для этого соединяю шлейфом оба устройства, на ведущем (который вставляю в USB-порт) никакие перемычки не трогаются, а на ведомом программаторе (на котором будем обновлять прошивку) я переставил перемычку с JP2 на JP1:

Захожу в программу Khazama AVR Programmer, выбираю из выпадающего списка ATmega8 и сперва считаю Flash-память через пункт меню «Command» -> «Read FLASH to Buffer», чтобы cохранить китайскую заводскую прошивку у себя. На всякий случай.

При этом периодически будет выпадать такая ошибка, закрыв окно, программа продолжит работу.

Идёт считывание, которое завершается всплывающим окном об успешном считывании FLASH-памяти в буфер

Теперь нужно сохранить содержимое буфера: «File» -> «Save FLASH Buffer As...». Выбрать удобное место, куда старая прошивка сохранится, дать имя (я например её назвал firmware_1) и дописать расширение *.hex — если его не писать, то она сохранится как просто файл без расширения.

Скачиваю прошивку для программатора с этой странички, архив usbasp.2011-05-28.tar.gz (в этом же архиве есть драйвера для Windows, распаковываю содержимое в удобное место.
Тем временем в Khazama загружу скачанную прошивку в буфер. «File» -> «Load FLASH File to Buffer». Выбираю прошивку, где в названии написано atmega8, поскольку прошиваемый программатор на этом чипе.

Как видно, здесь три прошивки — для Atmega8, 48 и 88. В нашем случае Atmega 8 — её и выбираю.

Прошиваю. «Command» -> «Write FLASH File to Buffer». Снова возникает ошибка, но после идёт процесс, завершающийся успехом.



Поскольку в обычном понимании «запрограммировать» означает выставить 1, то при работе со фьюзами всё ровно наоборот, от чего возникает путаница и в этом случае можно по неосторожности заблокировать контроллер и прошить потом его будет уже нельзя. Программа Khazama AVR Programmer удобна просмотром фьюз-битов — там наглядно видно и расписано, какие из них установлены, а какие нет.

Находятся они по пути «Command» -> «Fuses and Lock Bits...», откроется окно:

Где по нажатии кнопки «Read All» считаются фьюз- и лок-биты, а пресловутая ошибка успеет вылезти аж 5 раз подряд. Ошибки сыпятся именно на заводской китайской прошивке. Но если вставить в USB-порт недавно прошитый программатор, прошивкой скаченной по ссылке выше, то этих ошибок вылазить уже не будет, однако баги вылезут в другом месте, но о них позже.

Связь с платой Pro Mini (Atmega 168, 3.3V/8MHz)

В этом случае выводы программатора соединяются с выводами платы Pro Mini, как проиллюстрировано на схематичном рисунке ниже. Перемычки не переставляются, т.е. остаётся в положении 5В.
Несмотря на то, что плата Pro Mini подписана как 3.3В, на 168-ю Атмегу можно подавать и 5В. Стабилизатор AMS1117 на 3.3В кстати вообще выпаян из платы.

AVRDUDE PROG 3.3
Консольная программа для прошивки микросхем, своего графического интерфейса не имеет, в стоке работает из командной строки, но энтузиастами было написано немало оболочек на неё, для удобства работы с ней. Одна из таких оболочек называется AVRDUDE PROG, созданная русскоязычными разработчиками. Эта оболочка, на мой взгляд удобна как раз для Flash-перепрошивки МК. После её запуска выбирается контроллер, в данном случае Atmega168 и тип программатора — USBasp. После чего можно заниматься записью/считыванием памяти. Что на заводской прошивке, что на новой — в обоих случаях никаких проблем с общением с Atmega168 не возникло. Прошил ради интереса ардуиновский стандартный blink-скетч, экспортированный в бинарный HEX-файл. Всё гладко.



Khazama AVR Programmer
Здесь достаточно выбрать микроконтроллер из выпадающего списка и можно уже работать с памятью/битами.
Однако если на самом программаторе установлена заводская прошивка, периодически будут сыпаться ошибки, о чём выше уже было упомянуто, на новой прошивке — данных ошибок уже нет.

Связь с контроллером ATtiny13A в корпусе SOIC8

Соединение согласно схеме ниже. Но тут всё немного интереснее.

Поскольку голый чип в SMD-корпусе SOIC8, в данном случае я поместил его в переходник SOIC8-DIP8 для удобства соединения с программатором в дальнейшем. Обзор на этот переходник можно почитать здесь.

AVRDUDE PROG 3.3
Тут выбирается из списка одноимённый контроллер, программатор USBasp и, если программатор прошит заводской китайской прошивкой, то все операции проходят ровно и гладко. Однако стоит заменить программатор на другой, с обновлённой прошивкой, то при любой операции возникает ошибка.

Появляется она из-за того, что ни программа, ни программатор не могут автоматически перейти в режим медленного программирования, необходимый для ATtiny13. Но есть как минимум два выхода:
1) Железный: замкнуть перемычку JP3

2) Программный: отредактировать файл «programm.ini» в папке с программой AVRDUDE PROG 3.3

Внести туда четыре строчки кода и сохранить. (взято отсюда)

progisp=jtag2pdiportprog=COM1portenabled=1[UsbaspSpeed]
progisp=Usbasp -B 3
portprog=usb
portenabled=0
Примечание. Здесь применён ключ "-B", который и занимается переводом программатора на пониженную частоту программирования. Значение «3» — время в микросекундах

После этого снова запустить AVRDUDE PROG 3.3 и в выпадающем списке программаторов выбрать UsbaspSpeed. Теперь работа с ATtiny13 на программаторе с новой прошивкой будет уже без ошибок, а перемычку JP3 замыкать больше не потребуется в этом случае.

Khazama AVR Programmer
Выбирается контроллер из списка и почти та же ситуация.

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

Но стоит замкнуть перемычку JP3, и можно спокойно работать

Или просто задать частоту работы из выпадающего списка по пути «Command» -> «Programm Options», я выставил частоту 187.5кГц.

Примечание. Частота программирования должна быть меньше тактовой частоты прошиваемой микросхемы не менее, чем в 4 раза. Но если посмотреть на считанные с ATtiny13 фьюзы, то на последней строчке Int.Rc.Osc. указано 9.6МГц.
Как минимум, у новичка возникнет вопрос — почему на выставленных в KHazame 1.5МГц — появляется та же ошибка? А также почему, если в AtmelStudio написать например код мигания светодиода с частотой раз в секунду и в макросе прописать:
#define f_cpu 9600000
то загрузив код на Attiny13, светодиод будет мигать очень медленно?
— посмотрим на предпоследнюю строчку, где Divide Clock by 8 Internally [CKDIV8=0] — это включенный предделитель частоты, который делит эти 9.6МГц на 8, и поэтому реальная частота чипа здесь — 1.2МГц. Поэтому при выборе частоты 187.5кГц или меньше, ошибки исчезают и можно работать нормально с контроллером.
Примечание 2. Способ с выбором частоты в KHazame по скорости работы в несколько раз выигрывает у метода с физическим замыканием перемычки JP3, потому как в последнем случае частота понижается до 8кГц.

Интеграция программатора в Atmel Studio 7

Atmel Studio — среда разработки от фирмы Atmel, но напрямую работать с USBASP, тем более китайским, она не может. Однако благодаря той же программе AVRDUDE, входящий в состав пакета AVRDUDE PROG 3.3, которая будет играть здесь роль посредника, можно соорудить «костыль», а уже в самой среде затем добавить возможность прошивать МК, подключенный через USBASP.

Сперва нужно запустить среду, предполагается, что некий код у нас уже написан и собран. В моём примере это простая мигалка светодиодом — Blink.

На верхней панели инструментов выбрать «Tools» — «External Tools...»

Откроется небольшое окно, нажать «Add»

В самом верхнем поле «Title:» ввести любое удобное название, я написал «Atmega168», т.к. та конфигурация, что приведу чуть ниже относится конкретно к этому контроллеру, и для любого другого контроллера она настраивается индивидуально.
В большом поле наверху, название инструмента будет автоматически продублировано.

Вторая строка, поле «Command:» — здесь нужно указать путь до файла «avrdude.exe», который находится в папке с вышерассмотренной программой

Третья строка, поле «Arguments:» необходимо ввести собственно саму конфигурацию

Конфигурация для Atmega168

-p m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a

-p — наименование контроллера
-с — какой программатор
-P — порт, через который будет заливаться прошивка
-U — какая операция с какой памятью будет производится (в данном случае запись во Flash)
Если нужно настроить для другого МК, то параметр «m168» нужно изменить на соответствующий контроллер, который будет прошиваться. Например «m8» для Atmega8 или «m328p», если Atmega328p. Параметры для других МК смотрите здесь — также там найдёте описания ключей AVRDUDE.

Конфигурация для ATtiny13

-p t13 -c usbasp -B 3 -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a 
Здесь можно заметить уже два изменения: помимо «t13», добавился уже знакомый ключ "-B" со значением «3» для снижения скорости программирования
После заполнения полей нажать «Apply» и «ОК». Окно закроется

Теперь, если снова кликнуть по «Tools», там появится только что созданный инструмент. И по нажатии по нему откомпилированный код будет автоматически прошит в контроллер.

Но эта операция происходит в два клика, что не очень удобно. Надо вынести этот инструмент на главную панель инструментов, чтобы он был всегда на виду.
Для этого нужно снова зайти в «Tools», затем кликнуть по пункту «Customize...»
Откроется следующее окно:

Перейти во вкладку «Commands» — нажать кнопку «Add Command...»

Ещё одно окно появится. В нём — в левой колонке выбрать «Tools», а в правой колонке выделить «External Command 1». Нажать «OK»

«External Command 1» окажется наверху списка, и, обратите внимание на саму панель инструментов — в интерфейсе появился пункт «Atmega168».

Но как мне кажется, место ему отведено не совсем удачное, желательно его сдвинуть вправо, для этого нажимается кнопка «Move Down» (одно нажатие = сдвиг на одну позицию вправо). После этого можно закрывать окно по кнопке «Close» и шить чип прямо из студии в один клик через обозреваемый программатор.

При перепрошивке чипа таким методом, на секунду появляется консольное окно AVRDUDE. Но может возникнуть необходимость как-то сохранить этот лог для дальнейшего его просмотра — тогда в окне «External tools» нужно поставить галку на «Use Output window».

И теперь лог будет отображаться в окне вывода, что внизу программы ATmel Studio 7. Данная галка может задаваться отдельно для каждого добавленного в «External tools» контроллера.

Дополнение по фьюзам программатора

Из документа READMI, идущего в комплекте с драйверами и прошивкой для USBASP, позже выяснилось, что разработчик рекомендует выставить определённую конфигурацию фьюз-битов, определяющих работу внешнего резонатора.
Минусом khazam'ы является то, что в окне со фьюзами не отображаются HEX-значения выставленных битов. Это уже можно посмотреть в AVRDUDE PROG. Заводские фьюзы, выставленные китайцами, выглядят так (обязательно поставить точку «инверсные» — выделил синим прямоугольником):

Как рекомендует выставить разработчик:

HFUSE=0xc9
LFUSE=0xef

Это нужно снять две галки с «BODEN» и «SUT1» (выделено красным овалом),
поставить две галки на «CKOPT» и «SUT0» (выделено зелёным прямоугольником),
справа в колонке при этом будут отображаться HEX-значения изменённых битов (выделено жирным красным прямоугольником): Lock Byte: 3F, Fuse High Byte: C9, Fuse Low Byte: EF.

Если всё сходится, можно нажимать «программирование»

ВНИМАНИЕ. Злой фьюз-бит RSTDISBL — не трогать ни в коем случае, иначе его установка заблокирует контроллер и прошить потом через USBASP его уже будет нельзя.
_____________________________________

Выводы

Опробовано, работает. Если khazam не планируется использовать, то в обновлении прошивки для программатора — смысла нет, благо и так прекрасно работает, причём в случае с ATtiny13 никаких правок и перемычек вносить не требуется. Последняя прошивка — почему-то оказалась более капризна в этом плане. Единственное, после получения, плату надо пропаять и отмыть.

Список ссылок
1) Описание USBASP
2) AVRDUDE PROG 3.3 (форум)
3) Khazama AVR Programmer 1.7
4) Китайская стоковая прошивка (10кб)
5) Архив с прошивками для USBASP и драйверами для Windows — сайт создателя проекта

ПРОГРАММАТОР AVR USB

   Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание устройства. Предохранитель защищает линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 впрямительные кремниевые, они предназначены для понижения питания микроконтроллера до 3,6 В. Согласно документации, контроллер может работать при таком напряжении питания до частоты чуть более 14 МГц. Светодиоды VL1 ("RD”), VL2 ("WR”) сигнализируют о текущих действиях программатора и обозначают режимы чтения и записи. Светодиод VL3 ("PWR”) показывает подачу питания на программатор.

   Джампер J1 – (MODify) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 - NORMal. 

   Джампер J3 LOW SCK понижает тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом - пониженная. Переключать джампер можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Джампер J3 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц. 

   Резисторы R10 - R14 предназначены для согласования уровней сигналов микроконтроллера программатора и внешних цепей (программируемый МК или другой программатор). Тактовая частота порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. 

Плата программатора микроконтроллеров avr через порт usb

   На вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора. Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP (ATMEL AVR Open Source Programmer). Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в "1"). 

   Инструкция по установке и работе. Прошить контроллер. Подключить свежеиспеченный программатор к компьютеру через USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы. 

   На форуме находятся все файлы, а также печатная плата для нашего программатора avr. Здесь покажу технологию сборки USB программатора AVR и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

ПРОГРАММАТОР AVR USB

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

Корпус для ПРОГРАММАТОРА МК AVR USB

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

сверлим отверстия и вот вам готовый прибор

   Если нет специальной измерительной аппаратуры, можно произвести проверку при помощи светодиода. Светодиод подключается анодом к контакту LED, катодом к любому контакту GND ISP-разъема. При подаче питания светодиод должен светится в «полнакала». При замыкании пинцетом ножек кварцевого генератора светодиод должен либо засветится в «полный накал», либо свечение должно отсутствовать. 

Схема программатора микроконтроллеров avr через порт usb

   Без ощибок собранный программатор с правильно запрограммированным микроконтроллером в настройке не нуждается. Но если у программируемого МК вход RESET подтянут к напряжению питания резистором, то номинал резистора не должен быть ниже 10 кОм – это связанно с пониженным напряжением питания управляющего контроллера в схеме программатора и введением ограничительных резисторов на шине ISP-разъема.

   Форум по usb программатору

   Обсудить статью ПРОГРАММАТОР AVR USB


AVR USB программатор USBasp - chipenable.ru

В интернете много схем USB программаторов для микроконтроллеров AVR. Все их можно разделить на три группы: программаторы на основе микроконтроллеров AVR, в которых USB интерфейс реализован программно, программаторы на основе микроконтроллеров AVR с аппаратной поддержкой USB, и программаторы на основе микросхем FT232, которые работают в режиме BitBang.

Один из наиболее простых для повторения AVR USB программаторов – это USBasp. Он собран на микроконтроллере Atmega8 (или Atmega48), требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

Правда есть одно НО! Для оживления этого программатора в микроконтроллер нужно записать прошивку, а значит, у вас уже должен быть какой-то работающий AVR программатор или хотя бы возможность его где-то взять.

Схема программатора USBasp представлена на рисунке ниже. Я взял за основу схему с сайта автора http://www.fischl.de/usbasp и немного изменил ee. Были добавлены диоды VD1 - VD3, чтобы уменьшить напряжение питания и согласовать логические уровни микроконтроллера и USB порта без стабилитронов. Были выкинуты цепи подключенные к UART`у, так как они не использовались, и добавлен джампер JP1.

Схема USBASP


Расскажу о назначении светодиодов и джамперов. 


- HL1 сигнализирует о том, что идет процесс программирования. Он зажигается на время записи прошивки.

- HL2 показывает, что программатор находится в рабочем состоянии. Он зажигается при подаче питания.

- JP1 закорачивает цепочку из диодов, что позволяет изменять напряжение на разъеме программирования с 3 на 5 В. Однако без стабилитронов это прокатит не со всеми компьютерами. Многие компы не опознают USBASP, если у него 5-и вольтовые логические уровни.

- JP2 изменяет частоту SCK сигнала. При разомкнутом джампере частота SCK будет 375 кГц, при замкнутом — 8 кГц. Это требуется для программирования микроконтроллеров с низкой тактовой частотой (меньше 1.5 МГц).

- JP3 подключает вывод RESET к разъему программирования. Это нужно для того, чтобы запрограммировать сам микроконтроллер программатора.

- JP4 подключает к разъему программирования +5В от USB порта. Эта функция может понадобиться, чтобы запитать программируемую плату от программатора.

Для сборки программатора USBASP понадобятся следующие компоненты:

Список деталей для USBASP


Изготовление платы методом ЛУТа не представляет особых сложностей — плата односторонняя, дорожки широкие. При печати не надо зеркалить рисунок платы. 

Печатная плата


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


Запрограммировать микроконтроллер можно прямо в составе платы. Для этого нужно замкнуть джампер JP3 и JP4, подключить USBasp к компьютеру для подачи питания и подключить программатор к разъему BH-10. Остальные действия зависят от того, какой программатор вы используете.

После того как микроконтроллер запрограммирован, нужно настроить Fuse биты, чтобы он тактировался от внешнего кварцевого резонатора. Значения Fuse битов такие:

atmega8 HFUSE=0xc9 LFUSE=0xef
atmega88 HFUSE=0xdd LFUSE=0xff

Я прошивал USBASP родным атмеловским программатором. У меня в Atmel Studio окно с Fuse битами выглядело так. 

Печатная плата


Если прошивать USBasp программатором на FT232, то в SinaProg изображение Fuse битов будет таким. 

Печатная плата

Разницы никакой, так что не задавайте вопросы какие Fuse биты установить.

Для работы с программатором под Windows требуется установить драйвера. Их можно скачать с сайта автора. Для операционных систем Linux и MacOS X USBasp`у драйвера не требуется.

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

Печатная плата
Выбираем опцию -  установить из указанного местаПечатная плата
Указываем папку в которой лежат драйвера для программатора.установка драйверов для USBasp
Система немного потупит, а затем начнется процесс установки.установка драйверов USBasp
Если все прошло удачно, мастер оборудования завершит работу. установка драйверов для USBasp
А Windows оповестит нас об установке нового оборудованияустановка драйверов для USBasp
Теперь программатором можно пользоваться.

Описанная процедура может немного отличаться в зависимости от версии операционной системы, но суть одна - подсунуть драйвера из папки.

Для работы с USBasp`ом есть несколько программ — avrdude, eXtremeBurner, Khazama и.. какие то еще.

На мой взгляд наиболее удобная в использование программа для USBaspa - это Khazama. Она имеет простой и интуитивно понятный оконный интерфейс. Процесс программирования микроконтроллера выполняется в три шага.

 

Khazama AVR Programmer
Программирование EEPROM (память предварительно должна быть стерта) выполняется аналогичным образом.Khazama AVR Programmer
В меню Command  > Program Options можно задать настройки программы. В частности, набор операций, которые будут выполняться при нажатии на кнопку Auto Program. По умолчанию там задано стирание чипа и запись во флэш память. Можно также выбрать запись в EEPROM и верификацию (проверку данных после записи).

С помощью Khazama также можно  устанавливать FUSE биты


окно установки FUSE и LOCK битов
Все операции можно выполнять как с помощью меню, так и с помощью меню бара. Также есть удобная опция AutoProgram. окно установки FUSE и LOCK битов
1 — загрузить в буфер прошивку для Flash памяти
2 —  загрузить в буфер прошивку для EPROM памяти
3 — записать прошивку во Flash память
4 — записать прошивку в EPROM память
5 — прочитать Flash память
6 — прочитать EPROM память
7 — стереть кристал
8 — установка FUSE и LOCK биты
9 — установить Khazama поверх всех окон

 

Схема и печатная плата USBasp в формате Eagle
Win драйвер и прошивка USBasp
KhazamaAVRProgrammer

USB - драйвер USB только для прошивки для микроконтроллеров Atmel AVR
V-USB - драйвер только для прошивки USB для микроконтроллеров Atmel AVR Товары Маленькая Снитч Микро Снитч LaunchBar Просмотр политики доступа в Интернет Больше продуктов Блог Магазин Служба поддержки работы V-USB Меню

V-USB - это программная реализация низкоскоростного USB-устройства для микроконтроллеров Atmel AVR®, позволяющая создавать USB-оборудование практически с любым микроконтроллером AVR®, не требуя дополнительного чипа.

Особенности

  • Полностью совместимое с USB 1.1 низкоскоростное устройство, за исключением обработки ошибок связи и электрических характеристик.
  • Примеры проектов демонстрируют реализации драйверов устройств и хостов в Linux, Mac OS X и Windows.
  • Поддерживает несколько конечных точек: одна контрольная конечная точка, две конечные точки прерывания / массового ввода и до 7 конечных точек прерывания / массового ввода. (Обратите внимание, что спецификация USB запрещает массовые конечные точки для низкоскоростных устройств, но V-USB поддерживает их в некоторой степени.)
  • Передача размером до 254 байтов по умолчанию, больше как опция конфигурации.
  • Поставляется со свободно используемыми USB-идентификаторами (пары Vendor-ID и Product-ID).
  • Работает на любом микроконтроллере AVR с не менее 2 КБ флэш-памяти, 128 байтами ОЗУ и тактовой частотой не менее 12 МГц.
  • Нет необходимости в UART, таймере, блоке ввода или другом специальном оборудовании (кроме одного прерывания, запускаемого по фронту).
  • Может быть синхронизирован с кристаллом 12 МГц, 15 МГц, 16 МГц, 18 МГц или 20 МГц или из 12.Внутренний RC генератор 8 МГц или 16,5 МГц.
  • Функциональность высокого уровня написана на C и хорошо прокомментирована.
  • Размер кода от 1150 до 1400 байт.
  • Вы можете выбрать лицензию: с открытым исходным кодом или коммерческую. Нажмите здесь для подробностей.

Оборудование

На этой схеме показана типичная схема для устройства с питанием от шины.

D1 и D2 - это недорогая замена для стабилизатора с малым падением напряжения 3,3 В, такого как LE33.Работа AVR при более высоких напряжениях превышает диапазон синфазного режима многих чипов USB. Если вам нужно запустить AVR при 5 В, добавьте стабилитроны 3,6 В на D + и D-, чтобы ограничить напряжение.

Для макетной платы, пожалуйста, смотрите metaboard.

Преимущества перед альтернативными решениями

Почему бы не выбрать микроконтроллер со встроенным USB-оборудованием? Есть несколько из них доступны (см. Http://janaxelson.com). Или совместить микроконтроллер по вашему выбору с USB-чипом?

Преимуществ по сравнению с микроконтроллерами с USB-оборудованием

    Стандартные контроллеры AVR
  • обычно легче получить.
  • Большинство контроллеров с поддержкой USB доступны только в SMD, что практически невозможно для любителей.
  • V-USB поставляется с бесплатной общей парой поставщик / идентификатор продукта.
  • Хороший бесплатный компилятор ANSI-C (GNU gcc) и бесплатная система разработки для Windows (WinAVR) доступны для AVR.
  • Контроллеры
  • AVR работают быстрее, чем большинство контроллеров со встроенным USB, и стоят дешевле.
  • Автономная работа: некоторые контроллеры USB загружают свои прошивки с хост-компьютера в ОЗУ.Они не работают без подключения к хосту.
  • Контроллеры
  • AVR имеют встроенную EEPROM.

Преимуществ по сравнению с отдельной периферией USB

  • Без дополнительных затрат.
  • Никакой дополнительной аппаратной сложности: более простая печатная плата, меньше сбоев.
  • Больше свободы в выборе дескрипторов USB.
  • V-USB поставляется с бесплатной общей парой поставщик / идентификатор продукта.
  • Используются небольшие аппаратные ресурсы: всего два-три вывода ввода / вывода.
  • USB-чипы часто трудно получить.

Преимущества перед другими реализациями только для встроенного программного обеспечения

Аналогичный драйвер для микроконтроллеров серии AVR доступен у Игоря Чешко. Наш драйвер USB имеет следующие преимущества перед драйвером Игоря:

  • Весь настраиваемый код написан на ANSI-C и, следовательно, проще в обслуживании.
  • Модульная концепция: легче интегрировать в существующие конструкции.
  • Чуть меньший размер кода, несмотря на языковые модули высокого уровня.
  • быстрее: все кодирование / декодирование (USB требует кодирования NRZI и вставки битов) выполняется в реальном времени, а не в основном цикле после сохранения потока необработанных данных.
  • Больше конечных точек, дескрипторы USB могут быть лучше настроены.
  • V-USB поставляется с бесплатной общей парой поставщик / идентификатор продукта.
  • Уровень соответствия стандартам задокументирован (описание ограничений и потенциальных проблем).
  • Лицензируется в соответствии с условиями GNU General Public License или, в качестве альтернативы, под коммерческой лицензией.

Дик Стрифлэнд разобрал старую версию V-USB до основ. Его код легче читать и понимать, но в нем отсутствуют некоторые функции V-USB:

  • V-USB поддерживает до 4 конечных точек.Это позволяет реализовать устройства, соответствующие классу устройств HID или CDC.
  • V-USB проходит тестирование в утилите тестирования usb.org.
  • V-USB поддерживает много разных тактовых частот, некоторые даже с внутренним RC-генератором.


AVR является зарегистрированным товарным знаком корпорации Atmel

,

USBasp - USB-программатор для контроллеров Atmel AVR

USBasp - это OpenSource, это бесплатно!
Нравится это? Вы можете поддержать через PayPal:

€ 5

€ 10

€ 15

USBasp - внутрисхемный программатор USB для контроллеров Atmel AVR.Это просто состоит из ATMega88 или ATMega8 и нескольких пассивных компонентов. Программист использует драйвер USB только для прошивки, специальный контроллер USB не требуется.

Особенности

  • Работает под несколькими платформами. Linux, Mac OS X и Windows тестируются.
  • Никаких специальных контроллеров или компонентов smd не требуется.
  • Скорость программирования до 5 Кбайт / с.
  • Опция
  • SCK для поддержки целей с низкой тактовой частотой (<1,5 МГц).
  • Запланировано: последовательный интерфейс к цели (например, для отладки).

Загрузить

Прошивка и схема

Следующие пакеты включают схему и прошивку.
usbasp.2011-05-28.tar.gz (519 кБ) Поддержка TPI (будет использоваться в следующей версии avrdude), поддержка программистов с ATMega88 и ATMega8.
usbasp.2009-02-28.tar.gz (260 кБ)
usbasp.2007-10-23.tar.gz (172 кБ)
usbasp.2007-07-23.tar.gz (176 кБ)
usbasp.2006-12-29.tar.gz (118 кБ) Поддерживает программистов с ATMega48 и ATMega8.
usbasp.2006-09-16.tar.gz (116 кБ) Новый VID / PID!
usbasp.2005-11-14.tar.gz (175 кБ)
usbasp.2005-07-03.tar.gz (166 кБ)
usbasp.2005-04-21.tar.gz (169 КБ)

Пожалуйста, обратитесь к Readme.txt для получения подробной информации о сборке, установке и использовании USBasp.

Драйверы

В Linux и MacOS X драйвер ядра не требуется. Для Windows требуется драйвер для USBasp. Пожалуйста, используйте этот инструмент установки драйвера для Windows (см. Также: en успешной установки в Windows 10):
en Zadig - установка драйвера USB стала проще

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

Оборудование

электрическая схема


Partlist

Партнерский номер Стоимость Рейхельт №
C1 4,7u RAD 4,7 / 35
C2 100n X7R-5 100N
C3, C4 22p KERKO 22P
D1, D2 3V6 стабилитрон ZF 3,6
CON1 USB-B USB BW
CON2 10pol WSL 10 Вт
IC1 ATmega8-16 ATMEGA 8-16 (не запрограммировано!)
JP1, JP2 2pol 2,54 мм SL 1X36G 2,54
LED1 3 мм LED зеленый LED 3MM 2MA GN
LED2 3 мм LED красный LED 3MM 2MA RT
Q1 12 МГц 12,00-HC49U-S
R1, R2 68 1/4 Вт 68
R3 2,2к 1/4 Вт 2,2к
R4, R5, R6, R7 270 1 / 4W 270
R8 10k 1/4 Вт 10k
R9, R10 1k 1 / 4W 1k
M1, M2 Перемычка JUMPER 2,54GL SW
M3 Розетка 28S GS 28-S
M4 Кейс TEKO 10007
M5 PCB -

Макеты печатных плат пользователя

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

usbasp_single_side.t3001.zip
Томас Фишл
Односторонняя печатная плата, TARGET 3001! файл макета
Размер: 90х40 мм (оптимизировано для случая Hammond 1591ATBU)

lv_usbasp.tar.gz
Павел Шрамовский (11/2007)
С Низковольтный интерфейс .
Односторонняя печатная плата, файлы макетов EAGLE, некоторые компоненты SMD

Бернхард Валле
Двухсторонняя печатная плата, файлы макетов EAGLE, список деталей с номерами заказов для Reichelt.де и Конрад.де
Размер: оптимизирован для случая Hammond 1591ATBU

http://thomaspfeifer.net/atmel_usb_programmer.htm
Томас Пфайфер
Односторонняя печатная плата, файлы макетов в формате PDF, компоненты SMD

Томаш Островский
Файлы макетов односторонней печатной платы, PDF и EPS, только четыре детали 0805 SMD, остальные дискретные компоненты

USBasp_CH.почтовый индекс
Кристиан Хейгемейр
Односторонняя печатная плата, с некоторыми компонентами SMD 0805, PDF-файлы
С дополнительными кнопками для сброса и отключения цели

USBasp.сЧ, USBasp.pcb
ComponentSide.pdf, TopSide.pdf, Schematics.pdf
Журов Павел
Односторонняя печатная плата, формат P-CAD 2002 и файлы PDF
Крестовина TXD и RXD добавлены для разъема ISP

usbasp_gr.RAR
Я.А. де Гроот
Доска односторонняя (формат EAGLE), размеры 3 на 8 см и использует только обычные компоненты.

usbasb_mg.zip
Матиас Гёрнер
Односторонняя печатная плата, Eagle-формат, с PS / PDF-файлами
встроенные розетки для целевых чипов ATmega8 и ATmega32

Тарбол с макетом
Ханнес Эстлунд
Двухсторонняя печатная плата, SMD компоненты, очень маленькая

Сергей Богданцев (01/2010)
3.Версия 3V, только ATMega48. Односторонняя печатная плата, формат компоновки ExpressPCB + гнездовая плата для различных AVR. Без будущего последовательного интерфейса чип изначально должен быть запрограммирован другим программистом.

Дизайн Eaglefiles (sch / brd) и CAD (dxf)
Hans Hafner, HTL Mössingerstrasse-Klagenfurt, Österreich, Hans.hafner (at) htl-klu (dot) at
(01/2010)
Фрезерный станок с ЧПУ (имеется файл DXF), компоновка Eagle, только несколько деталей SMD


Различные версии USBasp: Простая сборка версий не smd, smd и очень маленький USBasp
Свен Хедин (01/2011)
Орел файлы доступны.

USB-ключ AVR программатор
Фабио Балтьери (09/2011)
Очень маленький USB-ключ, как размеры. SMD запчасти.

AVR ISP Programmer
Ярослав Вадель (04/2012)
Маленький программистSMD запчасти.

Целевой проект и PDF-файлы (макет / схема)
Мариус Шефер (09/2013)

Миниатюрная USB-плата с USB-совместимой прошивкой
Стефан Бервольф (04/2014)

USBasp на макетной плате с разъемом для дочерних плат контроллера.
Фабиан Хаммель (11/2018)

Тьяарт ван Асвеген разработал плату SMD: файлы DIP TRACE и GERBER.
Тьяарт ван Асвеген (09/2019)

Многофункциональный (например,грамм. различные уровни напряжения, встроенный преобразователь USB в последовательный порт, разъем USB-C) USBasp-совместимый дизайн. Программист AVR Github проекта.
Брайан Пепин (12/2019)

USBasp с разъемом ZIF и сквозными отверстиями.KiCad дизайн на Github
Бруно (04/2020)

Ссылки

en http://www.obdev.at/products/avrusb/ Только для прошивки AVR USB драйвер
en http://libusb.sourceforge.net/ libusb
en http: // libusb-win32.sourceforge.net/ LibUsb-Win32
en http://www.nongnu.org/avrdude/ AVRDUDE - Загрузчик AVR / UploaDEr
,

Отправить ответ

avatar
  Подписаться  
Уведомление о