Atmega программатор: РадиоКот :: Программаторы для микроконтроллеров Atmel – Миниатюрный USB программатор для AVR микроконтроллеров / Habr

РадиоКот :: Программаторы для микроконтроллеров Atmel

РадиоКот >Лаборатория >Цифровые устройства >

Программаторы для микроконтроллеров Atmel

Эта статья — попытка обобщить некоторый разрозненный материал по программаторам для популярных сегодня микроконтроллеров фирмы Atmel. Материал не претендует на полноту, однако основан на личном опыте, в чем и состоит, на мой взгляд, его основная ценность.

Схема программатора Fun-Card

Программатор предназначен для работы под управлением программы ICProg, является функциональным аналогом «5 проводков» (до предела упрощенная схема STK200+/300, о которой ниже) и представляет собой несколько резисторов.
Программатор подключается к LPT-порту. Разъем устанавливается непосредственно на плату программатора, кроме того, на плате предусмотрена кроватка для программирования контроллера AT90S2313, а также выведены сигналы SCK, MOSI/MISO и Reset.
Программируемая микросхема может брать питание с порта LPT, в этом случае, на выводах 2, 3, 4 порта должны быть установлены единицы, а вывод 2 разъёма ISP должет быть подключен к выводу Vcc микросхемы. Некоторые порты могут не потянуть такой нагрузки, в этом случае придётся использовать внешний источник питания (5В).

Источником тактовых импульсов для микросхемы также может служить LPT порт. В этом случае вывод 3 разъёма ISP (LED) должен быть подключен к выводу XTAL 1 программируемой микросхемы.
Естественно, программа программатора на PC должна понимать эти режимы работы (для работы с этой схемой нужно воспользоваться программой IC-Prog, где при выборе типа программатора следует установить «Fun-Card Programmer»).
Печатная плата в формате SL5 – здесь, программа ICProg и драйвер под ХР – здесь.

Схема программатора STK200+/300

Большая часть нижеследующего описания и сама схема взята со странички https://ln.com.ua/~real/avreal/adapters.html, крайне рекомендую посетить ее.

Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11). При необходимости программной генерации тактового сигнала XTAL1 используется линия LED адаптера, исходно предназначенная для включения светодиода (на печатной плате ver.1 установлен только светодиод, сигнал XTAL1 на разъем программирования не заведен, а вот в ver.2 на третьем контакте есть сигнал XTAL1).
Буферизованные адаптеры запитываются от платы с программируемым процессором, т.е. питание подаётся на программируемую плату, а с неё на адаптеры поступает через шлейф.
Адаптер собран на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, «отключив» адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Поскольку разводка рассчитана на установку LPT-разъема непосредственно на плату, для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть 🙂 и вывести с программатора шлейф до платы с микроконтроллером длиной 20-25 см.
На плате предусмотрена установка светодиодов «питание» и «программирование» (на схеме не показаны).
Схема работает с программами AVR ISP, CodeVision AVR, WinAVR и другими.
В ряде случаев (например, для программирования нескольких контроллеров одной и той же прошивкой или в случае отсутствия на плате места под ISP-разъем) могут оказаться полезными «платы расширения» для различных контроллеров, содержащие кроватку для установки контроллера и минимально необходимую для работы обвязку. Я сделал такие платы под AT90S2313/ATTiny2313, ATTiny26, ATTiny13, ATMega8 и ATMega16. Кроме того, в версии ver.1 кроватки для ATTiny26 и ATTiny13 есть непосредственно на плате.
Обе версии платы программатора и все «платы расширения» в формате SL5 – здесь.
Вот так выглядит один из моих STK в окружении плат расширения:

Схема программатора AVR910 с универсальным COM/USB интерфейсом

