Самостоятельная сборка программатора AVRProg. Программаторы для AVR микроконтроллеров (USB, COM, LPT) Органы управления на плате

Для программирования микроконтроллеров AVR требуется программатор. Проще всего сделать программатор для COM либо LPT. Но я работаю на ноутбуке, а в них сейчас устанавливаются только USB порты. Вот и назрела необходимость обзавестись программатором для AVR по USB. Сейчас, я скорее всего купил бы данный программатор. На ebay они стоят недорого, наверное, даже дешевле чем купить детали, сделать плату и всё спаять. Хотя если посмотреть с другой стороны, заказ с ebay будет идти по почте не меньше месяца, а собрать программатор avr usb своими руками, в силу его простоты, можно за вечер. Более того, если начинающий радиолюбитель сам соберёт программатор, то в дополнении к программатору он получит опыт, бесценный опыт, а это дорогого стоит.
Это второй мой USB программатор для AVR, первым я сделал программатор USB-asp, но он мне не очень понравился, так как иногда отваливался от моего компьютера, хотя на другом компьютере ничего подобного не наблюдалось. Я решил попробовать собрать другой программатор, и мой выбор пал на программатор AVR910. У данного программатора немного по другому реализована схема подключения по USB, и как позже оказалась, на моём компьютере всё работает очень хорошо. Я забыл о проблемах, которые у меня были с моим прошлым программатором. Описанный в данной статье программатор AVR910 является на данный момент моим основным программатором для AVR.
Схема и прошивка использованы с сайта проекта (http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm).


Питается программатор от USB порта. Для того чтобы не требовалось согласование с уровнями линий данных USB порта (3.6В) питание микроконтроллера составляет 3.6В. Для получения из 5В в USB порте 3.6В, используется схема их двух последовательно прямо включённых кремниевых диодов. На каждом диоде падает по 0.7В, а в сумме получается 1.4В. Диоды должны быть кремниевыми, не допускается использование диодов шотки, так как на них падает меньше 0,7В. Выходы разъёма программирования подключены через резисторы на 330 Ом для согласования уровней. Работает устройство на микроконтроллере AtMega8-16 на тактовой частоте 12МГц. На схеме приведены номера выводов для микроконтроллера в DIP корпусе, хотя я отраcсировал плату под SMD корпус, который называется TQFP. Программатор имеет индикацию записи, чтения, наличия питания. Также данный программатор имеет выход, на котором всегда присутствует меандр, частотой 1 МГц. Это очень классная и полезная штука для восстановления микроконтроллеров, у которых из-за ошибочно запрограммированных Fuse битов тактирование сконфигурировано от внешнего источника тактовых импульсов. Я таким образом уже несколько раз восстанавливал микроконтроллеры. Нужно всего лишь посмотреть в даташите на конкретный микропроцессор AVR, к какому выводу подключается внешний источник тактового сигнала, и подпаять к данному выводу источник меандра. Подключить программатор, и перепрограммировать fuse. Всё очень просто, но иногда здорово выручает!
Имеющиеся варианты реализации печатных плат под программатор AVR910 не совсем меня устраивали, и я выполнил трассировку своего варианта (скачать файлы проекта можно в конце статьи).


Защитный рисунок на фольгированный стеклотекстолит нанесён при помощи лазерного принтера и утюга.


После травления получилась вот такая красота. Я не сдержался, и процарапал тонер на дорожках между ножками микросхемы. Мне не терпелось проверить получились они или нет.




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

Групповую заготовку для таблички для печати на фотобумаге размером 10х15 я положил в архив со всеми файлами к данной записи. Скачать его можно в конце данной статьи.
Прошивку для программатора можно скачать по ссылке в конце статьи.
Fuse биты устанавливаются с соответствии с рисунком ниже:


Как запрограммировать микроконтроллер AtMega8 для программатора AVR910 можно посмотреть в моём видео:

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




