Универсальный программатор для com-порта (AVR и PIC)
Как-то раз на нашем форуме возникла темка, чем бы залить чипик ATMEGA32. Темка эта в итоге разрослась и вылилась в схему универсального программатора, которым можно через последовательный порт компьютера программировать не только эту самую атмегу, но и другие контроллеры AVR, и контроллеры PIC, и микросхемы памяти. Как всегда в схеме использован различный радиохлам (в данном случае снятый со старых сломанных материнок).
Помимо универсальности, несомненным плюсом этого программатора является оригинальное решение проблемы с питанием. Питание для него требуется внешнее, но в тоже время никаких дополнительных блоков питания изобретать или покупать не надо. Как так? А вот так. Вы же с компьютера будете чипы программировать. То есть комп у Вас будет включен. Тогда у Вас уже есть на каждом 4-х пиновом разъёме Molex отличные, стабильные +5 и +12 Вольт, так зачем же городить что-то ещё? (4-х пиновые Molex — это такие, как на рисунке справа, от которых питаются ваши винчестеры, сидирумы и тому подобное железо внутри компа.) Короче, наш программатор можно запитать от любого такого свободного разъёма.
Ну, закончим на этом со вступлением и перейдём к схеме.
Детали и описание работы :
Две главных детали программатора — микросхема преобразователь уровней порта GD75232 и микросхема логики 74HC14D. Микруха порта — это фактически две полностью независимые микрухи в одной. Одна — это набор драйверов (из 0/5 вольтовых сигналов делают +-12 вольтовые), вторая — набор приёмников (из +-12 вольтовых сигналов делают 0/5 вольтовые). Мы используем только приёмники, а входы и выходы драйверов (а так же неиспользуемые входы приёмников) — заземляем. Микруха логики выполняет две задачи — умощнить выходы микросхемы порта и защитить микросхему порта в случае экстренных ситуаций (всё же микросхемы портов встречаются не так часто, как микросхемы логики).
Соответственно, чуть изменив схему, вместо 74hc14 легко можно использовать какую-нибудь другую логику.
Транзисторы подойдут любые маломощные, я брал smd-транзисторы, снятые с материнских плат, с маркировками A1 (npn-транзистор) и A2 (pnp-транзистор). Если Вы так же будете использовать smd-транзисторы, то главное убедиться, что это действительно транзисторы (например, в корпусе sot-23, с маркировкой A1 могут быть не только транзисторы, но и диоды).
Резисторы подписаны на схеме. Кроме этого надо поставить между питанием и землёй возле каждой микрухи керамические конденсаторы по 0,1 мкФ, на схеме они не нарисованы, но это правила хорошего тона.
Готовый девайс (на фото сам программатор и модуль для программирования контроллеров PIC):
Программатор тестировался с программами IC-Prog и Pony Prog, которые можно скачать в разделе «Программы«. При прошивке выбрать тип программатора JDM. При программировании PIC-контроллеров надо выбрать инверсию сигнала D-IN, при программировании контроллеров AVR — инверсию сигналов D-IN и RESET (MCLR).
Скачать плату (DipTrace 2.0). В архиве печатка программатора + модуля для подключения PIC12, PIC16, PIC18 и модуля для подключения 8-ми и 20-ти ногих AVR. Эта плата разведена под SMD-компоненты (как на фотке), если сделаете свои версии печаток и не пожалеете поделиться с другими — присылайте на почту или заливайте на форум.
Источник
Простой программатор для прошивки AVR микроконтроллеров через СОМ порт (RS232)
Схема и описание простого программатора для прошивки AVR микроконтроллеров, используя СОМ порт (RS232) компьютера.
На сегодня существует множество программаторов AVR микроконтроллеров подобного типа, но что мне не нравится — это слишком много рассыпухи (дискретных элементов), в то время как существуют специализированные микросхемы, у которых все уже есть внутри.
Принципиальная схема
Вариаций применения моего программатора в качестве базового модуля очень много — это и программирование микросхем типа 24Схх-93Схх, а так же для программирования PIC контроллеров.
Мой выбор пал на микросхему GD75232 (рис. 1), часть элементов которой, при соответствующем включении, я задействовал для данного программатора (рис. 2).
Рис. 1. Схема микросхемы GD75232.
Рис. 2. Схема программатора для AVR микроконтроллеров через RS-232 на микросхеме GD75232.
Обязательно 10-й и 11-й выводы микросхемы должны соединяться с землей (общим проводом). Микросхема GD75232 установлена на материнских платах, ее роль — как раз согласование сигналов внешних устройств с СОМ портом. На рис. 1 из даташита [1] видно, какие элементы как подсоединены.
Микросхему специально не покупал, а снял с “убитой” материнской платы. Использовать программатор можно с известной программой Pony Prog, в установках выбрать интерфейс (Serial, СОМ1) для СОМ-порта и любой из 3-х видов интерфейсов, которые в программе перечисляются, без разницы, работает со всеми (JDM API, Si Prog API, SI Prog I/O), картинки это поясняют (рис. 3-5 соответственно). Остальные установки в настройке порта остаются в программе по умолчанию.
Рис. 4. Si Prog API.
Рис. 5. SI Prog I/O.
Печатную плату не привожу, так как отрезал ножницами по металлу кусок платы вместе с микросхемой, в итоге размеры платы получились 20×30 мм, проводники припаял к 3-м разъемам:
- 1 — питание +5 В;
- 2 — разъем СОМ порта;
- 3 — разъем ISP для программирования.
Программатор настолько прост, что не содержит ни резисторов, ни конденсаторов — только одна — единственная микросхема. Цепляете питание +5 В, подключаете к панельке, в которую вставлен микроконтроллер AVR, приготовленный для программирования, и программируете, как обычно, в ISP режиме.
Схема проверена и испытана. На рис. 6 проиллюстрировано, как сделать монтаж без печатной платы: разместить устройство можно прямо в разъеме, зафиксировав термоклеем.
Рис. 6. Как сделать монтаж AVR-программатора без печатной платы.
Буфферизация
Простые программаторы эффективны, пока речь идет о программировании микроконтроллеров либо в DIP корпусе (удобно, когда можно микросхему вынуть из панельки на рабочей плате и воткнуть в панельку на программаторе, а потом, запрограммировав, поставить на место), либо когда на рабочей плате выводы микроконтроллеров не сильно нагружены внешними элементами схемы.
Есть отработанные хорошие схемы простых программаторов с буфферизированными шинами типа STK200/300, собранные на микросхемах серии 244, 245, но они предназначены для подключения к LPT порту, который в последнее время уже редкость на современных материнских платах.
Теперь чаще встречаются лишь USB и СОМ порты, а программаторы USB более сложны для начинающих радиолюбителей в повторении.
У большинства известных простых программаторов, работающих с СОМ портом, имеется общий недостаток: не у всех достаточная нагрузочная способность.
В последнее время все чаще применяются SMD компоненты, и микроконтроллеры применяют уже в корпусах типа SOIC и впаивает непосредственно в плату, без панелек.
В этом случае для повторного перепрограммирования надо уже либо программировать его прямо на плате, либо выпаивать чип, а в некоторых случаях приходится предварительно отключать нагрузку на его выводах в схеме, если получается, что внешние элементы “сажают” импульсы программатора, если только его шины не были буфферизированы (умощнены по току для работы с повышенной нагрузкой).
Из личного опыта скажу, что этими недостатками страдают многие широко известные простые программаторы, например, на 5-ти резисторах, или известная схема на транзисторе, резисторах и стабилитронах: при повышенной нагрузке на шинах программатора начинаются проблемы.
Для того, чтобы не делать новый программатор, есть простой путь улучшить нагрузочные характеристики программатора — это буфферизиро-вать уже имеющиеся шины для сигналов, всего лишь добавив еще одну микросхему. В данном случае я взял, что у меня было под руками — микросхему 561ПУ4 [2] (или можно ее западный аналог CD4050 [3], см. рис. 7).
В составе этой микросхемы содержится шесть буфферных неинвертирующих элементов, которые повторяют входной сигнал на выходе, не внося в него изменений.
Каждый такой элемент обладает определенной нагрузочной способностью; из иллюстрации (рис. 8), взятой в даташите, видно структуру тех дискретных элементов, содержащихся внутри буффера.
Рис. 7. Структура микросхемы 561ПУ4 (CD4050).
Рис. 8. Схема элементов микросхемы 561ПУ4 (CD4050).
Рис. 9. Программатор для AVR с повышенной нагрузочной способностью.
Подсоединив к нашему программатору такое дополнение между выводами программатора и разъемом для программирования, мы получим устройство с повышенной нагрузочной способностью (рис. 9).
У нас три сигнала с СОМ порта работают на прием, и один сигнал (MISO) работает на передачу. Припаяв к уже имеющейся схеме посредством коротких проводков еще одну микросхему буффера, я протестировал работу новой схемы и, сравнив с тем, что было прежде, убедился, что эффект есть.
На тех платах, где я прежде сталкивался с подобной проблемой при программировании, мне приходилось отсоединять нагрузку на время программирования, а теперь с новой схемой этого делать уже не потребовалось.
Рекомендую всем обладателям простых программаторов доработать имеющуюся у вас схему таким же образом. Если при программировании вы сталкивались с подобными проблемами, добавив микросхему буффера, не обязательно эту, можно использовать и другие подобные по функциональным свойствам микросхемы типа 74НС125, 74НС126 [4].
На базе этих микросхем, можно переводить выходы программатора вообще в высокоимпедансное состояние, что позволит не отключать разъем ICSP от платы: особенно это удобно при работе с макетной платой.
Z-состояние шин на выходе
Все вроде работает, но стоит добавить в схему что-либо еще, как она из маленькой превращается в “монстра”, а что делать? Иногда в процес се отладки приходится идти на это ради комфорта в работе, ведь порой по нескольку десятков раз надо втыкать разъем ICSP, повторно перепрограммируй микроконтроллер.
Это занятие так порой надоедает, а если оставить программатор постоянно подключенным к схеме, то схема программатора будет влиять на работу устройства.
Но есть решение, о котором я упоминал выше — это перевести состояние шин в высокоимпедансное Z-состояние, тогда схема программатора может быть подключена сколь угодно долго и теперь не будет шунтировать шины микроконтроллера. Ради такого случая применил микросхему 74HC125 и использовал ее в качестве буффера (рис. 10).
Рис. 10. Структурная схема ир подключение микросхемы 74HC125.
Осуществлять эту процедуру мы будем посредством кнопки S1, которая при замыкании будет переводить выходы программатора в рабочий режим программирования, подсоединяя его сигналы к схеме.
На момент программирования надо удерживать кнопку в нажатом состоянии, а после того, как процедура программирования пройдет успешно, отпустить. При разомкнутом состоянии кнопки выходы программатора переводятся в состояние Z.
Рис. 11. Струткутрная схема микросхемы 74HC125.
Рис. 12. Состояния входов и выходов микросхемы 74HC125.
Из даташита микросхемы 74НС125, по схеме (рис. 11) и таблице истинности (рис. 12) видно, что если подать на выводы А “единицу”, схема переводит выходы в высокоимпедансное состояние (фактически вообще отключается от нагрузки), и вдобавок у этой микросхемы еще большая нагрузочная способность, чем у микросхемы, которую я выбрал в качестве буффера в схеме рис. 9.
В. Науменко. г. Калининград. РМ-04-17, 05-17.
- GD75232 — www.datasheetcatalog.org/datasheet/texasinstruments/ad75232.pdf
- 561ПУ4 — www.voshod-krlz.ru/files/datasheets/561pu4.pdf
- CD4050 — www.datasheetcataloa.Org/datasheets/70/109093DS.pdf
- 74НС125, 74НС126 — www.datasheetcatalog.org/datasheet/SGSThomsonMicroelectronics/mXrytxt.pdf
- PCBWay — всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН.
- Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет.
- Проекты с открытым исходным кодом — доступ к тысячам открытых проектов в сообществе PCBWay!
Добрый день. (Вам не болеть. Это сейчас актуально) Подскажите, а можно поставить вместо 74НС125 отечественную 155ЛП8 . Большое спасибо за любой ответ. С уважением.
Источник
Программатор Громова — пожалуй лучший COM программатор AVR контроллеров.
Автор: Владимир Васильев · Опубликовано 17 июня 2013 · Обновлено 29 августа 2018
Всем привет. Сегодня у меня для вас новая статья, посвященная одному из самых простых и популярных программаторов AVRок — программаторе Громова — так его называют в сети.
Данную статью о программаторе, я планировал еще давно, но все было как-то не до нее . Но вот сейчас и приступим.
Запрограммировать контроллер AVR на сегодня возможно двумя способами:
1) С помощью высоковольтного параллельного программатора. Это скорее промышленный вариант, так как в этом случае корпус контроллера усаживается в специальную панельку и подав высокое напряжение (большее напряжения питания) зашивается заранее подготовленная программа. После чего контроллер запаивается в плату по месту назначения. Здесь есть ощутимый плюс — полный контроль над всем нутром контроллера. А процесс зашивки моментальный.
Но если выяснится, что зашитая программа имеет непростительный баг? И что же делать — контроллер ведь уже запаян? Снова выпаивать?
Для радиолюбительской практики такой вариант не подходит, хотя иметь в загашнике высоковольтный программатор будет полезно. В одной из следующих статей кстати будет очень полезная информация так что [urlspan] не пропустите [/urlspan].
2) Мы пойдем по другому пути — и к нашим услугам внутрисхемный программатор. При этом способе контроллер устанавливается сразу в схему без каких-либо промежуточных действий. В этом случае программа зашивается внутрисхемно. Что же это значит?
Все просто, при разработке какого-либо девайса мы заранее предусматриваем программирующий разъем. Программирующий разъем устанавливаем прямо на плату нашего устройства. В своей отладочной плате я именно так и поступил, там имеется разъем, причем разъем может быть любым, но под это дело есть некий стандарт. Обычно используется десятиштырьковый разъем PLS, похожий на те, что сидят на материнских платах компьютеров.
Так вот на этот разъем с контроллера выводится 5 сигналов: mosi, miso, sck, reset, GND. Через эти контакты и будет зашиваться программа. Причем делать это можно многократно — ведь выпаивать нам ничего не придется. Единственное что должно быть сделано так это то, что контроллер должен быть запитан и запущен. Впрочем питание можно подать и с программирующего разъема. Тогда у нас будет уже не пять сигналов а шесть, но это совсем не сложно. Только здесь есть небольшая особенность — нужно быть внимательным при простановке фьюзов (FUSE) перед зашивкой программы. Если при высоковольтном программировании неправильно зашитый фьюз бит легко правится, то при внутрисхемном программировании будет сложно что-либо исправить.
Фьюзы или фьюз биты — это биты конфигурации контроллера. Их нельзя выставить из тела программы. Фьюз биты обычно проставляются перед зашивкой программы — с помощью программатора и программы-прошивальщика.
С помощью фьюз битов можно изменить способ тактирования контроллера. Так вот, если в своей схеме контроллер тактируется от своего внутреннего генератора, а вы в фьюзах выставили способ тактирования от кварца, то схема работать не будет. Контроллер не запустится, а значит что -либо изменить не удастся. Но это дело поправимое. Нужно лишь подпаять нужный кварц и пару конденсаторов тогда все заработает и программу можно дальше править и перешивать.
Но есть фьюз бит, выставив который мы теряем возможность внутрисхемного программирования — нужен параллельный программатор. Так что будьте внимательны и прежде чем зашить фьюз биты хорошенько читайте даташит.
Разновидностей внутрисхемных программаторов на сегодня очень и очень много и выбрать приемлемый вариант бывает не просто. Все программаторы делятся по способу подключения к компьютеру, мне известны три : через LPT, COM, USB.
Программатор работающий через порт lpt я заранее не советую, так как его очень просто пожечь, и сколько схемных решений мне не советовали, я этот вариант отбросил сразу же. Кстати да, и самого порта lpt в моей рабочей машинке не было. Вот так-то.
В наше время когда порты com и lpt уходят в небытие, единственно рабочий вариант остается USB. Но тут есть ряд проблем. Как правило схемы программаторов, работающих от USB имеют в своем составе микроконтроллер, который естественно нужно прошить, а для прошивки нужен программатор. Вот такой вот замкнутый круг. Хотя в последнее время на просторах интернета появилась схема usb программатора, которая не требует прошивки. Схема простая, но я с ней плотно не разбирался поэтому говорить о ней я не буду — если очень интересно найдете сами.
Мы пойдем по более сложному пути — займемся изготовление программатора Громова. Этот программатор работает через com порт, который в отличие от lpt, редко но все еще встречается в современных компьютерах. И кстати если на задней стенке своего компьютера вы его не обнаружили, это еще не значит что его нет, так на многих материнских платах он может присутствовать в виде pls штырьков, нужно почитать документацию к материнской плате.
Схема.
Схема самого программатора на удивление простая и мне очень жаль, что я не встречал ее раньше.
Ее можно собрать даже навесным монтажом на коленке, но на плате все-таки будет смотреться солиднее. Для этого программатора нам потребуется семь резисторов по килоому каждый и три маломощных диода. Как известно напряжение с com-порта в пределах 12 В, а контроллер работает с 5-ти вольтовым напряжением. Так вот схема из диодов и резисторов послужит нам для согласования уровней. Резисторный делитель из 12 вольт дает нам 6 вольт, а остаток из одного вольта высаживается на диоде — получаем 5 вольт и это то что нам и нужно.
Схему я нарисовал в программе Eagle CAD, затем путем нескольких незамысловатых движений мышкой родилась вот такая платка.
Файлы проекта можете скачать по [urlspan] этой ссылке [/urlspan].
Рисунок ее был распечатан на лазерном принтере и подвержен зверской технологии ЛУТ. После всех манипуляций мне оставалось только напаять деталей и выставить сие творение на ваш суд. 🙂
Входы и выходы.
На плате слева расположены монтажные отверстия для подключения разъема DB-9F (мама) известного как разъема COM-порта. с нашей платой он будет соединен посредством проводов. На схеме для этого обозначены отверстия: DB9/2, DB9/3, DB9/4, DB9/5, DB9/7, DB9/8. На схеме контакты подписаны — не промахнетесь 🙂 Хочу добавить, что провод желательно брать не длиннее 25 см. При более длинном проводе возможны помехи, а в результате ошибки при зашивке программы.
В моем варианте питание будет подаваться от компьютера, поэтому для удобства я вывел контакты
питания PinGND и Pin+5. Затем они будут соединены с питающим разъемом, в принципе под это дело можно применить и отдельный блок питания с напряжением +5 В — проблемы не будет.
Для себя я припас вот такой разъемчик от старого компьютера. Подпаиваем +5 В к крайнему красному проводу, а земля подпаивается к черному. остальное можно выкусить чтобы не мешалось.
С правой стороны расположены контакты для подпайки десятиконтактного программирущего IDC разъема. У меня он выглядит так. Здесь он идет в связке с разъемом DB-9M (папа).
К плате программатора вся эта конструкция подключается через разъем DB-9F.
Теперь можно откинуться на спинку стула и отдохнуть, ведь можно сказать с задачей мы справились — собрали программатор Громова. Но долго расслабляться нельзя, ведь впереди нас ждут испытания нашего творения. Поэтому чтобы не устроить сюрприз своему компьютеру советую все хорошенько прозвонить мультиметром и проверить монтаж и только после этого переходить к испытанию нашего девайса.
Итак программатор у нас собран и лежит на столе в ожидании. Для того, чтобы воплотить в жизнь все то что мы задумали нам нужен управляющий софт — Программа Uniprof.
Программа Uniprof —это тот самый софт, с помощью которого наш программатор будет общаться с компьютером. Эту программу написал автор по фамилии Николаев за что целая армия радиолюбителей говорит ему — СПАСИБО. Кстати саму программу можно скачать с [urlspan] сайта автора [/urlspan] или [urlspan] у меня [/urlspan].
Выключаем наш компьютер и подключаем программатор разъемом DB-9F к COM-порту компьютера. Разъем питания я подключил к блоку питания родного компьютера. На этом этапе желательно подключить плату нашего программируемого пациента — плату с контроллером. Я подключил опытную плату с контроллером Attiny 45. Ну что, теперь минута молчания иии . . . жмем кнопку POWER системного блока компьютера. Ждем когда загрузится наше операционная система.
Запускаем Uniprof. При запуске он у немного ругнулся, выдав окошко со знакомым ERROR, говорит что у меня что-то неладное с LPT. . . хех, глуповато конечно но простим его на сей раз, ткнув по крестику.
На следующим этапе окошко программы все-таки открылось, но появилось сообщение о том, что контроллер не откликнулся. Но мы не паникуем.
Ведь программа совсем не в курсе к какому именно порту подрублен наш контроллер. Тут на выбор кроме ранее упомянутого LPT порта, есть еще набор с COM1 по COM5.Так что простым перебором добиваемся полного опознания нашего контроллера.
Контроллер определился, теперь нам нужно выполнить чтение — нажимаем на READ.
Если контроллер чистый, то в окне программы должны получиться прочерки, но в моем случае получилось иначе — прочерки чередовались с различными шестнадцатиричными числами. Возможно проблема была в длинном проводе, соединяющего программатор с компьютером или с высокой производительностью компьютера. Но в любом случае это вылечилось установкой галочки «ТОРМОЗ» . Время выполнения чтения оказалось несколько более длительным, но зато результат стал лучше.
Вот подходит время таки записать программный HEX файл в наш контроллер, но нужно также не забыть установить правильные фьюз биты. Доступ к ним открывается нажатием кнопки с надписью FUSE.
Выставляем все правильно, предварительно проштудировав даташит на нужный контроллер. Важный совет, выполните чтение фьюзов и убедитесь что фьюз бит SPIEN не установлен, так как установка этого фьюза не позволит вам в дальнейшем применять для этого контроллера наш программатор Громова.
Далее кликаем по кнопке с открытой желтой папкой под названием HEX и выбираем наш HEX. 🙂 Текст программы должен отразиться в окошке Uniprof. Ну что же, теперь остается только нажать на кнопку с красной стрелочкой с названием Prog и дело в шляпе.
Как видите запрограммировать контроллер с помощью данной программы совсем не сложно. Чтобы более полно ознакомиться с ней рекомендую почитать справку, там вы найдет ответы на возникшие вопросы.
Вот кстати почитайте об охранной GSM сигнализации, которую я спаял и запрограммировал. Чтобы ее сделать мне как раз и пригодился программатор.
Дорогие друзья, совершенно недавно появился очень удобный способ подписки, через сервис Email рассылок. Так что вы можете оставить свой email и получать новые статьи и материалы себе на почту. Кроме того каждый подписавшийся получает подарок, который пригодится каждому радиолюбителю, так люди подписываются и получают приятные бонусы, добро пожаловать.
Ну что же, думаю статья окажется для вас полезной и поможет сделать еще один шаг на пути освоения микроконтроллеров. На этом у меня все, желаю вам успехов и главное хорошего настроения!
С уважением, Владимир Васильев.
В качестве дополнения предлагаю посмотреть видеоролик на тему программирования контроллеров AVR. Чтобы не пропустить следующие статьи советую подписаться по [urlspan] RSS [/urlspan] или по [urlspan] электронной почте .[/urlspan]
Источник