AVR910 – весьма известный аппнот Atmel, давший название целому классу устройств.
Сейчас под AVR910 понимают как правило протокол, по которому происходит обмен данными между компьютером и программатором.
В сети на данный момент можно найти несколько вариантов таких программаторов, различающихся способом реализации интерфейсной части. Традиционно все эти программаторы собираются на основе микроконтроллера AT90S2313 или (в редких случаях, при наличии модифицированной прошивки) ATTiny2313.
На схеме представлен программатор, способный работать как через CОМ, так и через USB.
Переключение типа интерфейса происходит при помощи джампера J1. При работе через USB питание программатора осуществляется непосредственно от этого порта компьютера, причем в этом режиме имеется полная гальваническая развязка программатора (и, соответственно, программируемого устройства) от компьютера, более того, при замыкании перемычки J2 программируемое устройство может питаться от программатора (до 100 мА).

При работе через СОМ-порт развязка отсутствует, а питание программатора осуществляется, как обычно, от программируемого устройства.
Интерфейс USB реализован на микросхеме FT232BM в стандартной схеме включения, в качестве согласователя уровней для СОМ-порта применена MAX232.
Вариант разводки печатной платы, схема и прошивка лежат здесь. Разводка платы не оптимальна, поскольку осуществлялась для конкретного корпуса с заранее заданным расположение разъемов, органов управления и индикации. Кроме того, на плате разведена кнопка для принудительного сброса программируемого МК, реально она не нужна, поскольку сброс корректно осуществляется программным образом. Также на плате присутствует разъем для программирования МК самого программатора.
Для подключения программатора к СОМ-порту служит трехконтактный разъем PLS и потребуется изготовить специальный шнурок.
Замечу, что поскольку здесь используется стандартная разводка шнурка для ISP, с этим программатором можно использовать платы расширения от STK200+/300.
Этот комплект у меня выглядит вот так:

Этот программатор работает у меня под управлением CodeVision AVR 25-ой сборки. Такой выбор обусловлен возможностью регулирования скорости порта непосредственно из программы. Программатору свойственны некоторые особенности в силу применения микросхемы FT232BM, в частности, необходимо выставить минимальную задержку в свойствах соответствующего виртуального СОМ-порта (подробнее смотрите статью USB — RS-232 преобразователи). После этого программирование осуществляется довольно быстро (хотя и чуть медленнее STK200+/300, что, естественно, вызвано последовательным способом передачи данных в программатор).

Схема AVR910-совместимого USB программатора (схема Prottoss»a)

Автором этой конструкции является Рыжков Андрей, известный также под ником PROTTOSS. Описанию этого программатора посвящена одна из страничек его сайта, там же можно найти контакты для связи с автором. Здесь этот материал публикуется с разрешения автора, так что все формальности соблюдены. :)
Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в Application Note AVR109: Self Programming

Исходно схема устройсва выглядит следующим образом:

Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи. Светодиод VL3 служит для сигнализации подачи питания на программатор. Резисторы R10 — R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера. С помощью J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Переключать джампер можно «на ходу», так как управляющая программа МК программматора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению операции записи/чтения. Данный джампер введен для возможности программирования МК AVR, тактированных от внутреннего генератора 128 кГц.

