USB-программатор (AVR): описание, назначение. Программаторы микроконтроллеров AVR Программаторы для авр контроллеров

В этом видеоролике я расскажу про программатор AVR, который я купил на ebay. Стоит этот программатор avr usb 3$. Это программатор avr микроконтроллеров. Я покажу как им пользоваться, как его первый раз включить, установить драйвера, какой для него есть софт, для него немного другой софт, то есть не такой софт как я показывал в видео о AVR910 программаторе, кстати, видео о AVR910 программаторе, точнее ссылка на это видео будет у меня в конце ролика, можете дождаться конца ролика, кликнуть по ней и вы перейдёте на видео об этом AVR910 программаторе.

Программатор usbasp avr я купил именно потому, что видео с AVR910 программатором, очень популярно, и мне задают очень много вопросов, задают как в комментариях, так и в личке. В комментариях задают мало вопросов, в личке задают очень много вопросов. Я пользуясь случаем, хотел попросить вас, если у вас есть вопросы, конкретно к теме которую я затронул в каком-то видеоролике, пишите мне пожалуйста в комментариях к данному видеоролику. Я на все комментарии получаю уведомления, и я вам обязательно отвечу. Я прошу, так как мне в личку, как правило, задают одни и те же вопросы. Я на них отвечаю, но эти вопросы и ответы видят только те, кто их задавал. Если вы спрашивали бы меня в комментариях, и я ответил, то скорее всего человек прочёл бы комментарий, и у него если и возник вопрос, как и у кого то кто уже спросил меня в комментариях, он получил мой ответ. На комментарии я обязательно отвечу.
Я зашёл на ebay и выбрал самый дешёвый программатор AVR. Это программатор за 3 $. Если посчитать, то себестоимость AVR910 программатора, если у нас в Молдавии покупать — микросхема AtMega8 стоит 2 $, гнездо USB mini стоит 0,4 $, кварц тоже стоит центов 0.35-0.40 $. В общем, тут наберётся как раз на 3 $. Может немного меньше, может немного больше, но это только детали.


Вам ещё нужно сделать плату, запаять всё. Я когда делал программатор AVR910, я его делал чисто из спортивного интереса. Мне было интересно, это были первые пробы SMD компонентов, у меня было очень много свободного времени, так как я был студентом, и я занимался им в своё удовольствие, более того для того, чтобы сделать этот программатор (AVR910), с микроконтроллером, нужно обязательно иметь другой программатор, которым вы запрограммируете микроконтроллер в программаторе AVR910.
Ну и давайте поговорим об программаторе usbasp avr. Первое что я вам скажу — купите себе их два. Не покупайте один, купите два. Объясню почему, сделан он мягко говоря по-китайски. Если посмотрите, вы увидите, что многие детали криво стоят, пайка, сказать что ужасная — ничего не сказать. Отверстия не заполнены припоем, то есть он работает, но качество его… Видно, что повторяемость очень плохая, есть большая вероятность, что какой-то из них может не работать.


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


Да, я и забыл сказать, я купил программатор не AVR910, он тоже для AVR, но это программатор USBasp. Программатор в свободном доступе, это товарищ из Германии его разработал, есть схемы, есть документация на него. У меня под данным видео будет ссылка на мою статью, в которой будут даны все ссылки на софт, на автора проекта. Но китайцы сюда добавил стабилизатор, то есть они немного модернизировали USBasp. Здесь стандартный ISP10 разъём. С программатором идёт такой шнурок, я уже его разрезал и подключил к микроконтроллеру. Я Толику обещал снять видео, и я подпаял к микроконтроллеру провода. Данный программатор USBasp имеет возможность выбора питания, то есть на программируемую схему я могу выбрать что именно я хочу, то есть я могу вообще не питать от программатора схему, вообще не поставив джампер, либо я могу выбрать питание от 5 В сразу от USB,


либо вот так поставив джампер и на программируемую схему пойдёт 3.3 В от USB через данный стабилизатор.


Схема соединения разъёма ISP10 (кликни для увеличения):


