Прошивка atmega8 через com порт. Программатор Громова: назначение, описание

Несложный в плане изготовления 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 порт. Для этого прекрасна подойдет программа UniProf , скачать которую вы можете на нашем сайте в разделе радиолюбительский софт .
Также еще потребуется плата устройства к которой мы подключим программатор и тестовая прошивка для микроконтроллера.

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

Заключение:



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

Но в первом случае придется выложить не маленькую сумму за программатор, а во втором ждать месяц – полтора пока доставят. Я предлагаю собрать программатор самим, своими руками, тем более там ничего сложного нет, всего несколько диодов, резисторов и светодиод. На рисунке ниже его принципиальная схема :



Для подключения к компьютеру лучше воспользоваться фабричным кабелем для COM порта. Со второго конца кабеля разъем при этом отрезается. Если все же кто-то будет пользоваться для подключения не кабелем, а одним разъемом СОМ с припаянными проводками, то рекомендую длину проводков делать не более полуметра. Дело в том, что фабричный кабель идет экранированный, а на проводки будут наводиться помехи.



По этой же причине, длина проводков идущих с программатора на программируемый микроконтроллер, должна быть не более 10-15 См. Диоды я взял импульсные КД 522. Распиновку разъема можно легко найти в интернете, либо воспользоваться для подключения следующей схемой:


Обе схемы, и первая, и вторая одинаковые.

Программатор может работать с разными оболочками для прошивания. Например, с PonyProg2000, UniProf и avrdude. Я предпочитаю UniProf. У неё простой интерфейс, на русском языке, на скрине ниже изображено окно, которое открывается после запуска программы:



При прошивке микроконтроллера фьюзы в UniProf устанавливаются обычным образом как в даташите. В PonyProg2000 фьюзы выставляются инвертированно. На печатной плате добавлена индикация включения питания на светодиоде, включенном последовательно с ограничивающим резистором, между плюсом питания и землей. Мною была переразведена под свои нужды печатная плата, для того чтобы можно было нарисовать рисунок маркером:



Выкладываю несколько фото, сделанных во время сборки программатора:



Фото платы со стороны пайки выводов:



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

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

Выбор мой пал на микросхему GD75232 , часть элементов которой, при соответствующем включении я задействовал для данного программатора.Обязательно 10-я и 11 ножки микросхемы должны соединяться с землёй.(общим проводом)

Эта микросхема стоит на материнских платах, её роль - как раз согласование сигналов внешних устройств с COM портом. На иллюстрации из даташита видно, какие элементы как подсоединены, (не стану расписывать, что как и зачем, об этом можно прочитать в описании микросхемы). Я её специально не покупал, а снял с "убитой" материнки.

Печатную плату не привожу, так как отрезал ножницами по металлу кусок платы вместе с микросхемой, в итоге размеры платы получились 20х30 мм, проводники припаял к 3-м разъёмам

1- питание +5в

2- разъём com порта

3- разъём ISP для программирования

Использовать программатор можно с известной программой Pony Prog, в установках выбрать интерфейс (Serial, COM1) для COM-порта и любой из 3-х видов интерфейсов, которые там перечисляются, без разницы, работает со всеми (JDM API, SI Prog I/0, Si Prog API), картинки это поясняют. Остальные установки в настройке порта остаются в программе по умолчанию.

Программатор на столько прост, что не содержит ни резисторов ни конденсаторов, только одна единственная микросхема. Цепляете питание +5в, подключаете к панельке, в которую вставлен микроконтроллер AVR, приготовленный для программирования и программируете, как обычно в ISP режиме.

Схема проверена и испытана.

Буфферизация

Простые программаторы эффективны пока речь идёт о программировании микроконтроллеров либо в DIP корпусе (удобно, когда можно микросхему вынуть из панельки на рабочей плате и воткнуть в панельку на программаторе, а потом, запрограммировав, поставить на место), либо когда на рабочей плате выводы микроконтроллеров не сильно нагружены внешними элементами схемы.

Есть отработанные хорошие схемы простых программаторов с буфферизированными шинами типа STK200 / 300, собраные на микросхемах серии 244, 245, но они предназначены для подключения к LPT порту, который в последнее время уже редкость на современных материнских платах. Теперь чаще встречаются лишь USB и COM порты, а программаторы USB более сложны для начинающих радиолюбителей в повторении.

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