Схема была несколько переработана, в нее внесены следующие изменения.
Питание МК осуществляется от USB, но не через диоды, как в исходной схеме, а через LDO стабилизатор LM1117 на 3.3В. Замечу, что при таких напряжениях питания (как 3.3 В здесь, так и 3.6 В в исходной схеме) и частоте кварца 12 МГц Atmel не гарантирует устойчивую работу своих МК, однако к чести производителя ни один из тестировавшихся микроконтроллеров работать не отказался. Тем не менее, стоит учитывать такую возможность. Еще раз: чем больше напряжение питания (в пределах до 5В, естественно), тем выше вероятность того, что контроллер запустится и будет устойчиво работать, поэтому многие отказываются от LDO в пользу двух диодов. Да, предохранитель тоже отсутствует, но, если добавить, хуже точно не будет.
В обе цепи питания МК (VCC и AVCC) введены дополнительные LC-фильтры в виде SMD-индуктивностей на 10мкГн и конденсаторов 0.1 мкФ (в принципе, дроссель в AVCC можно заменить перемычкой, его установка — совсем уж перестраховка), кроме того, на плате появился дополнительный джампер, позволяющий запитывать целевую плату от программатора напряжением 5В или 3.3 В или, естественно, вообще не питать ее от программатора. В цепь питания целевой платы также включена индуктивность и установлен диод 1N4148, препятствующий попаданию питающего напряжения с целевой платы (если оно там есть) на программатор. Замечу, что поскольку на диоде имеет место падение напряжения, то напряжение питания целевой платы будет меньше заявленного на величину этого самого падения. В зависимости от диода и некоторых других условий теоретически оно может снизиться настолько, что его не хватит для нормального функционирования целевой платы. Для уменьшения эффекта можно использовать в этой цепи диод Шоттки, а вообще, может быть стоит вообще отказаться от такой возможности, решайте сами, насколько оно вам надо… :)
Исчез джампер NORM/MOD, предназначенный для ввода программатора в режим обновления прошивки, вместо этого на плате установлен полноценный разъем для программирования МК программатора (разъем имеет несколько нестандартный вид и представляет собой контактную гребенку PLS-6, на которую выведены следующие сигналы в последовательности MOSI-MISO-SCK-Reset-Vcc-GND. В такой же последовательности эти сигналы расположены на выводах МК ATMega16 в корпусе DIP-40, именно оттуда я ее и «срисовал». Такой разъем занимает меньше места на плате и как правило проще разводится, чем стандартный 10-ти контактный ISP-коннектор, поэтому лично я часто им пользуюсь в своих конструкциях).
Кроме того, уменьшены до 220 Ом последовательные резисторы в линиях программирования (вообще, их номинал — отдельный открытый вопрос) и до 22 Ом в линиях USB.
Все эти изменения можно проследить на печатной плате (кроме изменения номиналов резисторов, в подписях элементов они оставлены прежними), разводку которой можно скачать в конце статьи. Плата получилась односторонняя с парой перемычек и рассчитана на установку МК ATMega8 в кроватке, у которой удалены неиспользуемые выводы. Можно, конечно, и впаять туда Мегу, откусив лишние выводы, но это на ваш страх и риск. Собранный программатор выглядит так:

После сборки программатора следует прошить МК в нем (прошивка в конце статьи), при этом фьюзы для МК нужно выставить следующим образом:

Теперь, если все собрано правильно, при подключении программатора к ПК обнаружится новое устройство и потребуется установка драйверов. Драйвера, естественно, без цифровой подписи, так что просто игнорируем предупреждения ОС по этому поводу. В общем-то, на этом установка и заканчивается. Если у вас не ХР, а Win2000, то требуются некоторые дополнительные манипуляции, за подробным описанием которых (как, впрочем, и всей конструкции вцелом) я попрошу вас обратиться на сайт автора. В системе должен появиться новый виртуальный СОМ-порт, через который и работает этот программатор, стоит настроить номер этого порта и скорость. Естественно, используемый вами софт нужно будет настроить на работу именно с этим портом.

Вот еще вариант платы этого программатора на микроконтроллере в корпусе TQFP, делал под конкретный корпус, схема та же, работает не хуже:


При всем уважении к автору не могу не заметить, что среди повторивших эту схему встречаются люди, у которых она работать отказывается. Сложно объективно сказать, с чем это может быть связано, однако лишний раз призову к соблюдению рекомендаций и внимательной сборке устройства. В остальном, из личного опыта, претензий к программатору нет, работает достаточно устойчиво (несколько раз наблюдались сложности при длинных шлейфах к программируемому устройству, другие программаторы в этих же условиях сбоя не давали), скорость приемлемая, но не очень высокая, естественно.
В качестве возможных доработок могу предложить не питать МК программатора пониженным напряжением, а поставить на линии USB стабилитроны, чтобы ограничить напряжение на них. Идея не проверялась.

