Все для радиолюбителя

Делаем COM программатор для AVR микроконтроллеров. Программатор USB ISP для AVR: Ещё один шаг в сторону от ардуинонизации Программаторы на микроконтроллере atmega8 сделать 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 памяти и тактовой частоты.

На вывод 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 и упаковки в корпус. Для начала скачиваем архив и делаем печатную плату.

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

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

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

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

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

Данный программатор не нуждается в первичном программировании - протравил печатную плату, спаял и пользуйся. Автор данного устройства указан в конце статьи, а здесь приведу небольшую выдержку из руководства, чтоб было понятнее, о чём речь: правильный USB-программатор – вещь, фактически, универсальная. Его можно воткнуть в любой современный компьютер и без проблем перешить нужный микроконтроллер с любым объемом FLASH-памяти на довольно высокой скорости. Но ключевое слово здесь – "правильный", который нормально работает без настройки и танцев с бубном над ним сразу же после установки и монтажа деталей. Который не глючит при переходе от одного ПК к другому или смене ОС. Правильный – это такой, драйвера на который есть для любой современной широко используемой версии ОС, и эти дрова неглючные. Каждый определит еще с десяток критериев правильности для себя лично, но вышеперечисленные – основные, без соблюдения которых нормально работать с микроконтроллером невозможно будет в принципе.

В настоящее время в Интернете полно различных схем USB-программаторов для AVR . Условно их можно разделить на две большие группы.

Первая группа включает в себя программаторы, построенные на основе микроконтроллеров (в частности, AVR). Собирал несколько штук программаторов от Prottoss’а (AVR910), себе и своим знакомым, а также несколько штук USBasp. Двое из знакомых, одаренных сиими дывайсами, в восторге. Удачно шьют камни в течение уже нескольких лет. У остальных (в частности – у меня лично) собранные программаторы особой радости не вызвали. Не говорю, что они плохие, просто вот так складывались обстоятельства: на одном компьютере работает, на другом нет. Или, проработав пару часов, оказывались невидимыми для софта, через который шьется камень. И много еще чего. Сразу оговорю – я не разбирался с прошивкой контроллеров, на которых данные программаторы собраны. Правда, перепробовал кучу программ-прошивальщиков, через которые данные программаторы, вроде как без проблем должны шить камни. Однако, результат в виде частых глюков меня не особо удовлетворил. Исключение составила только программа AVRDUDE в комплексе с графической оболочкой SinaProg, но о ней я узнал слишком поздно. Кстати, заметил такую тенденцию: чем древнее железо ПК, тем лучше работают данные программаторы. Ну и самый неприятный момент для тех, кто выбрал второй вариант знакомства с микроконтроллерами AVR – чтобы программатор заработал, нужно чем-то прошить входящий в его состав камень. То есть получается так: чтобы пользоваться программатором нужно сделать/найти программатор, чтобы прошить мозги этого программатора. Вот такой вот замкнутый круг.

И вторая группа USB-программаторов включает в себя решение на базе специализированной микросхемы FT232Rx. В свое время данная микросхема стала своего рода революцией. Мало того, что она без особых заморочек для разработчика преобразует USB в UART (и, наверное, 95% разработчиков используют ее именно в этих целях). Она еще умеет эмулировать полноценный COM-порт, причем состояние «второстепенных» линий (таких, как RTS, CTS, DTR и т.д.) можно задать/считать не из виртуального COM-порта, а напрямую через драйвер FTDI (разработчика FT232Rx). Таким образом, появилось новое, без необходимости первичной прошивки мозгов программатора, решение, для прошивки микроконтроллеров, причем, довольно быстрое.

Принципиальная схема программатора USB

Данная схема просто направляет сигналы MOSI, MISO, SCK и RESET, которые формируются на выводах DCD, DTR, RTS и DSR микросхемы DD1 (FT232RL) соответственно, на нужные выводы прошиваемого микроконтроллера (т.е., фактически является аналогом «древних» программаторов). Причем, делает это только в момент программирования камня, в остальные моменты времени программатор отключен от прошиваемой платы за счет 4-х буферных элементов микросхемы DD2 (74HC125D). Состояние линий MOSI, MISO, SCK и RESET устанавливается/считывается прошивающим софтом на компьютере. Передача данных между ПК и микросхемой FT232RL идет по шине USB (от которой еще и получает питание программатор).

