Делаем 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 104 179 times, 2 visits today)

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

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

    JaroslavB :

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

    Наклей цветные ценнички, как в магазине, и подпиши маркером «r-232 to uart», «Программатор» — точно не перепутаешь. Для выводов — цветные термоусадки-трубочки на концах (вот только расписание этих выводов нужно держать где-то записанным).

    А вообще вопрос интересный. Кто как метит свои девайсы?

  2. JaroslavB

    @RushHour
    А как он должен определятся? Если это программатор COM порта, то попробуй в свойствах уменьшить скорость порта. Не 9600, а 1200.
    Если это USB, то сори, с таким не работал)

  3. cudi

    У меня нет диодов который на схеме, у меня есть другие импульсные диоды 1n4007 можно ли их использовать?

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

    Конечно. Любые импульсные диоды подойдут.

  5. Alvyr

    с ПониПрог будет работать?

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

    Не уверен — нужно попробовать.

  7. Alvyr

    все равно делать собирался , заодно и попробую:)

  8. karpov

    А с какими программами он работает (кроме юнипроф)?

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

    Еще Algorithm Builder. Насчет дудки не знаю, как-то не задавался целью узнать.

  10. Алексей

    Скажите а земляные провода подсоединить на GND или оставить так висеть?

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

    Соединяйте все земляные провода и на GND.

  12. vovkolg

    Решил написать про свои успехи в программировании микроконтроллеров.

    Выбрал atmega8-16PU. Программатор спаял по схеме(Громова) как на сайте.
    Так как у меня ноутбук, то пришлось приобрести переходник (адаптер) USB-RS232(com-порт). Переходник Viewcon USB 1.1 to COM RS-232 (VE066)
    Резисторы выбрал 330 Ом (три левых ) и 1 кОм (четыре правых на схеме) в связи с тем что на виходе из com порта у меня всего 6.5 В.
    Правда сопротивление диодов у меня было 800 Ом, а я читал что надо 100-200 Ом.
    Питание для контроллера взял от USB (там 5.05В)

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

  13. vovkolg

    Также, прошивал через avrdude в Linux. Прошивалось в несколько раз бистрее чем uniprof и (что хорошо) ни разу не било ошибки записи.

  14. 544848

    А этот программатор будет на CodeVisionAVR читаться

  15. anatoliy

    У мя немного другая реализация.
    Мне показался данный вариант преобразования уровней не надёжным. Идея такая:
    преобразователь уровней lt1131cn (можно какую нить MAX205-MAX207 задействовать но была под рукой LT или 2 MAX232)
    буфер 74hc244
    Получилось так-же железобетонно как и stk200 но с COM шнурком.

  16. griblann

    Всем добрый день! Скажите пожалуйста. С помощью этого программатора можно прошить микросхему bios c маркировкой MX25L8005?

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

    544848 :

    А этот программатор будет на CodeVisionAVR читаться

    нет

    griblann :

    Всем добрый день! Скажите пожалуйста. С помощью этого программатора можно прошить микросхему bios c маркировкой MX25L8005?

    нет

  18. Moskit

    Здраствуйте. Подскажите что делать? Собрал программатор, макетку (http://myrobot.ru/wiki/index.php?n=Experiences.SelfmadeDemoBoard) впихнул туда ATMega16 (новую) Uniprof в лоб не видит МК. Что это может быть? Есть подозрение что это из-за того что пользуюсь переходником USB — COM

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

    Этот программатор не очень любит переходники — лучше попробуйте гдет-то на COM порте.

  20. ewgeny

    Правильно мыслишь. Через адаптер битбанг не работает, для этого программатора нужен нативный (реальный) компорт.
    Если у тебя на компе нет реальных LPT или COM, нужно шаманить USB-программатор. Например, на Тини2313. Или, если и ее прошивать негде, то на FT232. Смотри здесь, например — http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html

  21. Moskit

    @ewgeny
    Увы вариант с FT232 не подходит(хотя и очень заманчиво) — я не смогу её впаять. СОМ порт есть на старом компе но это не надежно — комп еле живой. Если прошьётся буду ваять USB с тинькой, причем срочно, не поможете ссылочкой? (желательно не на SMD компонентах)

  22. Леонид

    http://www.getchip.net/posts/056-usb-programmator-legko-usbtiny/
    всё даже рядом чем ты думаешь. а запрогить можно и к друзьям сходить с бутылкой пива. у тебя ноутбук или стационарный. если стационар какакя мамка. интересует фирма

  23. Леонид

    там правда на смд, но сделать в TH в принцепе просто.

  24. Moskit

    У меня стационар, мамка ASUS P6T Deluxe V2. Компу полгода ни COM ни LPT естественно нет.

  25. Леонид

    ну у мя тоже асус правда постарше но не на много. ты посмотри на матери должен быть разъём 9пин прямоугольный типа ISP . там рядом должно быть написано сом1 у мя на панели тоже нет, а на матери есть. я просто выввел его на панель и всё. если не понятно где искать могу фотку кинуть почту дай. и ещё посмотри здесь: мой компьютер/свойства/вкладка оборудование/диспетчер устройств/вкладка поты ком и лпт. что там написано или там пусто.

  26. Moskit

    Хорошо посмотрю, но фотка не помешает (ghost495@mail.ru) а в диспетчере вкладки порт COM и LPT вообще нету. Но адаптер подключался как СОМ3, по идее должны быть еще СОМ1 и СОМ2 (поправьте если не прав) так что надежда есть. И еще небольшой нюанс: а меня 7 винда.

  27. Леонид

    Насчет переходника под 3 портом эт нормально. У меня юарт шнурок под 6ым висит. Завтра будут фоты. Скайп есть? Чтоб здесь не офтопить.

  28. Леонид

    После работы зайду.

  29. Леонид

    Извени всё некогда было завтра всё будет

  30. headless

    Добрый день, уважаемые. Делаю программатор для ATMEGA16A-PU. Развел на плате под DIP40, воткнул COM, питание USB — в юнипроф не определяется. Не посмотрите, мож чего подключил лишнее/не подключил нужное?

    Вид «сквозь плату» (дорожки внизу, атмега сверху) — http://img13.imageshost.ru/img/2011/08/25/image_4e558b6803352.jpg

  31. arbuz

    Здравствуйте, а при помощи этого программатора и программы юнипроф можно программировать контролер AT89S8252?????

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

    Нет

  33. iamstreetstyle

    Собрал данный девайс пару нидель назад на кусочке макетной платы, заработал сразу. Решил собрать еще один но на этот раз плату сделал сам двухстороннюю и засунул между ножек разема db9 и фиг вам в упор невидит мк, подключаю к мк первый програматор все работае, со вторым нет. Диоды 4148 резисторы смд 1к 1206 думаю что причина в паразитной емкости между сторонами платы, проводники какраз друг над друга с промежутком 1,5мм из тексталита. плата размером 15ммx15мм в корпусе от разема db9, шлейф ~10см распиновка,разводка,дитали в порядке.

  34. iamstreetstyle

    хотя в шлейфе провода на меншем растоянии друг от друга. ХЗ

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

    Скорей всего где-то «сопля» межу дорожками или может плата грязная. Пепропай, трещина в дорожке — нужно проверить еще раз.

  36. Muxaulovich

    Чуваки! Хотел посоветовать вам усовершенствовать и обезопасить данный программатор. В резисторных делителях на передающих линиях от СОМ порта (это RESET, SCK и MOSI) увеличить верхнее сопротивление в делителе с 1 кОм на 1,4 кОм. Так напряжение +12В будет делиться ровно до +5В. И еще поставить стабилитроны между указанными сигнальными проводами (RESET, SCK и MOSI) и общим проводом. Думаю подойдут стабилитроны BZX55C5V6, на напряжение стабилизации 5,6В в корпусе DO-35 или DO-41. Они будут ограничивать напряжение. Удачи!

  37. Muxaulovich

    А еще лучше замутить две микросхемы MAX232A и вот еще Анатолий советует буфер 74HC244 поставить. Получится в натуре железобетонно! Питание микрух от отладочной платы. Ну или как вариант от одной из линий СОМ порта, там где постоянно держится +15В (ну вообще реально +12В) через диод подключить 78L05.

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

    Программатор позиционируется как простой. Если навешать на него столько всего он простым уже не будет. Кроме того этот программатор довольно долго существует именно в таком виде — если-бы он работал плохо его-бы не использовали.

    Но если есть желание делать и понимание того, что делаешь — любые изменения только к лучшему.

  39. iamstreetstyle

    Да всему виной был микро капля припоя между дорожками, удалил ее и все заработало :)) А еще собрал новый прогер авр 910 и та же проблема проверял разводку, перепробавал все проги, даже грешил на китайский кварц, а в итоге mosi коротил с led, а sck c gnd, да еще к томуже spi выводы на програмируемом сдвинул на пин вниз.Исправил и заработало :)))) Но всеравно буду использовать com прогер он железобетонен , а 910 из 10 раз 1 сбоит.

  40. ROM

    Скажите пожалуйста, на рисунке №3 это диоды КД522А?
    Можно ли взять КД243Е?
    И еще что за диод такой как нарисунке только одно белое кольцо?

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

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

  42. ROM

    @GetChiper
    А кварц внешный надо? К каким ножкам нужно подключать минус атмегы8а? там есть два!
    Спасибо.

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

    По умолчанию (заводские настройки) микроконтроллер работает от внутреннего задающего генератора — кварц не нужен.
    Минусы обычно соединяют вместе.

  44. ROM

    Все спаял как по схеме, питания на мк пустил, запустил прогу — мк не откликается? Вчем еще может быть проблема?

  45. iamstreetstyle

    а диоды правельно воткнул ? да пади исче тот с белой полосой впендурил !?

  46. ROM

    нет не с белой. одна толстая и 2 тонки чорных полосы. вроде правильно!

  47. ROM

    Фореве. На другом ПК заработало!
    На первом(домашнем) порт на мамке не подключен к внешнему миру. Сам подключал через спец удленитель (20см) на заднюю панель. В системе определен как СОМ1. В чем может быть проблема что он не работает?

  48. iamstreetstyle

    ROM :
    Фореве. На другом ПК заработало!
    На первом(домашнем) порт на мамке не подключен к внешнему миру. Сам подключал через спец удленитель (20см) на заднюю панель. В системе определен как СОМ1. В чем может быть проблема что он не работает?

    Если ком небыл подключен к материнке то есть большая вироятность что он отключен в биосе

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

    А в диспетчере устройств COM порт есть?

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