О программаторе для AVR больше нечего сказать, остаётся его только вставить в USB порт. Сейчас мы посмотрим, как он определился, поставим не него драйвера, и я покажу программы, с помощью которых можно им программировать. В AVR910 я показывал программу AVRosp, которой можно программировать, используя AVR 910 программатор. AVRosp нельзя пользоваться для использования программатора USBasp. На моём сайте вы скачаете архив, в котором найдёте несколько папок, папка драйвер, и папка софт. В папке драйвер находятся драйвера для этого программатора (UABasp). Я их люблю ставить по ближе к диску С, потому что потом их проще указать. Я их временно копирую на диск С. Теперь я в диспетчере устройств правой кнопкой выбираю «обновить драйверы», он конечно же не может найти, выполняем поиск, показываем откуда искать. Мы хотим с диска С искать. Жмём далее. У меня сейчас стоит Windows 7 x64. Образ оригинального диска, без никаких паков, это чистый windows. В ней ничего не отключено, всё по умолчанию. Я это всё говорю к тому, что AVR910 не хотел работать, точнее драйвера не имели цифровой подписи и windows их блокировал. AVR910 у меня в 64 битной windows 7 не работал. Я когда снимал видео, снимал в 32 битной WIndows, у меня стоят две системы. Всё, USBasp видится как устройство для windows 32.


Дальше уже нужны программы чтобы работать с программатором usbasp avr. Открываем папку софт.


Мне очень понравился avrdudeprog, это графический интерфейс под консольную программку AVR dude. Эта программа поддерживает как AVR910 программатор, так и USBasp. Кстати, данный avrdudeprog программирует при использовании 910 программатора в несколько раз быстрее по скорости, чем стандартный ARVRosp который я показывал в видео. Так что я вам рекомендую перейти на avrdudeprog, даже если у вас есть AVR910 программатор.


Подключаем наше устройство. Устройство запустилось, выбираем AtMega 16, и выбираем стереть всё. Микроконтроллер чист, и как видим он действительно чист, так как на дисплей у меня ничего не выводится.
Дальше выбираем, что мы хотим запрограммировать, ну и жмём программирование. Обратите внимание, как быстро будет идти программирование. Выводится информация, что биты сброшены, флешь очищена перед прошивкой. Было запрограммировано флешь, а потом флешь была прочитана и сверена с тем, что программировалось, то есть проверено, что ошибок нет. То есть была проведена верификация. Ну и как видим, у меня устройство запустилось.
Чем мне avrdudeprog не нравится, так это fuse. Дело в том, что с fuse всё очень и очень сильно напартачено в AVR, дело в том, что по datasheet запрограммированный fuse считается 0. То есть по умолчанию должны быть прямые fuse, то что запрограммировано — 0. Многие программисты считают, что если запрограммировано — должно быть 1. И программистов таких много, программ для программирования очень много, и кто-то придерживается того как в datasheet написано, а кто-то придерживается того, как он считает лучше. Галочка это запрограммировано, или галочка это не запрограммировано? В настройках можно выбрать прямые либо инверсные, и галочки меняются. В этих fuse начинающий 200% запутается. Даже 300%, то есть он залочит себе несколько раз микроконтроллер. Поэтому, я так же приложил несколько других программ для программирования. Обратите внимание, что avrdudeprog сразу работает, её не нужно устанавливать, просто запускаете exe файл, можно даже себе на рабочий стол отправить этот exe, то есть создать ярлык, и оттуда его открывать.
Есть ещё две очень интересные программы. Мне нравится, именно из-за fuse битов. Вообще мне очень нравится avrdudeprog, но для начинающих я бы рекомендовал всё таки eXtreme Burner, устанавливается она также как и обычные программы, ничего в этом сложного нет, просто жмём далее, далее, иногда читайте что написано, установили и пользуемся. Программа eXtreme Burner предлагает пойти на перезагрузку, но я не хочу этого делать, будет и без рестарта работать. Выбираем наш микроконтроллер. Мне не нравится, что ни в одной из них нет как в AVRosp кнопки AutoDetect, нажав на которую, программа считывает с микроконтроллера сигнатуры и сразу определяет что именно за микроконтроллер подключен. Удобно работать с fuse. В eXtreme Burner интерфейс имеет несколько вкладок, flach, eeprom, ну и fuse, вы разберётесь.


Нажимаем сначала прочесть все, программа считала fuse с микроконтроллера. И можно, нажав на кнопку «детали», поменять fuse. В программе eXtreme Burner нет непонятных галочек, а сразу написано, не запрограммировано, запрограммировано. И сделано точно так, как в спецификации AVR, то есть запрограммированно — 0. Единственное чем мне нравится eXtreme Burner, так это тем, что можно сбросить fuse по умолчанию. В данной программе всё тоже не совсем удобно.
Ещё более удобно с fuse в программе Khazama AVR Programmer. Вот такая наипростейшая программа, выбираем AtMega 16. В этой программе постоянно вылезает очень интересная ошибка.


