Hvsp программатор для avr своими руками

Параллельный программатор для AVR — аналог STK500

Версия 2, исправленная и доработанная

Практически все AVR контроллеры можно запрограммировать в двух режимах – высоковольтном (параллельном) и низковольтном (ISP). Наиболее часто используется низковольтное программирование. В большинстве случаев для зашивки кодов программы не требуется даже извлекать контроллер из платы и устанавливать его в панель программатора. Аппаратная реализация ISP программаторов очень простая, с описанием одного из вариантов такого программатора – аналога фирменного AVRISP – можно ознакомиться на страничке Программатор для AVR — аналог AVRISP моего сайта.

К сожалению, изначально фирма Atmel основным режимом считала режим параллельного высоковольтного программирования. Поэтому в режиме ISP некоторые функции, в частности отдельные FUSE биты, недоступны для программирования. Если быть точным, то запрограммировать их можно, но только один раз. После этого контроллер перестанет определяться программатором и перепрограммировать его в режиме ISP будет невозможно.

Наиболее актуальна эта проблема для микроконтроллеров в восьмивыводном корпусе, в которых вывод сброса RESET можно запрограммировать на использование в качестве дополнительного порта ввода-вывода. Это делается установкой FUSE бита RSTDISBL. Но после этого контроллер невозможно будет перепрограммировать в режиме ISP. Возможны и другие ситуации, когда не обойтись без высоковольтного параллельного программатора.

Предлагаемый программатор – это упрощенный и модернизированный аналог выпускаемого и поддерживаемого компанией Atmel стартового набора разработчика STK500. Он позволяет программировать микроконтроллеры как в режиме ISP, так и в параллельном режиме. Поддерживаются все, без исключения, микроконтроллеры 8 бит AVR. Управление осуществляется через COM порт персонального компьютера. Возможно подключение и к USB через конвертер, например на FT232BM, описание которого можно найти страничке Переходник USB COM моего сайта. Управляющая программа является составной частью фирменной интегрированной отладочной среды разработки AVR Studio от Atmel. Ее последняя версия всегда свободно доступна на сайте Atmel по адресу http://www.atmel.com.

Принципиальная схема основной платы программатора показана на рис. 1. Слишком сложно? Но ведь любой инструмент может быть любительским или профессиональным. Если нужно раз в жизни запрограммировать один единственный контроллер, конечно, собирать такую относительно сложную схему нецелесообразно. А вот для программиста – разработчика устройств на основе AVR, такой программатор может сберечь массу сил, многократно окупив потраченные на его изготовление средства и время. Если вам нужен профессиональный параллельный высоковольтный программатор AVR, который можно собрать своими руками, то эта конструкция именно то, что вам нужно.

Собственно программатор выполнен на DD3 типа ATmega8535. Светодиоды HL1 зеленого цвета и HL2 красного индицируют режим готовности и программирования соответственно. DD4 предназначен для записи новых версий прошивок в основной контроллер, а также для управления напряжением питания программируемого контроллера. Для повышения нагрузочной способности выводы PD3…PD5 соединены параллельно.

В схеме программатора предусмотрены два переключателя с фиксацией – SA1 и SA2. SA1 в левом по схеме положении включает в цепь питания диоды VD4 и VD5. При этом напряжение питания программатора и, соответственно, программируемого контроллера снижается примерно до 3,6 В. Как показала практика, иногда это бывает необходимо, т.к. некоторые контроллеры при напряжении 5 В в параллельном режиме программируются некорректно.

Если переключатель SA2 установить в левое по схеме положение, после программирования на выводе сброса будет установлен единичный уровень, т.е. сразу начинается работа запрограммированной в контроллер программы. Это хорошо при отладке и внутрисхемном программировании, но нежелательно при программировании в панельке программатора. Ведь неконтролируемая работа программы может привести к непредсказуемым последствиям, например, испортить содержимое EEPROM только что корректно запрограммированного контроллера. Для исключения этого SA2 следует установить в правое по схеме положение. В этом случае на выводе RESET после программирования будет нулевой уровень, а питание контроллера отключится.