В последнее время всё чаще применяются SMD компоненты, и микроконтроллеры применяют уже в корпусах типа SOIC и впаивает непосредственно в плату, без панелек. В этом случае для повторного перепрограммирования надо уже либо программировать его прямо на плате, либо выпаивать чип, а в некоторых случаях приходится предварительно отключать нагрузку на его выводах в схеме, если получается, что внешние элементы «сажают» импульсы программатора, если только его шины не были буфферизированы (умощнены по току для работы с повышенной нагрузкой).

Из личного опыта скажу, что этими недостатками страдают многие широко известные простые программаторы, например на 5-ти резисторах, или известная схема на транзисторе, резисторах и стабилитронах: при повышенной нагрузке на шинах программатора начинаются проблемы. Для того, чтобы не делать новый программатор, есть простой путь улучшить нагрузочные характеристики программатора - это буфферизировать уже имеющиеся шины для сигналов, всего лишь добавив ещё одну микросхему.

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

Подсоединив к нашему программатору такое дополнение между выводами программатора и разъёмом для программирования, мы получим устройство с повышенной нагрузочной способностью. У нас три сигнала с СОМ порта работают на приём, и один сигнал (MISO) работает на передачу. Припаяв к уже имеющейся схеме посредством коротких проводков ещё одну микросхему буффера, я протестировал работу новой схемы и, сравнив с тем, что было прежде, убедился, что эффект есть. На тех платах, где я прежде сталкивался с подобной проблемой при программировании, мне приходилось отсоединять нагрузку на время программирования, а теперь с новой схемой этого делать уже не потребовалось.

Рекомендую всем обладателям простых программаторов доработать имеющуюся у вас схему таким же образом, если при программировании вы сталкивались с подобными проблемами, добавив микросхему буффера,не обязательно эту, можно использовать и другие подобные по функциональным свойствам микросхемы типа 74HC125, 74HC126 на базе этих микросхем,можно переводить выходы программатора вообще в высокоимпедансное состояние,что позволит не отключать разъём ICSP от платы,особенно это удобно при работе с макетной платой, вариаций применения моего программатора в качестве базового модуля очень много,это и программирование микросхем типа 24Схх 93Схх а так же для программирования PIC контроллеров, но эту тему я возможно разовью чуть позже в данной статье.

Z - состояние шин на выходе

Лучшее- враг хорошему (с).

Всё вроде работает,но стоит добавить в схему,что либо ещё,как она из маленькой превращается в "монстра", а что делать? Иногда в процессе отладки приходится идти на это ради комфорта в работе, ведь порой по нескольку десятков раз надо втыкать разъём ICSP повторно перепрограммируя микроконтроллер, так это занятие надоедает порой, а если оставить программатор постоянно подключенным,к схеме,то схема программатора будет влиять на работу устройства, но есть решение о котором я упоминал выше, это перевести состояние шин в высокоимпедансное - Z состояние, тогда схема программатора может быть подключена сколь угодно долго и не будет теперь шунтировать шины микроконтроллера,ради такого случая нашёл эту микросхему и использовал её в качестве буффера.Осуществлять эту процедуру мы будем посредством кнопки S1 которая при замыкании будет переводить выходы программатора в рабочий режим , программирования подсоединяя его сигналы к схеме. На момент программирования, надо кнопку удерживать в нажатом состоянии,а после того, как процедура программирования пройдёт успешно,отпустить.При разомкнутом состоянии кнопки выходы программатора переводятся в состояние Z

Из даташита 74HC125 ,по схеме и таблице истинности видно,что если подать на выводы А "единицу" схема переводит выходы в высокоимпедансное состояние (фактически вообще отключается от нагрузки) и вдобавок у этой микросхемы ещё большая нагрузочная способность,чем у микросхемы,которую я выбрал в качестве буффера в предыдущей схеме..

в общем на ваш суд выкладываю очередную схему,и сопровождающие картинки к ней.

Владимир Науменко

г. Калининград.

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

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

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

Схема первая

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Схема вторая

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

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

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

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

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

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


Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы 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 можно по