Она не имеет ничего страшного, и сейчас я объясню почему она происходит. Дело в том, что AVR910 программатор как вы помните, имеет штыри, куда мы ставим джампер, и программатор понижает частоту. Дело в том, что по умолчанию идёт 1.5 МГц, а когда вы ставите джампер, частота падает в 4 раза. Так как программатор USBasp сделан таким образом, чтобы он был совместим с Arduino, то он сам переключает частоты, с быстрой на медленную, и Khazama AVR Programmer, уже может прошить любые контроллеры. AVR910 я AtMega которая тактируется на частоте 1 МГц, уже не могу запрограммировать без джампера, то есть мне приходится понижать частоту, для того, чтобы запрограммировать микроконтроллер. USBasp сам переключает частоты, и мне никакой джампер никуда ставить не нужно. Но по спецификации, AVR программатор, то есть программа, отправляет на программатор скорость, с которой должен тактироваться тактовый сигнал, то есть частоту. И в данной программе, можно выбрать частоту, но как я уже сказал, этот программатор сделан совместимым с arduino, то он уже не поддерживает b команды. И поэтому постоянно выходит данная ошибка. Она сильно напрягает, но она стоит того. Нужно много раз нажимать ОК, ОК, ОК. Но обратите внимание, что вы можете выбрать что вы хотите. Начинающему это очень удобно. К примеру, частота. Вот смотрите, нужно поменять частоту процессора — да ради бога, на что хочешь меняй. В avrdudeprog нужно сидеть и выбирать галочки, то есть по хорошему нужно будет сначала посмотреть datasheet, и потом, переключать частотные fuse, так как вам нужно. Естественно, легко ошибиться и можно накосячить. Здесь же всё есть. Но нужно постоянно нажимать ОК. fuse считываются в несколько приёмов, и поэтому нужно много раз нажимать. Если я буду считывать флешь — то мне только один раз нужно нажать ОК. Начинающим я рекомендую эту программу, из-за того, что вы не напортачите со fuse, то есть что-то испортить с fuse будет очень и очень сложно. Ссылку на программы я выложу в своей статье, ссылка будет под данным видео.
Я считаю, что покупка программатора usbasp avr — выгодная покупка, потому что стоит он копейки, примерно столько же, сколько и собрать его с нуля, то есть по стоимости компонентов. Работает программатор хорошо, единственное что хромает — культура производства, как я уже сказал — тут всё криво, микросхема даже запаяна со смещением, я рекомендую купить таких программаторов два. Реально ребята, стоят они копейки уже с доставкой, купите два, один будет как резервный. Вполне возможно, что один из них окажется нерабочим, я допускаю это. Лучше уже потратить 3 $ сверху, но сэкономите месяц времени, если вы вдруг будете покупать второй. Покупка, на мой взгляд, очень и очень выгодна, и я вам рекомендую это сделать.
Ну вот и всё, я надеюсь что это видео было вам полезным, ставьте лайки если вам оно понравилось, подписывайтесь на канал, если вы ещё не подписаны, и желаю вам всех благ, всего вам доброго. Пока, удачи.

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

Основой программатора является микросхема FT2232D . Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.

Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.

Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.

Выводы U2 (канал А):
24 - ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 - ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 - ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 - ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 - ADBUS4 – в режиме JTAG вход\выход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 - AСBUS0 – свободно программируемый вход\выход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 - AСBUS1 – свободно программируемый вход\выход во всех режимах.

В принципе, эти выводы многофункциональные. Их поведение определяется выбранным режимом при открытии порта.

Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().

40 -BDBUS0 – выход- в режиме UART TXD;
39 -BDBUS1 – вход- в режиме UART RXD;
28 - BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 - BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).

Ниже приведена печатная плата программатора

На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.

Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.

Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer"s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа.NET» М.,С-П. Питер, 2007.

Скачать исходники ПО и печатную плату в формате вы можете ниже

Борисов Алексей () г.Сызрань, Самарская обл.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 Микросхема AT93C46D-8S 1 В блокнот
U2 Микросхема FT2232D 1 В блокнот
VT1 MOSFET-транзистор

BSS84