Элементы микросхемы DD6 блокируют подачу на программируемый контроллер тактовой частоты при выключении его питания. На транзисторах VT1…VT3 собран коммутатор напряжения сброса 0 – 5 – 12 В. Включение напряжения 12 В при программировании индицирует свечение светодиода HL4 красного цвета. VT4 — это ключ, коммутирующий питание программируемого контроллера. Как показала практика, при программировании потребляемый ток может достигать 100 мА, поэтому в качестве VT4 нужно использовать транзистор с допустимым током 0,5…1 А. DD5 – это преобразователь напряжения 5 –>12 В.

Контроллеры в DIP корпусах можно программировать в параллельном режиме непосредственно в программаторе на плате коммутации, которая подключается к основной плате параллельно разъему X3. В режиме ISP возможно только внутрисхемное программирование, хотя, при необходимости, можно и для этого режима изготовить плату коммутации и подключить ее к разъему X3. Ее схема аналогична схеме платы коммутации упоминавшегося выше программатора AVRISP.

Параллельное программирование новой серии AVR ATtiny26/261/461/861 производится с помощью дополнительного переходника — модуля расширения.

Схема платы коммутации, чертежи печатных плат, а также особенности наладки и работы с программатором рассмотрены в подробном описании.

Читайте также:  Домики для туристов своими руками

Источник

Hvsp программатор для avr своими руками

Статья посвящена клону программатора STK500. Протокол STK500 разработан изначально фирмой Atmel, и поэтому описанный программатор принимается как «родной» большинством популярных программ — AVR Studio, CodeVisionAVR, BASCOM-AVR, avrdude. Программатор может быть изготовлен в двух вариантах — «облегченном», в этом случае он работает как стандартный ISP-программатор, и «полном», в этом случае дополнительно поддерживается возможность программирования чипа «высоковольтным» методом (HVSP), позволяющим восстанавливать чипы AVR (в данной версии программатора имеются сокеты для чипов с 8 и 14 ножками), брикнутые неправильной установкой фьюзов.

Программатор работает на основе исходников программатора AVR-Doper (см. ссылки [2]), который был изначально рассчитан на микроконтроллер ATmega8. Портирование программатора AVR-Doper на макетную плату AVR-USB-MEGA16 (микроконтроллер ATmega32) позволило решить проблему «курицы и яйца» (т. е. чем запрограммировать программатор) — благодаря наличию в макетной плате AVR-USB-MEGA16 бутлоадера USBasp. Программатор питается и обменивается данными с компьютером через подключение по USB. Протокол USB обрабатывается программно, с помощью популярной библиотеки V-USB. Далее для краткости я буду называть описываемый программатор просто как AVR-Doper.

Для начала несколько слов о возможностях AVR-Doper — чем он хорош и что умеет.

— HVSP позволяет использовать ножку RESET для ввода и вывода (I/O), что особенно полезно для чипов, у которых мало ножек — с 8 и 14 выводами.
— простая аппаратура программатора позволяет собрать его на односторонней печатной плате. Не требуется никаких специальных чипов для USB.
— совместимость с протоколом STK500 компании Atmel, протокол работает через встроенный преобразователь USB RS232.
— настраиваемая частота тактов ISP позволяет прошивать микроконтроллеры, тактируемые с очень низкой частотой, например 32 кГц.
— частота тактов ISP может быть снижена перемычкой, если программное обеспечение не позволяет менять тактовую частоту ISP clock.
— имеется второй преобразователь USB Serial для обработки отладочного вывода из программируемого устройства.
— коннектор HVSP совместим с программатором HVProg, это другой совместимый с STK500 программатор (см. ссылки [6]).
— Open Source (включая firmware и принципиальную схему).
— использует питание от USB, внешние источники питания не нужны.
— может использоваться как альтернативное firmware для плат metaboard (для построения на ней программатора), см. http://www.obdev.at/goto?t=metaboard-prog
— может использоваться как альтернативное firmware для программатора USBasp, разработанного Thomas Fischl, см. http://www.fischl.de/usbasp/
— список программируемых чипов внушает уважение как минимум, достаточно посетить страницу, посвященную STK500, на сайте Atmel (см. ссылки [4]).

Короче говоря, программируется все, что шевелится.

