Меню

Программаторы jdm для pic своими руками

Как сделать свой вариант JDM-программатора для PIC-контроллеров

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

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

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

Что на нашей структурной схеме представляет собой компьютер (что нам от него надо, применительно к нашей задаче)? В нашем случае компьютер — это программа + порт с которым она работает. Большинство программ для программирования контроллеров могут работать с разными портами и программаторами, и в зависимости от выбранного типа программатора будут использоваться разные порты и ноги порта. Обычно, в программе можно посмотреть какие ноги порта для чего используются. На рисунке слева показано как это выглядит, например, в программе WinPic800.

Поскольку мы хотим собрать схему, которая управляется как JDM-программатор, то в программе мы выбрали тип программатора JDM. Мы видим, что для программирования будет использоваться COM-порт, причём у этого порта будут использоваться следующие ноги: выход DTR — для посылки данных в контроллер, вход CTS — для приёма данных от контроллера, выход RTS — для тактирования, выход TXD — для управления питанием. Кроме того (этого нет в WinPIC800, но я это знаю, и поэтому скажу вам), некоторые программы для распознавания подключения программатора используют вход DSR, на который возвращают сигнал тактирования. Хотя многим программам вход DSR по барабану, но некоторые скажут, что программатор не подключен и откажутся программировать контроллер.

Отлично, с учётом этой информации, наша структурная схема будет выглядеть так:

Что ещё мы знаем про COM-порт? Мы знаем, что уровни сигналов на этом порту могут составлять до ±15В, обычно у живого порта составляют ±10В и могут быть значительно занижены вследствие различных причин. Кроме того, известно, что приёмник все сигналы выше +3В воспринимает как «0», а все сигналы ниже где-то +1В — как «1» (По крайней мере это касается приёмника популярной микросхемы GD75232, которая стоит в большинстве компьютеров). То есть входной сигнал не обязательно должен быть ±10В (конечно если всё делать по правилам, то нужно ±10В, но тогда придётся где-то взять напряжение отрицательной полярности). Ток выхода должен быть не более 20 мА, чтобы не спалить порт. Вход порта — высокоомный, поэтому входной ток очень незначительный.

Переходим к контроллеру. Для программирования контроллера используется 2 линии: DATA и CLOCK.

Во-первых, контроллер работает с TTL уровнями сигналов: «1» — это +5В, а «0» — это 0В. То есть программатор должен преобразовывать уровни сигналов ±10В в 0,+5В.

Во-вторых, линия данных — двунаправленная, то есть часть времени соответствующая нога контроллера работает как вход и считывает уровень сигнала с этой линии (принимает данные), а часть времени — как выход, тогда контроллер сам управляет уровнем сигнала на линии (посылает данные). Это важно, поскольку схема программатора должна исключить ситуацию, когда линия данных программатором установилась в высокий уровень, а контроллер взял и уронил эту линию в низкий уровень, иначе получится КЗ. Можно спалить и контроллер, и программатор. Кроме того, нужно исключить возможность возникновения такого КЗ и на линии CLOCK, поскольку после программирования контроллер может начать выполнять зашитую программу, в которой нога, используемая для приёма сигналов тактирования, может быть сконфигурирована как выход и притянута к нулю начавшей выполняться программой.

В-третьих, для программирования контроллеру необходимы: напряжение питания Vdd = +5В и напряжение программирования Vpp = +12,5В. Где вы их возьмёте — решать вам. Сможете организовать питание от порта, не перегрузив его при этом — хорошо, не сможете — подведите внешнее питание.

В-четвёртых, программатор должен обеспечить правильный алгоритм подачи напряжений для перехода в режим программирования. (Подобные алгоритмы для пик-контроллеров можно найти здесь). Пока этих шагов не сделано — на линиях DATA и CLOCK должен быть низкий уровень. Это нужно для того, чтобы при переходе в режим программирования указатель установился на начало памяти (на нулевой адрес), иначе программа может начать заливаться не с начала и не по тем адресам, если вообще начнёт заливаться.

С учётом всего сказанного выше, окончательно структурная схема будет выглядеть так:

Элементы схемы, показанные пунктирной линией, а также элементы в скобках, могут отсутствовать или имеют альтернативу. Вот и всё, реализовать каждый из кусочков можно десятками и сотнями разных способов, соответственно, можно придумать огромное количество различных вариантов программаторов, которые будут работать как JDM. Пугаться не надо, на самом деле структурная схема на картинке выглядит страшнее, чем всё это в реальности, например, простейшая схема развязки — это всего лишь резисторы на линиях DATAOUT и CLOCK.

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

Источник

JDM – совместимый программатор для PIC на макетке размером 2х8 см

Решил переделать имеющуюся простую и дешевую реализацию программатора для микроконтроллеров PIC.

Вот, что у меня получилось

Чтобы не запутаться при монтаже, порисовал в sPlan и Sprint-Layout

Расположение компонентов, слева от платы подписаны номера выводов разъема DB-9 (F) (проводники от разъема припаиваются к площадкам второго слева ряда, к 1 2 3 4 и 6 если считать сверху), справа назначение выводов штыревого шестипинового PLS разъема CON1

Схема разводки для монтажа проводников, вид снизу платы

Для программирования МК в панельке на плате программатора надо соединить выводы разъема CON1 с соответствующими выводами рядом с DIP-28 панелькой микросхемы. Ниже схема распиновки МК в разных корпусах

Для программирования программатор подключается к физическому COM порту компьютера. Через дешевые переходники USB-to-COM, программатор работать не будет, так как такие переходники не обеспечивают необходимые уровни сигналов.

Проверил на PIC16F1938-I/SP которая будет использоваться в автоматическом тюнере

Программу использовал PICPgm версии 1.9.3.1 (последняя на момент записи блога). Перед подключением программатора в настройках программы установил автоматическое определение типа программатора и тип программируемого МК. Параметр Timing Delay Factor для пущей надежности установил в slow

При подключенном программаторе программа успешно определила и тип программатора и установленный МК

Запись МК и верификация прошли успешно

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

Внимание! Перед записью МК стоит лишний раз обратить на информацию из авторской статьи, а именно:

“Одно важное ограничение которое вы должны знать перед сборкой это то что программатор не подойдет для программирования некоторых чипов. А именно чипов в которых линии PGD и PGC (Data и Clock) находятся на тех же пинах где и сигнальные линии модуля USB (D+, D-). Из-за такого совмещения на этих пинах в этих МК нельзя превышать напряжение 3,6v – в результате PIC JDM может навредить таким МК”.

Источник

Самодельный программатор для PIC-контроллеров

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

Как ни странно, но при всём величии сети Интернет в нём очень мало информации о прошивке PIC-контроллеров, а тот материал что удаётся найти — очень сомнительного качества. Конечно, можно купить заводской программатор за неадекватную цену и шить сколько душе угодно, но что делать, если человек не занимается серийным производством. Для этих целей можно собрать несложную и не дорогую в реализации самоделку, именуемую JDM-программатором по приведенной ниже схеме (рисунок №1):

Как можно догадаться, в схеме моего программатора использован корпус DIP8. При большом желании можно изготовить универсальный переходник под каждый тип микросхемы, получив тем самым универсальный программатор. Но так как с PIC-контроллерами работаю редко, для меня хватит и этого.

Хоть сама схема довольно проста и не вызовет трудностей в сборке, но она тоже требует уважения. Поэтому неплохо было бы сделать под неё печатную плату. После некоторых манипуляций с программой SprintLayout, текстолитом, дрелью и утюгом, на свет родилась вот такая заготовка (фото №3).

Первым делом выбираем тип программатора — JDM Programmer. Далее выставляем радиокнопку использования драйвера Windows. Следующий шаг подразумевает выбор COM-порта, к которому подключен ваш программатор. Если он один, вопросов вообще нет, а если более одного — посмотрите в диспетчере устройств, какой на данным момент используется. Ползунок задержки ввода/вывода предназначен для регулирования скорости записи и чтения. Это может понадобится на быстрых компьютерах и при возникновении проблем с прошивкой — этот параметр необходимо увеличить. В моём случае он остался по умолчанию равным 10 и всё нормально отработало.