1 В блокнот
С1 Конденсатор 0.01 мкФ 1 В блокнот
С2, С3 Конденсатор 27 пФ 2 В блокнот
С4, С5, С7, С9, С10 Конденсатор 0.1 мкФ 5 В блокнот
С6 Конденсатор 0.033 мкФ 1 В блокнот
С8 Электролитический конденсатор 10 мкФ 1 В блокнот
R1 Резистор

2.2 кОм

1 0.05Вт В блокнот
R2 Резистор

10 кОм

1 0.05Вт В блокнот
R3, R4 Резистор

27 Ом

2 0.05Вт В блокнот
R5 Резистор

470 Ом

1 0.05Вт В блокнот
R6, R7 Резистор

1.5 кОм

2 0.05Вт В блокнот
R8-R16 Резистор

Программатор 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»

Программатор – это аппаратно-программное устройство, которое служит для считывания или записи информации в запоминающее устройство (внутреннюю микроконтроллеров). В случае если радиолюбителю нужно один раз запрограммировать микроконтроллерное устройство, можно воспользоваться обычным программатором, который подключается к COM- или LPT- порту. Например, самым простым программатором AVR является кабель из 6 и 4 резисторов (программатор PonyProg).

С помощью обычного программатора можно загружать программы в формате hex во многие микроконтроллеры AVR, не тратя лишнего времени и средств. Кроме того, программатор можно использовать как внутрисхемный, благодаря чему можно программировать микроконтроллер AVR не извлекая его из устройства.

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

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

Как подключить USB-программатор?

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

Затем нужно установить драйвера, чтобы ОС могла корректно работать с данным устройством. После этого можно будет подключать микропроцессорное устройство к ISP интерфейсу. При программировании будет светиться второй светодиод.

Как правило, программатор имеет два интерфейса – один для подключения микроконтроллера, второй для подключения к компьютеру. Для того чтобы подключить микроконтроллер, можно воспользоваться режимом последовательного программирования ISP. А к компьютеру данное устройство подключается через стандартный USB-разъем.

Для управления программатором нужно устанавливать специальные программы. Лучше всего пользоваться оконными приложениями. Например, для работы с устройством можно использовать программы ExtremeBurner, Khazama, avrguge и другие.

Рис.1 AVR ISP

Программаторы, работающие под управлением и других любительских программ, очень просты. Однако большинство из них не может обеспечить такой функциональности, какой обладают фирменные средства разработки. Одним из самых популярных программаторов Atmel является AVR ISP (внешний вид на рис.1). С помощью AVR ISP можно запрограммировать любой микроконтроллер с ядром AVR через последовательный интерфейс SPI. Программатор подключается через COM-порт и работает под управлением .

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


Рис.2 Аналог фирменного программатора AVR ISP

На рис.2 приведена принципиальная схема авторского варианта AVR ISP. В отличие от своего прообраза он содержит только один микроконтроллер, обладая теми же функциями. В место ATmega8535 (AT90S8535) в базовом варианте применён микроконтроллер ATmega16. Он имеет вдвое большим объёмом памяти программ и данных, и сопоставим с ATmega8535 по назначению выводов и внутреннему устройству. Запись и обновление содержимого DD2 осуществляются через встроенную программу-загрузчик (boot-loader), которая использует для этих целей способность самопрограммирования микроконтроллеров AVR. Дополнительными программными средствами осуществляется так же согласование работы программы предназначенной для ATmega8535 с адресным пространством ATmega16 и использование прерывания TOV0 для отслеживания положения кнопки SB1 и управления линиями PD7, PC0…PC6.

Программатор подключается к любому свободному COM порту в системе через разъём X1. Напряжение 9…15 В подаётся на разъём X2 от отдельного источника питания способного отдавать в нагрузку ток не меньший чем 100 мА. Разъем X3 служит для внутрисхемного программирования или при программировании на отдельной панели.
На выводе 7 X3 присутствуют прямоугольные импульсы частотой 1.8432 МГц. Их можно использовать, если программируемый микроконтроллер настроен на работу с кварцевым резонатором либо с внешним тактовый генератором. В этом случае импульсы подаются на вход XTAL1. Устройства, не имеющие собственного источника энергии, можно запитать непосредственно от программатора через вывод 2 X3 (внутрисхемное программирование устройств с напряжением питания меньшим, чем 5 может привести к поломке!). Активизация и запрещение тактовых импульсов на выводе 2 X3, а также присутствие напряжения 5 В на выводе 7 X3, регулируются кнопкой SB1.