С термоусадкой всё кажется просто, но мне было сложно сделать отверстия под штыри. Если протыкать отверстия шилом, то при усадке термоусадочная трубочка рвётся начиная от данных отверстий. Я даже испортил несколько заготовок, но у меня в конце экспериментов всё получилось. В итоге я отверстия не протыкал, а проплавлял горячим паяльником с жалом иглой. По краям платы я спаял концы термоусадочной трубки. Спаиваются они очень просто – нагреваются оба конца трубочки, затем быстро, пока они не успели остыть, зажимаются и удерживаются зажатыми до полного остывания. Получается достаточно прочный спай. Я зажимал медицинским зажимом, на термоусадке даже остались следы от насечек на его губках.
При первом подключении к компьютеру программатора AVR910 в системе появится новое устройство AVR910. Теперь необходимо установить драйвера и можно работать.
Я работал с данным программатором на 32 битных системах Windows XP и Windows 7. Всё работает очень хорошо и никаких проблем не возникает. Проблемы возникли у меня когда я попытался установить драйвера для 64 битной Windows 7. Дело в том, что этот драйвер не имеет цифровой подписи Microsoft и 64 битный Windows 7, будучи более защищенным в безопасности, блокирует все драйвера без цифровой подписи. Эту блокировку можно отключить, но это не совсем просто….. Так что имейте ввиду.
Заливаю прошивку в микроконтроллер я при помощи программы AvrOsp2. Она очень простая, не требует установки, бесплатна, поддерживает программатор AVR910 и огромное кол-во микроконтроллеров АВР, хорошо работает и имеет очень удобное меню для работы с FUSE битами. В общем, классная программка, мне она очень нравится, рекомендую! В видео ниже я показал процесс установки драйверов для AVR910, как настроить и пользоваться программой AvrOsp2.

В моей версии программатора я не установил выводной электролитический конденсатор на 22 мкФ, который устанавливается со стороны противоположной дорожкам и паяется в отверстия, которые находятся возле разъёма USB. Возможно потребуется установить дополнительный электролитический конденсатор ёмкостью 10-50мкФ параллельно впаянному керамическому конденсатору 0.1 мкФ, возле зелёного светодиода PWR. Ниже на картинке, от руки показаны места подключения.

Для работы программатора необходим микроконтроллер способный работать до 16 МГц. AVR AtMega8 выпускается в двух сериях, работающих до 8 МГц (серия L), они нам не подходят, так как проект работает от кварца на 12 МГц. Есть и обычная версия, которая работоспособна вплоть до частоты 16 МГц. Это то, что нам нужно. Ниже представлен кусочек даташита AVR AtMega8, в котором вычеркнуты версии микроконтроллеров которые не буду работать в данном программаторе, и выделены зелёной рамкой версии микроконтроллеров которые будут работать в данном проекте.

Программатор USBASP — устройство, распиновка, подключение, прошивка

Сегодня мы рассмотрим как, без особых затрат и быстро, запрограммировать любой микроконтроллер AVR поддерживающий режим последовательного программирования (интерфейс ISP) через USB-порт компьютера. В качестве программатора мы будем использовать очень простой и популярный программатор USBASP , а в качестве программы — AVRdude_Prog V3.3 , которая предназначена для программирования МК AVR.

Программатор USBASP

Для того, чтобы запрограммировать микроконтроллер необходимо иметь две вещи:
— программатор
— соответствующее программное обеспечение для записи данных в МК
Одним из наиболее простых, популярных и миниатюрных программаторов для AVR является USBASP программатор , созданный немцем Томасом Фишлем.
Имеется много разных схемотехнических решений этого программатора, программатор можно собрать самому или купить (стоимость — 2-3 доллара). При самостоятельной сборке следует учитывать, что собранный программатор необходимо будет прошить сторонним программатором.

Мы рассмотрим наиболее «навороченную» версию программатора:


Характеристики программатора:
— работает с различными операционными системами — Linux, Mac OC, Windows (для операционной системы Windows, для работы программатора, необходимо установить драйвера — архив в конце статьи)
— скорость программирования до (скорость программирования можно устанавливать самому, к примеру в AVRDUDE_PROG) 375 (5) кб/сек
— имеет 10-контактный интерфейс ISP (соответствует стандарту ICSP с 10-контактной распиновкой)
— поддерживает два напряжения питания программатора — 5В и 3,3В (не все USB порты ПК работают при 5 Вольтах)
— питается от порта USB компьютера, имеет встроенную защиту по току (самовосстанавливающийся предохранитель на 500 мА)