[ISP — облегченный вариант AVR-Doper]

Для облегченного варианта программатора (поддерживающего только ISP) необходимо собрать на макетном поле платы AVR-USB-MEGA16 следующую схему:

Коротко о назначении элементов схемы:

1. Микросхема 74HC126N нужна для согласования уровней сигналов при раздельном питании программируемого устройства и программатора.
2. Перемычка JP1 нужна для переключения питания программируемого устройства. Когда перемычка JP1 установлена, то программируемое устройство и микросхема 74HC126N питаются от программатора (в конечном счете от +5 вольт USB). Когда перемычка JP1 снята, то программируемое устройство и микросхема 74HC126N питаются от программируемого устройства, и это напряжение питания может отличаться от +5 вольт (например, быть +3.3 вольта).
3. Резисторы R17 и R19 служат для измерения напряжения питания программируемого устройства.
4. Коннектор SV1 ISP служит для подключения программируемого устройства. На этот разъем также выведены сигналы последовательного порта RXD и TXD микроконтроллера, что позволяет микроконтроллеру служить мостом между отлаживаемым микроконтроллером и виртуальным COM-портом компьютера. Эту возможность при желании можно использовать для отладки программы в программируемом устройстве (например, для отладочного вывода printf). Резисторы R10 и R11 нужны как ограничители тока (по крайней мере R11), так как в стандартном коннекторе ISP10 ножки 8 и 10 могут соединяться в землей GND.
5. На контакт 3 разъема SV1 ISP выводится тактовая частота для программируемого микроконтроллера, которая может использоваться для оживления микроконтроллера, тактовый генератор которого не может запуститься из-за ошибки в установке фьюзов. Тактовая частота CLK может быть изменена под управлением программы на компьютере (например, в AVR Studio).
6. Перемычка JP2 Slow SCK служит для снижения частоты тактов программирования ISP, если программное обеспечение не позволяет менять частоту тактов ISP.
7. Перемычка JP3 USB HID служит для перевода программатора AVR-Doper из стандартного режима USB CDC (виртуальный COM-порт) в нестандартный (по отношению к протоколу STK500) режим USB HID. Этот режим не поддерживается AVR Studio, однако может понадобиться на операционных системах типа Linux или FreeBSD, где иногда могут быть проблемы с программным обеспечением в режиме USB CDC для AVR-Doper. Например, популярный консольный программатор avrdude поддерживает режим USB HID программатора AVR-Doper. Если перемычка USB HID установлена (состояние перемычки считывается при включении питания программатора), то активируется режим USB HID.

Больше никаких особенностей схема не имеет, все тупо и просто. Внешний вид собранного программатора:

Читайте также:  Бердо для ткацкого станка своими руками

Назначение установленных на плату деталей:

JP1 Power переключает тип питания программируемого устройства (см. описание принципиальной схемы).
JP2 Slow SCK переключает частоту тактов ISP (см. описание принципиальной схемы).
JP3 USB HID переключает тип интерфейса программатора (см. описание принципиальной схемы).
SV1 ISP разъем для подключения программируемого устройства (см. описание принципиальной схемы).

12-выводный коннектор мама у нижнего края платы пока никуда не подключен. Он предназначен для расширения функционала программатора — добавления возможности HVSP.

Правильно собранный и прошитый (с помощью встроенного в макетную плату bootloader-а USBasp) программатор никакой наладки не требует и начинает работать сразу.

Внимание! Чтобы правильно работал ADC для измерения напряжения, нужно не забыть выпаять резистор R3 платы AVR-USB-MEGA16 (т. к. используется внутренний источник опорного напряжения 2.56 вольт).

Программатор AVR-Doper в «боевом положении» — считывается память flash у микроконтроллера ATmega32, установленного на макетной плате AVR-USB-MEGA16.

[Установка AVR-Doper в операционной системе Windows]

Процесс несложный, разберем его по шагам.