Лично я свой первый МК AT90S2313 программировал с помощью Fun Card, потом собрал и до сих пор плотно использую несколько вариантов STK200+/300, а с AVR910 работаю в основном в «полевых условиях», когда требуется подключение программатора к ноутбуку без LPT-порта.. Вот такая вот эволюция..

Вопросы, как обычно, складываем тут.

Файлы:

Плата Fun Card в формате SL5
Софт для Fun Card
Платы в формате SL5 для STK200+/300
Схема (RusPlan6), плата (SL5) и прошивка (hex) для AVR910
Плата (SL5), прошивка (hex) и драйвера для USB AVR910 от PROTTOSS»a
Плата (P-CAD 2006) для USB AVR910 от PROTTOSS»a на Atmega8 в корпусе TQFP (SMD вариант)


Как вам эта статья?

Заработало ли это устройство у вас?

Миниатюрный USB программатор для AVR микроконтроллеров / Habr

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

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

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

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

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

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

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

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

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

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

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

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

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

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

Khazama AVR Programmer

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

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

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

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

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

Простейший программатор для ATmega8 | Полезное своими руками

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

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

А чтобы залить нужную прошивку в АТМЕГу, никак не обойтись без программатора. Далее мы рассмотрим две самые простые и проверенные временем схемы программаторов.

Схема первая

С помощью этого программатора можно прошивать практически любой AVR-контроллер от ATMEL, надо только свериться с распиновкой микросхемы.

СОМ-разъем на схеме — это «мама».

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

Файл печатной платы открывать с помощью популярной программы Sprint Layout (если она у вас еще не установлена, то качайте 5-ую версию или лучше сразу 6-ую).

Как понятно из схемы, для сборки программатора потребуется ничтожно малое количество деталек:

Вместо КТ315 я воткнул SMD-транзистор BFR93A, которые у меня остались после сборки микромощных радиомикрофонов.

А вот весь программатор в сборе:

Питание (+5В) я решил брать с USB-порта.

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

Если же ваша микросхема б/у-шная, то без внешнего кварца она может и не запуститься. Тогда лучше ставьте кварц на 4 МГц, а конденсаторы лучше на 33 пФ.

Как видите, я кварц с конденсаторами не ставил, но на всякий случай предусмотрел под них места на плате.

Заливать прошивку лучше всего с помощью программы PonyProg (скачать).

Прошивка с помощью PonyProg

Заходим в меню Setup -> Calibration -> Yes. Должно появиться окошко «Calibration OK».

Далее Setup -> Interface Setup. Выбираем «SI Prog API» и нужный порт, внизу нажимаем «Probe», должно появиться окно «Test OK». Далее выбираем микроконтроллер «Device -> AVR micro ATmega8».

Теперь втыкаем микроконтроллер в панельку программатора, и подаем питание 5 вольт (можно, например, от отдельного источника питания или порта ЮСБ). Затем жмем Command -> Read All.

После чтения появляется окно «Read successful». Если все ок, то выбираем файл с нужной прошивкой для заливки: File -> Open Device File. Жмем «Открыть».

Теперь жмем Command -> Security and Configuration Bits и выставляем фьюзы, какие нужно.

Тщательно все проверяем и жмем «OK». Далее нажимаем Command -> Write All -> Yes. Идет прошивка и проверка. По окончании проверки появляется окно «Write Successful».

Вот и все, МК прошит и готов к использованию!

Имейте в виду, что при прошивке с помощью других программ (не PonyProg) биты могут быть инверсными! Тогда их надо выставлять с точностью до наоборот. Определить это можно, считав фьюзы и посмотрев на галку «SPIEN».

Схема вторая