Светодиод HL2 («PWR») сигнализирует о подаче на программатор напряжения питания с шины USB. Светодиод HL1 («PROG») индицирует процесс прошивки микроконтроллера (горит только во время прошивки). Вот, в принципе, и все описание собственно схемы электрической принципиальной. Единственное что хотелось бы отметить: во-первых, для подключения программатора к прошиваемой плате используется разъем IDC-10MR (XP2 «ISP»), распиновка которого совпадает с широко распространенной распиновкой разъема программатора
STK200/STK300:

XP2 "ISP" разъем для подключения устройства к программируемому микроконтроллеру

XP3 "MISC" разъем для использования дополнительных функций программатора

В общем микросхема FT232RL имеет довольно серьёзный потенциал для разработчика (например, линии шины CBUS можно использовать как обычные линии ввода-вывода микроконтроллера), поэтому неплохо бы иметь доступ ко всем ее выводам. Ну и доступ к напряжениям +5,0 В и +3,3 В тоже лишним никогда не будет. В приклеплении печатная плата и полное подробное описание. Разработка и мануал - [email protected] , испытание - SssaHeKkk .

Еще одним несложным, в плане изготовления, является COM программатор. При условии использования альтернативного режима COM порта Bitbang, отпадает необходимость в преобразовании интерфейса RS232 COM порта в SPI, необходимый для программирования. Остается только привести уровни сигналов COM порта (-12В, +12В) к необходимым (0, +5В). Это и делает
схема COM программатора для AVR микроконтроллеров:

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

Чтобы собрать программатор Громова нам нужно следующее:

Диоды КД522, КД510, 1N4148 или им подобные. Резисторы можно использовать любые, какие найдете. В качестве шлейфа можно использовать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компа — именно их я и взял) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Собрать COM программатор не составит труда:

Я сознательно не даю печатной платы под этот программатор, так как схема проста и возня с разводкой и травлением платы просто себя не оправдывает.

Для того чтобы наш COM программатор заработал нужна , к которой мы подключим программатор и для микроконтроллера.

— Так как режим Bitbang нестандартный для COM порта компьютера, то возможны сбои в работе (хотя у меня такого не было). Особенно это касается ноутбуков. Как вариант решения этой проблемы можно рекомендовать «поиграться» настройками COM порта (скорость, биты данных, варианты управления потоком, величины буфера …).
— Отдельный разъем для «земли» желательно подключить первым, чтобы уравнять потенциалы «земли» программируемого устройства и компьютера. Для тех, кто не знает, если у Вас компьютер включен в обычную розетку, без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В.

Заключение:

— COM программатор Громова простой и надежный. Я не перестал пользоваться им даже собрав USB программатор (если какой либо микроконтроллер перестает программироваться USB программатором я обязательно перепроверю его на программаторе Громова).
— Так как программатор Громова собран на пассивных элементах он не требует для себя питания. Мало того, из-за паразитного питания, микроконтроллер можно запрограммировать вообще не подключая к нему источника питания! Хотя так программировать я не рекомендую, но сам факт интересен.
— Для пользователей Algorithm Builder есть приятный бонус! Этот программатор можно использовать для внутрисхемной отладки кристалла (программный JTAG).

В данной статье мы опишем „шаг за шагом” этапы изготовления USBasp программатора для микроконтроллеров AVR . В отдельных статьях приведем описание установки драйверов для операционных систем Windows XP и Windows 7 (x64/x86). В конце поста размещена ссылка с необходимой документацией для изготовления программатора USBasp своими руками.

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

Основные характеристики программатора USBasp

  • Работает с несколькими операционными системами – Linux, Mac OS X и Windows – включая Windows 8!
  • Не требует внешнего питания.
  • Умеет программировать со скоростью вплоть до 5kB/s
  • Есть вариант (Switch 2) снижения скорость программирования – для процессоров с кварцем меньше 1,5 Мгц
  • Обеспечивает напряжение для программирования (Switch 1) 5 вольт
  • Указание работы программатора с помощью светодиода

Перед началом работы, стоит ознакомиться с последовательностью всех выполняемых действий, а именно:

  1. Выбор схемы/рисунка печатной платы
  2. Перенос рисунка печатной платы на фольгированный стеклотекстолит
  3. Травление печатной платы в растворе хлорного железа
  4. Сверление отверстий
  5. Монтаж элементов (пайка)
  6. Программирование Atmaga8 программатора
  7. Подключение программатора к компьютеру
  8. Установка драйверов – Windows XP, Windows 7
  9. Выбор программы с поддержкой USBasp