Назначение джамперов:
разъем JP1 — предназначен для перепрошивки микроконтроллера программатора (для перепрошивки — необходимо замкнуть контакты)
разъем JP2 — напряжение питания программатора — 5 Вольт или 3,3 Вольта (по умолчанию — 5 Вольт, как на фотографии). Программируемый микроконтроллер, или конструкцию, в которой он установлен, при токе потребления 300-400 мА можно запитать с программатора, для этого на разъеме есть выход +5В (VCC).
разъем JP3 — определяет частоту тактирования данных SCK: разомкнутый — высокая частота (375 кГц), замкнутый — низкая частота (8 кГц)
Подробнее о разъеме JP3
Джампер JP3 предназначен для уменьшения скорости записи данных в микроконтроллер. Если у микроконтроллера установлена частота тактирования более 1,5 мГц — джампер может быть разомкнут, при этом скорость программирования высокая. Если тактовая частота менее 1,5 мГц — необходимо закоротить выводы джампера — снизить скорость программирования, иначе запрограммировать микроконтроллер не получится. К примеру, если мы будем программировать микроконтроллер ATmega8 (в принципе, практически все МК AVR настроены на тактовую частоту 1 мГц по умолчанию), у которого частота тактирования по умолчанию 1 мГц, необходимо будет замкнуть выводы джампера (как на фотографии). Лучше, наверное, держать этот джампер постоянно замкнутым, чтобы, забыв о его существовании, не мучиться вопросом — почему микроконтроллер не прошивается.

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

Программатор поддерживается следующим программным обеспечением:
— AVRdude
— AVRdude_Prog
— Bascom-AVR
— Khazama AVR Prog
— eXtreme Burner AVR

Работать с таким программатором очень просто — соединить соответствующие выводы программатора с микроконтроллером, подключить к USB-порту компьютера — программатор готов к работе.
Распиновка 10-контактного кабеля программатора USBASP :


1 — MOSI — выход данных для последовательного программирования
2 — VCC — выход +5 (+3,3) Вольт для питания программируемого микроконтроллера или программируемой платы от порта USB компьютера (максимальный ток 200 мА — чтобы не сжечь порт USB)
3 — NC — не используется
4 — GND — общий провод (минус питания)
5 — RST — подключается к выводу RESET микроконтроллера
6 — GND
7 — SCK — выход тактирования данных
8 — GND
9 — MISO — вход данных для последовательного программирования
10 — GND

Установка драйверов для программатора USBASP

