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

Автор: | 03.03.2010

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

Схема COM программатора для AVR

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

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

Детали для COM программатора для AVR

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


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

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

Собираем COM программатор для AVR

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

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

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

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

Заключение:

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

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


(Visited 43 832 times, 7 visits today)

Делаем COM программатор для AVR микроконтроллеров.: 255 комментариев

  1. alexandershahbazov

    Сижу на 5 проводках . Начал делать STK200+/300 на SN74HC244N .
    Мой LPT порт уже не печатает , но пока прошивает . Первый раз мне
    самому сделали STK200 и в один прекрасный день мой Tecra 8100 завыл ,
    еле успел с другой комнаты чтобы отключить . Подошел к AVR только
    через 2 месяца .
    Давно хотелось сделать программатор на СОМ и USB портах . Программирую
    на CodeVisionAVR 2.04.4a . Там есть тип программатора на СОМ порте
    «Atmel AVRProg(AVR910)» . Ваша схема понравилась своей простотой .
    Но как ей удобно воспользоваться , находясь на CodeVision , не знаю .
    Не обязательно этой , а любой другой , по возможности такой же простой , но которую можно было бы увидеть на CodeVision .
    Точнее какой программатор на СОМ порте можно посоветовать при работе с
    CodeVision .
    Спасибо за ответы в письме .

  2. GetChiper Автор записи

    Наверное, Вам нужно обратить внимание на AVR910-клоны программаторов и сразу в USB варианте. Неплохой вариант можно посмотреть у протоса http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm
    Так как у Вас уже есть LPT программатор, то проблем с изготовлением не будет.

  3. alexandershahbazov

    Ссылочку посмотрел . Сложноват . Но все равно деваться некуда , скоро
    кроме USB ничего не останется …

  4. haosx86

    А не надёжнее ли будет вместо делителя напряжения использовать стабилитроны на 4.7 вольт?

  5. GetChiper Автор записи

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

  6. haosx86

    В старой книжке про сопряжение простых ацп с компьютером через RS-232 пользовались такой связкой — Пин-ком-порта -> резистор 7.2 kОм -> стабилитрон на 4.7 вольт параллельно и к входу АЦП. Там тоже должны были быть уровни 0 и 5 Вольт. Собирал, как не странно — работало без сбоев даже на переходнике ЮСБ-ком(хоть и страшно медленно). Уровни сигналов после резистора и стабилитрона были 0.7 вольт — «0», ~4,6вольт — «1»
    Собрал сначала по схеме со стабилитронами — микроконтроллер не обнаруживался вашей программой, но сигнал ресет на МК шёл. Перепроверил ещё раз — не работает. Сделал 1 в 1 эту схему. При подаче питания микроконтроллер не стал выполнять свою программу(моргание 1м светодиодом), результат тот же, что и с первой схемой. Взрывов и дыма не наблюдал)

  7. haosx86

    Похоже своими неумелыми руками спалил свою Atmega32(

  8. haosx86

    Кто-нибудь тестировал этот программатор с переходником юсб-ком?

  9. GetChiper Автор записи

    Если есть LPT порт сделай программатор на нем. Работает деревянно — попробуй перепроверить-запрограммировать свою мегу им.
    Вообще, для начала, лучше мучать ATtiny2313 — не так жалко палить 🙁 (хотя совет уже не в тему).

  10. haosx86

    Живу далеко не в большом городе. У нас с МК проблема, заказывать — долго ждать, ох эта почта…эти Атмега32 заказывал. Вроде не спалил. ЛПТ нет никак. вообще( Друга не хочется напрягать каждый раз. МК вроде бы жив, но программатор похоже не работает(или он не совместим с моим переходником ЮСБ-ком). Ещё запасная есть, но не хочу спалить сразу и её)
    МК должен начинать выполнять программу при подключении к программатору ком?
    P.S. Очень интересует вопрос про переходник.

  11. GetChiper Автор записи

    Этот программатор, однозначно, не будет работать через переходник ЮСБ-ком, так как для программирования используется нестандартный режим работы COM порта — переходники так работать не могут (разве что он сделан на микросхеме FT232RL).
    Через пару статей будет статья о том как сделать простой USB программатор (вот только определюсь какой из них будем делать).

  12. haosx86

    ещё где-то был PCI адаптер ком, там по идее полная эмуляция?

  13. haosx86

    MCS9835 не захотел работать. Безобразие(

  14. GetChiper Автор записи

    Как так получилось что у тебя в башне нет ни одного COM порта (MCS9835 вроде в ноутбук не засунеш)?
    Ну тогда точно придется делать USB программатор 🙂

  15. haosx86

    MCS9835 работает ещё хуже, чем ЮСБ переходник. В башне лпт и ком нет.

  16. GetChiper Автор записи

    «COM порт — к нему особых требований нет… Да, использовать переходник USB-COM не удастся — то есть оно теоретически работает… Но страшно медленно.» это фраза от создателя UniProf http://avr.nikolaew.org/progr.htm.
    Попробуй поставить галочку «Тормоз» и поиграться с установкой задержки записи «F2» при программировании через переходник — может что-то и получиться.

  17. haosx86

    Пробовал. Выставлял макс. задержку — 50 — нажимаю ещё раз F2 — снова в поле ввода значение по-умолчанию — это нормально?

  18. GetChiper Автор записи

    Никогда задержкой не пользовался — не знаю как оно работает.
    Все таки USB программатор неизбежен :)?

  19. Old_miller

    доброго времени суток..
    я тоже заинтересовался контроллерами, давно читаю разные форумы, вот что мне попалось про изготовление программатора: http://avr.ru/solution/device/usbuart

  20. GetChiper Автор записи

    Это не программатор а преобразователь USB-UART. Но идея правильная! При помощи такого готового преобразователя можно заделать USB программатор.
    Собственно говоря я так и сделал. Для Algorithm Builder стандартная схема USB программатора содержит FT232RL преобразователь, но цена этой микросхемы не мелкая да и довольно редкая она в продаже. Вот я и купил USB шнурок для мобилки и заменил им FT232RL — получилось намного дешевле плюс USB разъем и шнурок в качестве бонуса 🙂

  21. Яровенко Александр

    Помогите пожалуста, собрал программатор громова но подключаю к ATMega8 все по схемам , в унипрог не видит програматор ни мк , можете сказать сколько вольт на всех контактах программатора

  22. GetChiper Автор записи

    Унипрог сам программатор и не должен видеть, только пару МК+программатор.
    — В унипрог правильный COM-порт выбран? Поставьте в унипрог галочку «тормоз».
    — Проверьте еще раз собранную конструкцию программатора на ошибки. (Напряжения на выходах программатора разные в зависимости от конкретного железа компа, режима работы ком порта — на них не нужно ориентироваться).
    — Микроконтроллер до этого не шился? Если да, то возможно фьюзы прошиты на внешний кварц а в плате http://www.getchip.net/posts/prostaya-otladochnaya-plata-dlya-ustrojjstv-avr-atmega4888168-s-chasovym-kvarcem/ стоит часовой — с ним не прошьется. В этом случае нужно поставить обычный кварц с частотой больше 1МГц.
    — Если есть другой COM порт — можно попробовать через него. Если есть возможность попробовать работоспособность на другом компе — попробуйте.
    — Питание микроконтроллера 5в?

  23. Яровенко Александр

    -Порт выбран правильно,галочку ставил
    -Конструкция 1в1 как тут показанно
    -МК шился выдерну со старой паяльной станции , подкючил обычный кварц под рукой был только 25Мгц(щас нашел на 14)
    -Щас попробую на другом компьютере
    -Питание от отдельного комп БП +5в , земля с програматора, питание на мк есть

  24. Яровенко Александр

    не запуская программу включив питание на мк , питание на пинах
    vcc — gnd — 5.73v
    vcc — RST — 5.7v
    vcc — mosi — 5.61v
    vcc — miso — 5.72v
    vcc — SCK — 5.71

  25. GetChiper Автор записи

    Яровенко Александр :

    -МК шился выдерну со старой паяльной станции
    , подкючил обычный кварц под рукой был только 25Мгц(щас нашел на 14)

    Очень возможно, что МК из паяльной станции заблокирован для чтения/записи, или у него включено параллельное программирование(что тоже не даст определятся микроконтроллеру через SPI-программатор).
    К обычному кварцу конденсаторы 15-30пФ подключены?

    Лучше бы обзавестись новым микроконтроллером, тем-же ATtiny2313 (а лучше купить сразу несколько — все равно поначалу надо на чем то учится).

  26. Яровенко Александр

    GetChiper :

    Яровенко Александр :
    -МК шился выдерну со старой паяльной станции
    , подкючил обычный кварц под рукой был только 25Мгц(щас нашел на 14)

    Очень возможно, что МК из паяльной станции заблокирован для чтения/записи, или у него включено параллельное программирование(что тоже не даст определятся микроконтроллеру через SPI-программатор).
    К обычному кварцу конденсаторы 15-30пФ подключены?
    Лучше бы обзавестись новым микроконтроллером, тем-же ATtiny2313 (а лучше купить сразу несколько – все равно поначалу надо на чем то учится).

    Купил МК ATtiny2313 и мегу8 оба сразу определились , значит бело в мк было , большое спасибо за помощь и еще, как проверить пожег ли я мк или нет?

  27. Яровенко Александр

    Купил МК ATtiny2313 и мегу8 оба сразу определились , значит бело в мк было , большое спасибо за помощь и еще, как проверить пожег ли я мк или нет?

  28. GetChiper Автор записи

    Проверить как прожегся МК очень просто — нужно прочитать его содержимое. В унипроге кроме этого можно сравнить содержимое микроконтроллера с файлом-прошивкой.

  29. JaroslavB

    Добрый вечер ГетЧип.
    Я спаял этот программатор, при подключении ничего Юнипроф не нашёл. А МК начал дико греться. Питал от компа, +5 на VCC. МК — ATmega16APU. Может он низковольтный? Или уже сгорел? Греется прямо по центру МК, очень резко. Эффект укола иголкой.

  30. GetChiper Автор записи

    ATmega16APU нормально работает от 5в.
    Судя по описанию — сгорел микроконтроллер. Какое сопротивление между ножками Vcc и GND?

  31. JaroslavB

    Примерно 20 Ом. Пойду новый МК покупать. Он у меня стоит аж 260 рублей)

  32. GetChiper Автор записи

    Все равно маловато. Если при подключении питания к «голому» микроконтроллеру он греется — однозначно сгорел. Купи лучше несколько ATTiny2313 — для обучения самое то.

  33. JaroslavB

    Они продаются. Но только поверхностного монтажа

  34. GetChiper Автор записи

    Может купить одну и попробовать что-то соорудить на ней?

  35. JaroslavB

    Что посоветуешь? Просто я пробовал программатор 4 раза собирать. Не получается. Щас по твоей статье собрал, думаю должно начать работать. Но нужен какой то проект для начинающего. Посоветуешь?

  36. JaroslavB

    А разве не проще взять любой МК Атмел и библиотеку Qtouch. Это намного лучше, чем такая самопальная библиотека. И доком больше. Как мне сказали можно сделать не только кнопки, но и линейные и круговые слайдеры. Там есть и автоподстройка, и шумоподавление, и много чего еще.

  37. GetChiper Автор записи

    Поглядим.
    Про библиотеку речи не идет — это готовые устройства.

  38. GetChiper Автор записи

    Поглядел.
    Библиотека Qtouch только для Touch-контроллеров. Я не нашел поддержки микроконтроллеров AVR серии. Я думаю, ATMEL не даст возможности выбора альтернативы между Touch-контроллерами а AVR микроконтроллерами. И знаете почему? Правильно! Touch-контроллеры стоят раза в три дороже!

    P.S. А хотя нет, нашел упоминание про тини и меги. Но насчет юзабельности ничего не могу сказать. И опять же, не вижу смысла во впаривании дорогих Touch-контроллеров если это-же можно сделать на Тиньке.

  39. JaroslavB

    Я считаю себя вообще нубом в электронике) Поэтому упорно её изучаю. Кстати Ком программатор я спаял, залил внутри всё горячим клеем. Шлейф где 30-40 см. Думаю нормально. Говорили и про шлейфы в длинну комнаты. Сейчас хочу сделат отладочную плату под 2313. Но уж очень нравится устройство USB To UART. Думаю начну делать всё таки его.
    ICQ: 1-255-семь43

  40. GetChiper Автор записи

    Сделай. Для отладки устройств, UART отличная штука.

  41. JaroslavB

    Напиши в аську. Просто совет нужен

  42. GetChiper Автор записи

    А по мылу можно? Так не хочется яську устанавливать 🙁

  43. RushHour

    В каких пределах можно изменить значения резисторов, чтобы и для СОМ порта безопасно и программатор работал?

  44. GetChiper Автор записи

    Я думаю, от 500 Ом до 3кОм должно быть нормально, но лучше, чтобы были ближе к 1кОм (проверено временем)

  45. JaroslavB

    А такой вопрос. Щас у меня на столе уже два устройства полностью смонтированных в DB-9 разъёмах. Пока что я знаю кто из них Громов, а кто переходник r-232 to uart. Но представьте 10 таких разъёмов, и из всех торчит шлейф… Как можно пометить не только что это за устройство, но и последовательность выводов проводов

  46. RushHour

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

  47. GetChiper Автор записи

    Кабель подключен к юнипрофу?
    Галочка «тормоз» стоит?
    Чаще всего это помехи который ловит кабель. Для их уменьшения можно уменьшить кабель (эт если он длиннее 30-45см, иначе не поможет), применить для программатора экранированный кабель и еще нужно ставить керамический конденсатор на ножки питания микроконтроллера.

Добавить комментарий