Существует много версий USBasp программатора, но все они основаны на главной схеме, автором которой является Thomas Fischl . Прошивка микроконтроллера программатора также является его авторством.

Оригинальная схема программатора:

В данном случае за основу была выбрана оригинальная схема. Поскольку использование перемычек в оригинальной схеме не совсем удобно, было принято решение использовать DIP переключатели. Так же были изменены некоторые значения резисторов.
Более того, в оригинальной схеме линии TxD и RxD выведены на разъем ISP, хотя это не нужно (точнее не используются на практике).

Ниже приведена схема с внесенными изменениями:

Строительство USBasp программатора

Существует много версий печатной платы данного программатора, некоторые можно найти на официальном сайте USBasp. Однако, была сделана своя на основе выше представленной схемы.

К сожалению, из-за применения DIP переключателей, рисунок платы стал немного сложнее, что привело к применению 2 коротких перемычек, с целью чтобы печатная плата была по-прежнему односторонней.

Ниже результат печатной платы:

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

Список элементов используемых в USBasp программаторе:

  • R1: 10к
  • R2: 180
  • R3: 100
  • R5, R6: 68
  • R7: 2к2
  • C1, C2: 22п
  • C3: 10мк
  • C4: 100н
  • LED1: Красный светодиод на 20мА
  • LED2: Зеленый светодиод на 20мА
  • D2, D3: стабилитроны на 3,6В
  • X1: Разъем USB, тип B
  • SV1: Гнездо под разъем IDC-10
  • Q1: Кварц 12МГц, корпус HC49-S
  • SW1: Dip переключатель трехпозиционный
  • IC1: Atmega8 (ПРИМЕЧАНИЕ: Не следует использовать микроконтроллер Atmega8 — PU из-за его ограничение максимальной тактовой частотой до 8 МГц!)

Перенос рисунка печатной платы USBasp программатора на стеклотекстолит выполнен с помощью метода ЛУТ (). Как это делать описывать не будем, поскольку данной информации в сети много.

Вкратце скажем, что сначала рисунок в масштабе 1:1 печатается на глянцевой бумаге, затем он накладывается на очищенную и обезжиренную медную сторону стеклотекстолита и фиксируется с помощью бумажного скотча. Далее бумажная сторона тщательно разглаживается утюгом на 3-ке. После все это дело вымачивается в воде и аккуратно очищается от бумаги.

Следующий этап – вытравливание платы в растворе хлорного железа. Во время травления желательно поддерживать температуру раствора не ниже 40 C, поэтому банку с раствором погружаем в горячую воду:


После завершения процесса травления необходимо удалить тонер ацетоном.

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

Готовые к печати (в формате PDF) рисунок печатной платы находится в конце статьи. Вы также можете найти несколько вариантов на официальном сайте проекта.

Первый запуск USBasp программатора

Теперь, когда все детали спаяны, остается только «прошить» микроконтроллер Atmegę8 самого программатора. Для этого нужен отдельный программатор, это может быть, например, STK 200 (LPT порт), STK500 и т. д. LPT программатор подключается к USBasp через разъем IDC-10.

Обратите внимание, что распределение пинов в разъеме оригинального программатора (USBasp) находится справа, в то время как в версии, описываемой в этой статье – слева:

Распределение, показанное на рисунке справа, соответствует тем, которые применяет компания Atmel в своих оригинальных программаторах. Такое распределение уменьшает риск возникновения помех во время программирования в случае применения длинных проводов от программатора к контроллеру, так как каждая сигнальная линия экранирована массой, кроме MOSI.

На время программирования включите режим SELF путем переключения DIP переключателя № 3 в положение ON. Благодаря этому появляется возможность запрограммировать Atmega8. После завершения программирования, положение переключателя (3) должна быть переведено в состоянии OFF.

Последнюю версию прошивки можно скачать с официального сайта. Рекомендуем версию для Atmega8, которая находится в архиве: usbasp.2011-05-28.tar.gz.

Обратите внимание, чтобы перед программированием Atmega8 необходимо выставить фьюзы которые имеют следующие значения:

  • # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
  • # для Atmega48: HFUSE=0xDD LFUSE=0xFF

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

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

Способ установки драйверов программатора описан в отдельных статьях, там же имеются и сами драйвера. Ниже приведены прямые ссылки на эти статьи:

  • Установка драйверов для программатора USBasp под Windows XP
  • Установка драйверов для программатора USBasp Windows 7 x64/x86

