Автор статьи
GetChiper

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

Print Friendly

титл 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


,

  1. alexandershahbazov
    27 Март 2010 в 00:48 | #1

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

  2. GetChiper
    27 Март 2010 в 09:50 | #2

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

  3. alexandershahbazov
    27 Март 2010 в 23:45 | #3

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

  4. haosx86
    8 Июль 2010 в 10:22 | #4

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

  5. GetChiper
    8 Июль 2010 в 18:42 | #5

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

  6. haosx86
    8 Июль 2010 в 20:36 | #6

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

  7. haosx86
    8 Июль 2010 в 20:47 | #7

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

  8. haosx86
    8 Июль 2010 в 21:37 | #8

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

  9. GetChiper
    8 Июль 2010 в 21:41 | #9

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

  10. haosx86
    8 Июль 2010 в 22:20 | #10

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

  11. GetChiper
    8 Июль 2010 в 23:01 | #11

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

  12. haosx86
    8 Июль 2010 в 23:45 | #12

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

  13. haosx86
    9 Июль 2010 в 09:42 | #13

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

  14. GetChiper
    9 Июль 2010 в 15:40 | #14

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

  15. haosx86
    11 Июль 2010 в 10:45 | #15

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

  16. GetChiper
    11 Июль 2010 в 10:55 | #16

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

  17. haosx86
    12 Июль 2010 в 17:03 | #17

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

  18. GetChiper
    12 Июль 2010 в 21:03 | #18

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

  19. Old_miller
    29 Июль 2010 в 11:10 | #19

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

  20. GetChiper
    29 Июль 2010 в 20:07 | #20

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

  21. Яровенко Александр
    18 Сентябрь 2010 в 08:51 | #21

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

  22. Яровенко Александр
    18 Сентябрь 2010 в 09:57 | #22

    подключаю по теме http://www.getchip.net/posts/prostaya-otladochnaya-plata-dlya-ustrojjstv-avr-atmega4888168-s-chasovym-kvarcem/ в уни прог пишет uknnown и табличка вскакивает *МК не откликнулся.Проверьте порт и подключение.* , собирал 1 в 1 не пашет ( подскажите что может быть

  23. GetChiper
    18 Сентябрь 2010 в 11:11 | #23

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

  24. Яровенко Александр
    18 Сентябрь 2010 в 11:53 | #24

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

  25. Яровенко Александр
    18 Сентябрь 2010 в 12:01 | #25

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

  26. GetChiper
    18 Сентябрь 2010 в 19:36 | #26

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

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

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

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

  27. Яровенко Александр
    20 Сентябрь 2010 в 12:30 | #27

    GetChiper :

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

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

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

  28. Яровенко Александр
    20 Сентябрь 2010 в 12:31 | #28

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

  29. GetChiper
    21 Сентябрь 2010 в 16:50 | #29

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

  30. JaroslavB
    8 Декабрь 2010 в 16:39 | #30

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

  31. GetChiper
    8 Декабрь 2010 в 18:27 | #31

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

  32. JaroslavB
    8 Декабрь 2010 в 20:32 | #32

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

  33. JaroslavB
    8 Декабрь 2010 в 20:36 | #33

    Ошибка 1 кОм

  34. GetChiper
    8 Декабрь 2010 в 20:52 | #34

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

  35. JaroslavB
    8 Декабрь 2010 в 21:07 | #35

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

  36. GetChiper
    8 Декабрь 2010 в 22:23 | #36

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

  37. JaroslavB
    9 Декабрь 2010 в 00:07 | #37

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

  38. GetChiper
    9 Декабрь 2010 в 09:45 | #38

    Конечно посоветую! Собирай платку http://www.getchip.net/posts/060-drajjver-sensornojj-klaviatury-touch-me-na-attiny2313/
    Она совсем не сложная и на ее базе будет много разный устройств. Очень хорошо для обучения.

  39. JaroslavB
    9 Декабрь 2010 в 14:12 | #39

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

  40. GetChiper
    9 Декабрь 2010 в 16:18 | #40

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

  41. GetChiper
    9 Декабрь 2010 в 17:50 | #41

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

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

  42. JaroslavB
    9 Декабрь 2010 в 19:05 | #42

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

  43. GetChiper
    9 Декабрь 2010 в 19:10 | #43

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

  44. JaroslavB
    9 Декабрь 2010 в 19:12 | #44

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

  45. GetChiper
    9 Декабрь 2010 в 21:22 | #45

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

  46. RushHour
    14 Декабрь 2010 в 15:36 | #46

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

  47. GetChiper
    14 Декабрь 2010 в 18:10 | #47

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

  48. JaroslavB
    20 Декабрь 2010 в 10:10 | #48

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

  49. RushHour
    21 Декабрь 2010 в 14:41 | #49

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

  50. GetChiper
    21 Декабрь 2010 в 17:48 | #50

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

Страницы комментариев
1 2 3 ... 5
Необходимо войти на сайт, чтобы написать комментарий.