На этом настройка программы IC-Prog окончена и можно переходить к процессу самой прошивки, но для начала считаем данные с микроконтроллера и посмотрим что в него записано. Для этого на панели инструментов нажимаем на значок микросхемы с зелёной стрелкой, как показано на скриншоте №11.

Источник

Простой USB программатор PIC

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

Однажды я решил собрать несложный LC-метр на pic16f628a и естественно его надо было чем-то прошить. Раньше у меня был компьютер с физическим com-портом, но сейчас в моём распоряжении только usb и плата pci-lpt-2com. Для начала я собрал простой JDM программатор, но как оказалось ни с платой pci-lpt-com, ни с usb-com переходником он работать не захотел (низкое напряжение сигналов RS-232). Тогда я бросился искать usb программаторы pic, но там, как оказалось всё ограничено использованием дорогих pic18f2550/4550, которых у меня естественно не было, да и жалко такие дорогие МК использовать, если на пиках я очень редко что-то делаю (предпочитаю авр-ы, их прошить проблем не составляет, они намного дешевле, да и программы писать мне кажется, на них проще). Долго копавшись на просторах интернета в одной из множества статей про программатор EXTRA-PIC и его всевозможные варианты один из авторов написал, что extrapic работает с любыми com-портами и даже переходником usb-com.

В схеме данного программатора используется преобразователь логических уровней max232.

Я подумал, если использовать usb адаптер, то будет очень глупо делать два раза преобразование уровней usb в usart TTL, TTL в RS232, RS232 обратно в TTL, если можно просто взять TTL сигналы порта RS232 из микросхемы usb-usart преобразователя.

Так и сделал. Взял микросхему CH340G (в которой есть все 8 сигналов com-порта) и подключил её вместо max232. И вот что получилось.

В моей схеме есть перемычка jp1, которой нет в экстрапике, её я поставил потому что, не знал, как себя поведёт вывод TX на ТТЛ уровне, поэтому сделал возможность его инвертировать на оставшемся свободном элементе И-НЕ и не прогадал, как оказалось, напрямую на выводе TX логическая единица, и поэтому на выводе VPP при включении присутствует 12 вольт, а при программировании ничего не будет (хотя можно инвертировать TX программно).

После сборки платы пришло время испытаний. И тут настало главное разочарование. Программатор определился сразу (программой ic-prog) и заработал, но очень медленно! В принципе — ожидаемо. Тогда в настройках com порта я выставил максимальную скорость (128 килобод) начал испытания всех найденных программ для JDM. В итоге, самой быстрой оказалась PicPgm. Мой pic16f628a прошивался полностью (hex, eeprom и config) плюс верификация где-то 4-6 минут (причём чтение идёт медленнее записи). IcProg тоже работает, но медленнее. Ошибок про программировании не возникло. Также я попробовал прошить eeprom 24с08, результат тот же — всё шьёт, но очень медленно.

Выводы: программатор достаточно простой, в нём нет дорогостоящих деталей (CH340 — 0.3-0.5$, к1533ла3 можно вообще найти среди радиохлама), работает на любом компьютере, ноутбуке (и даже можно использовать планшеты на windows 8/10). Минусы: он очень медленный. Также он требует внешнее питание для сигнала VPP. В итоге, как мне показалось, для нечастой прошивки пиков — это несложный для повторения и недорогой вариант для тех, у кого нет под рукой древнего компьютера с нужными портами.

Вот фото готового девайса:

Как поётся в песне «я его слепила из того, что было». Набор деталей самый разнообразный: и smd, и DIP.

Для тех, кто рискнёт повторить схему, в качестве usb-uart конвертера подойдёт почти любой (ft232, pl2303, cp2101 и др), вместо к1533ла3 подойдёт к555, думаю даже к155 серия или зарубежный аналог 74als00, возможно даже будет работать с логическими НЕ элементами типа к1533лн1. Прилагаю свою печатную плату, но разводка там под те элементы, что были в наличии, каждый может перерисовать под себя.

Источник

Читайте также:  Ремонт генератора ваз классика своими руками

Чиним и ремонтируем © 2021
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.