Установка драйвера для программатора USBASB очень проста:
— подсоедините программатор к USB порту компьютера, при этом в диспетчере устройств появится новое устройство «USBasp» с желтым треугольником и восклицательным знаком внутри, что означает — не установлены драйвера
— скачайте и разархивируйте файл «USBasp-win-driver-x86-x64-ia64-v3.0.7»
— запустите файл «InstallDriver» — будут автоматически установлены драйвера для программатора
— проверьте диспетчер устройств — желтый треугольник должен исчезнуть (если нет, щелкните правой кнопкой по устройству «USBasp» и выберите пункт «Обновить»
— программатор готов к работе

FUSE-биты при программировании USBASP AVR:

Архив «usbasp.2011-05-28» содержит папки:
= BIN:
— win-driver — драйвера для программатора
— firmware — прошивка для микроконтроллеров Mega8, Mega88, Mega48
= circuit — схема простого программатора в PDF и Cadsoft Eagle

При перепрошивке китайского программатора рекомендую установить FUSE-бит CKOPT. CKOPT взаимосвязан с предельной тактовой частотой. По умолчанию CKOPT сброшен и стабильная работа микроконтроллера программатора при применение кварцевого резонатора возможна только до частоты 8 МГц (а МК программатора работает на частоте 12 МГц). Установка FUSE-бита CKOPT увеличивает максимальную частоту до 16 МГц. Китайцы не трогают этот FUSE-бит, что довольно часто приводит к отказу программатора (обычно система не определяет программатор).

Архив «USBasp-win-driver-x86-x64-ia64-v3.0.7» предназначен для установки драйверов, как указано в статье

(518,9 KiB, 13 188 hits)

(10,9 MiB, 24 942 hits)

Описанный в статье USBASP программатор, прошитый последней версией программы, проверенный в работе, с установленными джамперами и перемычками, вы можете приобрести в интернет-магазине «МирМК-SHOP»

Небольшая программа, созданная с целью быстрой прошивки микроконтроллеров Atmel AVR.

Приложение Khazama AVR Programmer имеет простой и удобный минималистичный оконный интерфейс. Данный программатор является графической оболочкой программы avrdude и отлично подходит для начинающих разработчиков. В настоящее время Khazama AVR Programmer поддерживает около восьмидесяти моделей микроконтроллеров AVR, относящихся к семействам ATmega, ATxmega, ATtiny и AT90. Программатор имеет минимальное количество функций, однако выгодно отличается скоростью работы и стабильностью. Программное обеспечение позволяет: загружать в буфер сохраненные hex-файлы прошивки для EEPROM и FLASH памяти, записывать hex-файлы в EEPROM и FLASH память микроконтроллера, смотреть содержимое EEPROM и FLASH памяти чипа, очищать память контроллера, менять конфигурацию FUSE и LOCK битов, проводить верификацию EEPROM и FLASH памяти. Все операции можно осуществлять либо с помощью меню, либо с помощью кнопок на панели инструментов, внешний вид которых срисован с аналогичных кнопок в ПО .

Среди прочих функций программы Khazama AVR Programmer стоит отметить: наличие контекстных подсказок и клавиш быстрого доступа, возможность установки данного приложения поверх всех остальных окон, наличие просмотрщика EEPROM и FLASH hex-файлов (без редактирования), визуализация и расшифровка значений битов конфигурации микроконтроллеров. Настраиваемая кнопка «AutoProgram» запускает на исполнение набор операций, заданных в окне «Program Options» (по умолчанию установлена очистка чипа и запись во FLASH память). Программа Khazama AVR Programmer работает с , поддерживается программирование по TPI. Тактовая частота программирования по интерфейсу ISP задается в пределах от 500 Гц до 1,5 МГц.

Процедура программирования FUSE битов не требует разбирательств с шестнадцатиричными значениями и заключается в выборе необходимых параметров из выпадающих списков, что снижает вероятность залочить микроконтроллеры по ошибке. Также FUSE биты можно изменять, устанавливая галочки в нижнем поле. При этом поставить галки на несуществующие конфигурации нельзя, что также является плюсом в плане безопасности. В окне программирования FUSE битов присутствуют функции: записи фьюзов в память контроллера, сохранения текущей конфигурации в буфер, вызова сохраненной конфигурации из буфера, восстановления стандартной конфигурации FUSE битов, то есть той, с которой микроконтроллер поступил с завода. Приложение Khazama AVR Programmer работает с файлами дампов памяти *.hex.

Приложение было написано арабским программистом по имени Behzad Khazama (Иран, провинция Хорасан-Резави, город Себзевар). Последняя версия данного программатора вышла в середине 2011 года.

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

Софт Khazama AVR Programmer поддерживается операционными системами семейства Microsoft Windows – XP, Vista, 7, 8 (32- и 64-разрядными).

Распространение программы: бесплатная

Раньше, для прошивки AVR микроконтроллеров я использовал AvrUsb500 by Petka (STK500) и AVR Studio 4. Всё было нормально, пока микросхема FTDI FT232RL не дала сбой и не хотела работать. После этого начал искать альтернативы и наткнулся на Khazama AVR Programmer и . Программа сразу понравилась именно своим минимализмом, имеет простой и интуитивно понятный интерфейс. Маленькая да удаленькая. Вот с тех пор и пользуюсь этим замечательным АВР программатором.

Khazama AVR Programmer — возможности

Khazama работает со всеми ходовыми микроконтроллерами AVR, позволяет программировать flash и eeprom, прочитать содержимое памяти flash и eeprom, стирать чип, а также менять конфигурацию фьюз-битов (Fuses and Lock Bits). Всё необходимое для прошивки микроконтроллеров AVR. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность «убить» контроллер по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, что делает конфигурацию фьюзов более безопасной. И это тоже большой плюс.

Запись фьюзов (Fuses)

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

Программатор выполнен на основе драйвера от 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