Еще одна версия программатора, с помощью которого можно залить прошивку в микроконтроллер АТМЕГа (так называемый программатор Геннадия Громова). Схема состоит всего из 10 детатей:Диоды можно взять любые импульсные (например, наши КД510, КД522). Разъем — «мама». Питание на МК (+5В) нужно подавать отдельно, например, от того же компьютера с выхода USB.

Все это можно собрать навесным монтажом прямо на разъеме, но если вы крутой паяльник и знаете, что такое smd-монтаж, то можете сделать красиво:

Программировать только программой Uniprof. Тут хорошее описание программы: http://www.getchip.net/posts/025-uniprof-universalnyjj-programmator-dlya-avr/

Алгоритм прошивки с помощью программатора Громова

Программатор с установленной микросхемой подключаем к СОМ-порту компьютера, затем запускаем Uniprof, затем подаем питание на микроконтроллер. И первым делом проверяем, читаются ли фьюз-биты.

Если все ок, выбираем файл с нужной прошивкой и жмем запись.

Будьте предельно внимательны и осторожны, потому что если глюканет при записи фьюзов, то МК либо на выброс, либо паять схему доктора (а она сложная). Если поменяете бит SPIEN на противоположный — результат будет тот же (к доктору).

USB программатор для микроконтроллеров ATMEL

Микроконтроллеры фирмы ATMEL успели завоевать широкую популярность. Их программирование перед применением можно выполнить непосредственно в плате готового устройства через несложный ISP кабель, подключаемый к LPT порту персонального компьютера или кабель чуть посложнее, подключаемый к COM порту. Но в настоящее время всё больше материнских плат выпускается без того и другого, а в ноутбуках LPT исчез уже давно, сменившись интерфейсом USB. Впрочем, под этот интерфейс программаторы тоже существуют и доступны.

Для масштаба рядом лежит обычный 5 мм светодиод.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых МК

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325,
ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401



Вместе с программатором поставляется 10-жильный летночный кабель с разъёмами.

Питание программатора берется с USB порта компьютера.

На плате программатора имеется место для распайки LDO стабилизатора напряжения на 3,3В, но сам он не распаян.
Программатор поддерживается программой AVRDUDE. Сама программа консольная, но под неё есть графические оболочки. Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Перед началом работы с программатором потребуется скачать драйвер со страницы разработчика.
Также программатор поддерживается средой разработки Arduino.

Для программатора существует прошивка под названием AVR-Doper, превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск.

USBasp программатор микроконтроллеров AVR на Atmega8 своими руками

В данной статье мы опишем „шаг за шагом” этапы изготовления 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.

Скачать прошивку, рисунок печатной платы и драйвер USBasp программатора (unknown, скачано: 1 894)

Оригинал статьи

AVR. Учебный курс. Трактат о программаторах

Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
 

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

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

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

Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).


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

  • MISO — данные идущие от контроллера (Master-Input/Slave-Output)
  • MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
  • SCK — тактовые импульсы интерфейса SPI
  • RESET — сигналом на RESET программатор вводит контроллер в режим программирования
  • GND — земля

Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:

 

Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.
 

Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.
 

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.
 

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:
 

  • Программатор Громова.
    Простейшая схема, работает через оболочку UniProf(удобнейшая вещь!!!), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂
  • STK200
    Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.
  • FTBB-PROG.
    Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard

Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:

  • USBASP
  • AVRDOPER
  • AVR910 Protoss

Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.
 

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

Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.
 

Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:

  • HVProg от ElmChan
  • Paraprog
  • DerHammer

 

А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.
 

Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.
 

Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.

 

Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.
 

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

Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)


 

Делаем COM программатор для AVR микроконтроллеров. — GetChip.net

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

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

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

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


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

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

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

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

Общие рекомендации:

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

Заключение:

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

Ссылки:
Сайт Геннадия Громова, автора Algorithm Builder

(Visited 99 451 times, 1 visits today)

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

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