1. Снять перемычку JP3 USB HID (если она установлена). Программатор у нас будет работать в режиме USB CDC (виртуальный COM-порт), этот режим работает по стандартному протоколу STK500, что позволит использовать программатор в большинстве популярных IDE для программирования AVR (AVR Studio, CodeVisionAVR, BASCOM-AVR и др.).
2. Подключить программатор по USB к компьютеру. При первом подключении операционная система обнаружит новое устройство и запросит драйвер. В качестве драйвера нужно подсунуть файл avrdoper.inf или avrdoper-vista.inf (эти файлы можно найти в архиве по ссылке [5]). При предупреждении о неподписанном (unsigned) программном обеспечении выбрать «установить все равно».
3. После установки в системе появится еще один COM-порт, его номер можно подсмотреть в Диспетчере Устройств. Номер COM-порта нужно знать, чтобы правильно запустить STK50/AVR-Doper в популярных программах (AVR Studio, CodeVisionAVR, BASCOM-AVR и др.).

[HVSP — полный вариант AVR-Doper]

Этот вариант схемы немного сложнее, но зато он поддерживает сразу 2 режима программатора STK500 — ISP и HVSP.

Схема взята почти один-в-один с оригинального варианта, с минимальными переделками — поменял силовой транзистор преобразователя на MOSFET, и добавил индикационный светодиод REG_LED LED1, показывающий нагрузочный режим регулятора напряжения преобразователя (устанавливать этот светодиод необязательно). Схема состоит из двух частей — PARTA и PARTB. Часть PARTA целиком собрана на макетной плате AVR-USB-MEGA16 и почти полностью повторяет схему облегченного варианта AVR-Doper, так что облегченный вариант можно легко допаять, подключив коннектор-маму JP4. Часть PARTB собрана на отдельной подсоединяемой плате и содержит преобразователь напряжения, транзисторные ключи и сокет для подключения программируемых микросхем в корпусах DIP8 и DIP14. Схема никаких особенностей не имеет и наладки не требует — правильно собранная, начинает работать сразу. На фото показан внешний вид дополнительной платы PARTB и программатор в сборе. Два маленьких коннектора ISP и JTAG на макетной плате AVR-USB-MEGA16 используются только для жесткости — как механическое крепление платы PARTB.

Самое сложное в изготовлении было найти дроссель (в описании сказано, что подойдет любой 0.3 .. 3 мГн). Я поступил просто — взял готовый дроссель от материнской платы с ферритовым сердечником (внимание: кольцевой, тороидальный сердечник не подойдет), замерил его индуктивность, снял обмотку, при этом посчитав витки. Далее просто намотал новую обмотку на требуемую индуктивность подходящим проводом (индуктивность катушки прямо пропорциональна квадрату числа витков, поэтому рассчитать количество витков просто). У меня получился отличный дроссель на 1.7 мГн (216 витков эмалированного провода диаметром 0.12 мм). Сверху надел термоусадочную трубку и прогрел феном (воздушный поток 150 градусов Цельсия).

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

[Программное обеспечение для AVR-Doper]

Как я уже упоминал, выбор программного обеспечения богатый — как минимум AVR Studio, BASCOM-AVR и кроссплатфоменный avrdude. Сначала ничего не хотел про это писать, все вроде и так понятно, но потом все-таки решил сделать краткий обзор. Фаворит, ИМХО, среди всех программ — оболочка программатора AVR Studio. У CodeVisionAVR наблюдались глюки — после обращения к программатору программа отказывалась видеть программатор до его перетыкания в USB. Неплохая программная оболочка у программатора в BASCOM-AVR — есть возможность навигации по данным прошивки (простейший HEX-редактор). Для постоянно повторяющихся операций лучше всего подойдет консольная программа avrdude.

Все программы объединяет необходимость перед первым использованием программатора выбрать в настройках его тип (STK500 или AVRISP) и настроить COM-порт, к которому подключен программатор. Особых трудностей это не вызывает — все делается в соответствующем меню настроек, а номер COM-порта легко узнать через Диспетчер Устройств.

Читайте также:  Гамак для самолета для ребенка своими руками

AVR Studio

Набор возможностей программы впечатляет. Есть доступ к всем режимам программирования, фьюзам, битам защиты, имеется настройка частот SCK ISP и частоты тактирования чипа CLK, считывание уровня напряжения питания чипа, калибровка встроенного тактового генератора и проч. Бегло рассмотрим возможности программы, пробежавшись по закладкам.