Программы для работы программатора USBasp

Самой популярной программой, поддерживающей программатор USBasp, это консольная программа AVRdude. Так же существует множество производных программ, использование которых намного удобнее. Они представлены в статье Сравнение программ для поддержки программатора USBasp.

Ну вот и пришло время нам соорудить USB программатор. Я долго не мог определиться какой бы программатор нам собрать. Выбирал по критериям простоты конструкции и удобства работы с ними, но ничего не нравилось. Выбрать программатор помог случай. Вернее я его не выбирал вообще – я его случайно собрал сам того не подозревая!

А дело было так. Некоторое количество постов назад мы собрали преобразователь USB to UART на ATtiny2313 (а в мы даже улучшили печатную плату). Еще при выборе схемы преобразователя я планировал на его базе (при помощи заливки различных прошивок) получать устройства различного назначения. Тогда я не подозревал, что данный преобразователь можно использовать шире, чем я планировал. Увидев схему USB программатора — USBtiny на ATtiny2313 я понял, что я уже имею готовый программатор!

Посмотрев на схему, сделанного ранее, преобразователя USB to UART (домашняя страничка)


и схему USB программатора USBTiny (домашняя страница)

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

Теперь все по порядку.
1 Для начала нужно собрать преобразователь (это если Вы его еще не собрали).
Вот рисунок печатной платы преобразователя:
Если интересно — вот .
В собранном виде преобразователь выглядит так:

2 Немного модифицируем плату
Для того, чтобы обеспечить все необходимые сигналы для программирования впаиваем защитные резисторы номиналом по 100 Ом в линии ножек 12, 16, 17, 18, 19 (номинал не критичен — можно варьировать).


3 Теперь нужно прошить микроконтроллер.
Линии для программатора выведены на общий разъем платы (кроме сброса — стоит отдельно).

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


Схема шлейфа проста.

Из особенностей — я вынес индикаторный светодиод и балластный резистор для него за плату на разъем — это для того, чтобы плату без перепайки можно было использовать для других устройств (ну и так прикольней — светодиод мигает прямо в разъеме:)). Кроме того, линия Vcc отделена от общего разъема — это на случай если программируемое устройство запитывается не от USB, а от своего источника (что, в принципе, желательно). Сигнальные линии (SCK, MISO, MOSI) желательно экранировать (например чередованием сигнальных и земляных линий в шлейфе). Длину шлейфа не стоит делать большой — до 50 см, не больше. Если нужно программировать удаленное устройство всегда можно применить USB удлинитель — так надежней. Вот мой готовый шнурок:



5 Сам программатор готов, теперь нужно установить драйвер для того, чтобы Винда смогла с ним работать (для Mac OS X & Linux, вродь-как, драйвера вообще не нужно). Тут все просто:

5.1 Скачиваем драйвер, разархивируем его.
Страничка с драйверами


5.2 Вставляем наш программатор в USB порт.




5.3 В трее появится сообщение о том, что найдено новое устройство.



5.4 Запустится мастер нового оборудования.



5.5 Указываем в окошке «место поиска» папку с драйвером.



5.6 Пройдет процесс установки драйвера. Появится окошко сообщающее о том, что драйвер установлен. Чтобы проверить, что мы там наустанавливали— заходим в «Мой компьютер/Свойства/Оборудование/Диспетчер устройств» и находим там наш программатор

Винда увидела новое устройство и готова с ним работать.

USBtiny программатор поддерживается AVRDude , а это значит, что многие среды программирования будут с ним работать без проблем. Еще одним достоинством работы с AVRDude является то, что для работы с AVRDude существует множество оболочек GUI из которых можно выбрать подходящую именно для Вас (но об этом в следующей статье).

Я с USBTiny до этого не работал, но отзывы о нем в сети положительные (отличается надежностью и быстротой программирования) — мои тестовый прошивки это подтвердили. ATtiny2313 прошивается за 10 секунд (это вместе с проверкой). Микроконтроллер определяется и программируется надежно — не было ни одной ошибки во время моих тестов. Приятный в использовании программатор!


Файлы к статье:
- Рисунок печатной платы UART-USB на ATtiny2313
- Прошивка USBtiny программатора для ATtiny2313
- Фьюз-биты ATtiny2313 для USBtiny
- Схема кабеля для USBtiny программатора


Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и правилами сайта, изложенными в пользовательском соглашении