В ходе работы светодиод HL3 свидетельствует о нормальном функционировании программатора. HL1 будет светиться во время программирования микроконтроллера, а HL2 будет сигнализировать о наличии напряжения и тактовых импульсов (выводы 2 и 7 X3 соответственно).

Перед началом работы в DD2 нужно занести программу, находящуюся в Файле BootISP.hex (исходный текст в файле BootISP.asm) с помощью любого удобного программатора. FUSE-биты при этом должны выглядеть следующим образом:
CKSEL0 = 0 SUT0 = 1 BOOTRST = 0 EESAVE = 1
CKSEL1 = 0 SUT1 = 0 BOOTSZ0 = 0 CKOPT = 1
CKSEL2 = 1 BODEN = 0 BOOTSZ1 = 0 JTAGEN = 1
CKSEL3 = 1 BODLEVEL = 0 SPIEN = 0 OCDEN = 1


Рис.3 Процесс программирования

После того как программатор собран и подключён к компьютеру - приступают к загрузке текущей версии управляющей программы. Нажав на кнопку SB1(!), подают питание на разъём X2. Должен загореться светодиод HL1, что свидетельствует о переводе в режим обновления программного обеспечения. После этого запускают AVR Studio и через меню Tools -> AVR Prog открывают окно обновления “прошивки” AVR ISP. Далее нужно указать путь к загрузочному файлу, который по умолчанию имеет размещение C:\Program files\Atmel\AVR Tools\STK500\STK500.ebn, и начать программирование, нажав на экранную кнопку Flash -> Program(окно на рис.3). В конце завершения операции необходимо кратковременно снять напряжение, после чего программатор будет готов к применению. Связь осуществляется через меню Tools -> Program AVR -> Auto Connect. Вид окна программы поддержки AVR ISP приведен на рис.4.


Рис.4 Вид окна программы поддержки AVR ISP

Интерфейс программы очень простой и не требует подробных пояснений. Здесь только необходимо обратить внимание на несколько важных деталей. В списке устройств на вкладке Program в окне Device, кроме микроконтроллеров с ядром AVR (ATmega, ATtiny, AT90x и др.), доступны также некоторые модели семейства MCS-51 (названия начинаются с AT89S). Программирование AT89S через SPI принципиально ни чем не отличается от подобной операции у AVR-микроконтроллеров, за исключением одного существенного различая. Сигнала RESET у MCS-51 (в отличие от AVR) имеет активный высокий уровень. Поэтому при программировании моделей AT89S резистор R2, предотвращающий запуск микроконтроллеров AVR, необходимо подключить к шине питания программатора.

Иногда случается так, что с первого раза не удается установить связь программатора с устройством. Если не считать ошибок монтажа и неправильной установки FUSE-битов, запрещающих работу SPI (SPIEN, DWEN и RSTDISBL), вероятнее всего проблема заключается в слишком высокой частоте тактовых импульсов на линии SCK. В этом случае необходимо уменьшить скорость последовательного интерфейса. Это можно сделать вручную через вкладку Board (окно ISP Freq). Модуль SPI ведомого микроконтроллера не может работать на частотах превышающих F ­clk ­/4.

Программатор был проверен в работе с версий 4.12…4.16 со многими типами микроконтроллеров. Никаких ошибок при этом не было выявлено.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 ИС RS-232 интерфейса

MAX232

1 В блокнот
DD2 МК AVR 8-бит

ATmega16

1 В блокнот
DA1 Линейный регулятор

LM7805

1 В блокнот
VD1 Выпрямительный диод

1N4007

1 В блокнот
R1, R2 Резистор

10 кОм

2 В блокнот
R3 Резистор

4.7 кОм

1 В блокнот
R4 Резистор

510 Ом

1 В блокнот
R5 Резистор

6.8 кОм

1 В блокнот
R6 Резистор

3.3 кОм

1 В блокнот
R7-R9 Резистор

1 кОм

3 В блокнот
C1, C5 470 мкФ 16 В 2 В блокнот
C2, C3, C6, C7 Электролитический конденсатор 1 мкФ 16 В 4 В блокнот
C4, C8, C11 Конденсатор 0.1 мкФ 3 В блокнот
C9, C10 Конденсатор 30 пФ 2 В блокнот
ZQ1 Кварц 3.6864 МГц 1 В блокнот
HL1 Светодиод