Первая закладка Main позволяет выбрать из выпадающего списка тип программируемого чипа, выбрать режим программирования (ISP или HVSP), полностью стереть чип, прочитать его сигнатуру.

Есть также возможность установить частоту тактов SCK ISP, выбрав её из ряда частот.

Закладка Program позволяет программировать flash и eeprom чипа (для этого есть кнопки Program и система выбора файла), сверить память чипа с файлом (кнопки Verify), а также скидывать в hex-файл содержимое памяти (кнопки Read). Можно также сохранить состояние фьюзов и бит защиты в файл формата ELF, а также записать фьюзы и биты защиты данными из ELF-файла.

Переход на закладку Fuses автоматически считывает состояние перемычек, и показывает их в виде чекбоксов и в HEX-формате. В этом окне можно перемычки записывать, проверить, прочитать.

Закладка LockBits позволяет манипулировать битами защиты. Принцип работы и возможности тут те же самые, что и для закладки Fuses.

Закладка Advanced позволяет считывать или менять калибровочные данные для внутреннего тактового генератора RC.

Закладка HW Settings позволяет узнать напряжение питания программируемого чипа, а также установить тактовую частоту генератора CLK. Генератор применяемого для чипа, у которого нет кварца, либо если по каким-то причинам у чипа не работает тактовый генератор. Тактовая частота CLK выводится на ножку 3 разъема SV1 ISP программатора AVR-Doper. Я обычно этот сигнал не использую.

Закладка HW Info позволяет получить информацию по железу и прошивке программатора AVR-Doper. Сюда заглядывать нет особой необходимости.

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

CodeVisionAVR

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

BASCOM-AVR

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

avrdude

Программатор AVR-Doper поддерживается консольной утилитой avrdude в режиме USB HID, начиная с версии 5.3 (более ранние версии требуют патча и перекомпиляции). Утилита работает и под Windows, и под *nix (Linux, FreeBSD). Для Windows avrdude можно скачать в составе пакета WinAVR. Версия avrdude, с которой я экспериментировал, была 5.5 (версию можно узнать командой avrdude -v). Для работы с avrdude нужно установить перемычку JP3 USB HID и переподключить USB-интерфейс программатора. Для проверки работоспособности программатора можно ввести команду avrdude -c stk500v2 -P avrdoper -p atmega32 (для чипа atmega32):

А вот пример сохранения памяти flash в файл на диске c:\001.hex:

В режиме USB HID программатор работает намного быстрее, чем в режиме USB CDC с программами AVR Studio и BASCOM-AVR. Поэтому для часто повторяющихся операций лучше всего выбрать avrdude. Имеется также написанная для avrdude графическая оболочка avrdude-gui.exe.

Еще пробовал программатор AVR-Doper с программой CrossStudio/CrossWorks AVR 1.3. Программатор определяется и работает, однако подробно не тестировал, поскольку опыта работы с CrossStudio/CrossWorks у меня нет.

[Словарик терминов]

AVR популярное семейство микроконтроллеров компании Atmel. Разделяется на подгруппы AVR Classic, AVR Tiny и AVR Mega. Последние два семейства самые современные и как правило поддерживают технологию аппаратной отладки debugWIRE через ножку RESET, либо отладку через JTAG.

firmware программное обеспечение для микроконтроллера. Обычно термин применяется отдельно от термина software, чтобы подчеркнуть, что программа работает не на PC, а в «железячном» устройстве.

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

ISP аббревиатура In System Programming. Означает возможность записи программы firmware в чип (микроконтроллер) прямо на плате, на которой чип установлен.

HVSP аббревиатура High Voltage Serial Programmer — программатор, поддерживающий программирование чипа повышенным напряжением.

STK200 название уже несколько устаревшего протокола (разработан Atmel) обмена данными с программатором.

STK500 название популярного открытого протокола (разработан Atmel) обмена между программатором и компьютером, к которому программатор подключен. Протокол работает поверх подсоединения программатора через стандартный COM-порт (обычный, или виртуальный, работающий через USB).

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

Источник

Оцените статью