Простейший программатор JDM для PIC на пассивных компонентах. Прошивка PIC микроконтроллеров с "нуля" Простой программатор для пик контроллеров своими руками

Когда я начал заниматься PIC-контроллерами, то, естественно, первым делом встал вопрос о выборе программатора. Поскольку фирменные программаторы дело не дешевое, да и вообще покупать программатор мне показалось не спортивным, было принято решение собрать его самостоятельно. Облазив просторы Интернета я скачал схему и собрал JDM-программатор. Он работал очень плохо: то заливал какую-то фигню, то не заливал первые несколько байт, то вообще ни хрена не заливал.

Существенным недостатком JDM-программатора является то, что он не может контролировать линию Vdd и, как следствие, - не может реализовать правильный алгоритм подачи напряжений (сначала Vpp, потом Vdd) при программировании. Если контроллер сконфигурирован таким образом: "Internal Oscillator" , "MCLR Off", то при неправильной последовательности подачи напряжений он сначала запускается и начинает выполнять ранее зашитую в нем программу, а потом переходит в режим программирования (при этом указатель может указывать куда угодно, а не на начало памяти программ). В связи с этим: то, куда будет залита ваша программа, да и будет ли залита вообще - большой вопрос!

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

На диодах D1...D4 и стабилитроне D6 выполнен простейший преобразователь уровней RS232->TTL. Когда на линиях DATA, CLOCK напряжение меньше 0В, то они через диоды D1, D2 подтягиваются к земле, а когда напряжение на этих линиях больше 5В, то они через диоды D3, D4 подтягиваются к питанию +5В, которое задается стабилитроном D6.

Питается этот девайс прямо от COM-порта. Стабилитроны и диоды в этой схеме вполне можно заменить отечественными: Д814Д, КС147А и т.д.

Каким образом реализуется правильный алгоритм подачи напряжений и откуда вообще берутся 13 Вольт напряжения программирования? Всё как всегда очень просто.

При инициализации порта на выходе TxD висит "-10В". При этом конденсатор С1 заряжается через стабилитрон D7 (который в данном случае оказывается включён в прямом направлении и работает в качестве диода). Т.е. напряжение на плюсовой ноге С1 относительно GND равно нулю, но относительно TxD=+10В (или сколько там у вас напряжение на выходе COM-порта).

Теперь представим, что происходит при изменении напряжения на выходе TxD с -10В до +10В. Одновременно с ростом напряжения на выводе TxD, начнёт расти и напряжение на плюсовой ноге конденсатора С1. Заряд не может слиться на землю через D7, т.к. теперь D7 включен обратно, единственный путь - утечка через PIC, но ток там мизерный. Итак, напряжение на плюсовой ноге С1 (а, следовательно и на выводе MCLR) начинает расти. В момент, когда на TxD ноль относительно земли, на конденсаторе С1 (на его плюсовой ноге, а следовательно и на MCLR) относительно земли как раз +10В. Когда на TxD +3В, - на С1 уже 3+10=13В. Вот и всё, напряжение Vpp уже подано, а на линии VDD ещё только +3В.

При дальнейшем росте напряжения на TxD, - напряжение на С1 не растёт, так как начинает работать стабилитрон D7. При росте напряжения на TxD выше +5В начинает работать стабилитрон D6.

Чтобы ограничить ток разряда конденсатора C1 через стабилитрон D7, в схему включен резистор R6, соответственно, напряжение на C1 не точно равно напряжению стабилизации, а несколько выше: UC1=Uст+IРАЗР*R6. Для подстройки напряжения программирования служит сопротивление R3. Можно поставить переменное 10КОм или подобрать постоянное, так, чтобы напряжение программирования было примерно 13 В (в устройстве, представленном на рисунке ниже R3=1,2 кОм).

Я успешно программирую этим программатором контроллеры и , однако автор утверждал, что этим программатором (в представленном мной варианте) можно программировать , и . Кроме этих, на сайте автора feng3.cool.ne.jp есть модификации программатора для других PIC-контроллеров.

Готовые девайсы:


Вариант программатора от Mixer:

Программу IC-prog 1.05D, для прошивки контроллеров, можно скачать в разделе " ". При прошивке выбрать тип программатора JDM. Включить контроль Vcc для JDM. При использовании совместно с операционными системами Windows 2000/NT/XP - выбрать интерфейс Windows API и включить галочку "Enable NT/2000/XP driver", в остальных случаях используйте интерфейс Direct I/O.


Еще одно. Господа, сохраняйте пожалуйста при прошивке калибровочные биты или потом не жалуйтесь, что на внутреннем генераторе нестабильно работает/не работает!!!

Скачать печатную плату (AutoCAD2000i) можно по ссылке. Печатная плата от Mixer (DipTrace 2.0) доступна по ссылке

За основу предлагаемого программатора взята публикация из журнала «Радио» №2, 2004г, «Программирование современных PIC16, PIC12 на PonyProg». Это мой первый программатор, который я использовал для прошивки PIC микросхем дома. Программатор представляет собой упрощенный вариант JDM программатора, оригинальная схема имеет преобразователь RS-232 на TTL в виде микросхемы MAX232, она более универсальна, но ее «на коленке» уже не соберешь. Данная схема не имеет вообще ни одного активного компонента, не содержит дефицитных деталей и очень проста, может быть собрана без применения печатной платы.

Рис. 1: Принципиальная схема программатора.

Описание работы схемы
Схема программатора представлена на рис. 1. Резисторы по цепям CLK (тактирование), DATA (информационный), Upp (напряжение программирования) служат для ограничения протекающего тока. PIC контроллеры защищены от пробоя встроенными стабилитронами, поэтому получается некоторая совместимость TTL и RS-232 логики. В представленной схеме присутствуют диоды VD1, VD2, которые «отбирают» плюсовое напряжение от COM порта относительно 5 контакта и передают его на питание контроллера, благодаря чему в некоторых случаях удается избавиться от дополнительного источника питания.

Налаживание
На практике не всегда случается, что данный программатор заработает без налаживания, с 1-го раза, т.к. работа данной схемы сильно зависит от параметров COM порта. Однако у меня, на двух материнских платах Gigabyte 8IPE1000 и WinFast под XP все заработало сразу. Если Вам лень разбираться с неработающей, более сложной схемой программатора, то стоит попробовать собрать эту. Вот некоторые вещи, которые могут повлиять:

Чем новее мат. плата, тем разработчики уделяют этим портам меньше внимания, потому что эти порты давно стали морально устаревшими. Избавиться от этого можно, купив переходник USB-COM, правда опять же купленное устройство может не подойти. Нужные параметры таковы: изменяемое напряжение должно меняться не менее -10В до +10В (лог. 0 и 1) относительно 5-го контакта разъема. Отдааваемый ток должен быть хотя бы таким, чтобы при подключеннии резистора 2,7 кОм между 5-м контактом и исследуемым контактом напряжение не падало ниже 10В (сам таких плат не встречал). Также порт должен правильно определять напряжения, поступающие от контроллера, при уровне напряжения близкого к 0В, но не больше 2В определяется нуль, и соответственно при выше 2В определяется единица.

Также проблемы могут возникнуть из за программного обеспечения.
Особенно это касается ОС LINUX, т.к. из за наличия эмуляторов типа wine, VirtualBox порты могут работать неправильно, а возможностей от них требуется много. Этих проблем я коснусь подробнее в другой статье.

Зная эти особенности, приступим к налаживанию.
Для этого очень желательно иметь программу ICProg 1.05D.
В меню программы нужно во первых выбрать в настройках соотв. порт (COM1. COM2), выбрать JDM программатор. Затем открыть окно «Hardware Check», в меню «Settings». В этом меню нужно по очереди ставить галочки и вольтметром измерять напряжение на контактах подключенного разъема. Если параметры напряжения не соответствуют норме, то к сожалению, это может быть причиной неработоспособности, тогда придется собирать схему с преобразователем RS-232 TTL. Отметив все галочки, нужно убедиться, что на стабилитроне образуется напряжение питания около 5В. Если напряжения в норме и отсутствуют ошибки монтажа, то все должно сработать. Ставим контроллер в панельку, открываем прошивку, программируем. Галочки типа «Invert data out» включать не надо (все сняты). Также не нужно забывать, что некоторые партии контроллеров могут иметь не совсем стандартные параметры, и их прошить не получается, в таких случаях с данным программатором можно попробовать только снизить напряжение питания с 5В до 3-4В, подключив соотв. стабилитрон, посмотреть контроллер на предмет ошибочного включения режима LVP (низковольтное программирование), как предотвратить, можно прочитать в Интернете для конкретного типа контроллера. Повысить напряжение программирования проблеммного контроллера можно, наверное, только усложнив схему введением усилительного каскада с общим эмиттером, запитанного от дополнительного источника питания.

Теперь подробнее о проблеме с питанием устройства. Программатор тестировался с программами ICProg и консольным picprog под Linux, должен работать с любым, который поддерживает JDM, если подключить дополнительный источник питания (он подключается через резистор 1кОм к стабилитрону, диоды с резисторами в этом случае можно вообще исключить). Дело в том, что алгоритмы управления программаторов у отдельного софта разные, программа ICProg, является самой неприхотливой. Замечено, что в ОС Windows эта программа на неиспользуемом контакте 2 поднимала нужное напряжение питания, эта же программа под эмулятором в Linux на другой мат. плате уже не смогла этого сделать, однако выход был найден, отбирая питание из напряжения программирования. В общем, с ICProg, думаю, можно применять этот программатор без дополнительного питания. С другим софтом это гарантировать врядли получится, например, «родной» из репозиториев Ubuntu picprog без питания просто не определяет программатор, выдавая сообщение «JDM hardware not found». Вероятно, он либо принимает какие-то данные, не подавая напряжение программирования, либо делает это слишком быстро, таким образом что фильтрующий конденсатор еще не успевает зарядиться.

В статье рассматривается программатор Extra-PIC, данные о котором получены из (DOC Rev.1.03.00). Программатор рабочий, если все собрать как указано ниже то все работает при первом включении. Лично я взял эту схему с сайта Тимофея Носова

Список поддерживаемых микросхем, при использовании с программой IC-PROG v1.05D:
PIC-контроллеры фирмы Microchip: PIC12C508, PIC12C508A, PIC12C509, PIC12C509A, PIC12CE518, PIC12CE519, PIC12C671, PIC12C672, PIC12CE673, PIC12CE674, PIC12F629, PIC12F675, PIC16C433, PIC16C61, PIC16C62A, PIC16C62B, PIC16C63, PIC16C63A, PIC16C64A, PIC16C65A, PIC16C65B, PIC16C66, PIC16C67, PIC16C71, PIC16C72, PIC16C72A, PIC16C73A, PIC16C73B, PIC16C74A, PIC16C74B, PIC16C76, PIC16C77, PIC16F72, PIC16F73, PIC16F74, PIC16F76, PIC16F77, PIC16C84, PIC16F83, PIC16F84, PIC16F84A, PIC16F88, PIC16C505*, PIC16C620, PIC16C620A, PIC16C621, PIC16C621A, PIC16C622, PIC16C622A, PIC16CE623, PIC16CE624, PIC16CE625, PIC16F627, PIC16F628, PIC16F628A, PIC16F630*, PIC16F648A, PIC16F676*, PIC16C710, PIC16C711, PIC16C712, PIC16C715, PIC16C716, PIC16C717, PIC16C745, PIC16C765, PIC16C770*, PIC16C771*, PIC16C773, PIC16C774, PIC16C781*, PIC16C782*, PIC16F818, PIC16F819, PIC16F870, PIC16F871, PIC16F872, PIC16F873, PIC16F873A, PIC16F874, PIC16F874A, PIC16F876, PIC16F876A, PIC16F877, PIC16F877A, PIC16C923*, PIC16C924*, PIC18F242, PIC18F248, PIC18F252, PIC18F258, PIC18F442, PIC18F448, PIC18F452, PIC18F458, PIC18F1220, PIC18F1320, PIC18F2320, PIC18F4320, PIC18F4539, PIC18F6620*, PIC18F6720*, PIC18F8620*, PIC18F8720*

Примечание: микроконтроллеры, помеченные звездочкой (*) подключаются к программатору только через разъем ICSP.

Последовательная память EEPROM I2C (IIC): X24C01, 24C01A, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, AT24C128, M24C128, AT24C256, M24C256, AT24C512.

Схема программатора.
На стороне программатора используется разъем DB9 типа «гнездо» («мама», «дырки»).
Очень часто ошибаются и ставят «вилку» («папу», «штырьки»), т.е. такое же как и на стороне ПК!

Внимание! Материал только для общей справки. Обязательно убедитесь, что указанное расположение выводов соответствует выбранному вами микроконтроллеру. Для этого, обратитесь к Data Sheets и Programming Specifications на соответствующий микроконтроллер (обычно всё совпадает).

Полный вариант:

Фото готовой платы:

Пошаговая инструкция или «Как прошить PIC-контроллер»

1. Соберите программатор Extra-PIC, отмойте растворителем или спиртом с зубной щеткой, просушите феном.
Осмотрите на просвет на предмет волосковых замыканий и непропаев.
Подготовьте блок питания на напряжение не менее 15В и не более 18 вольт.
РАСПАЯЙТЕ УДЛЕНИТЕЛЬНЫЙ ШНУР
мама-папа для COM-порта (не путать с нуль-модемными и кабелями для модемов; прозвоните шнур — первая вилка, должен идти к первому гнезду и т.д.; нумерация вилок и гнезд нарисована на самом разъеме 1-1, 2-2, 3-3 и т. д до 9-9.). Обязательно сделайте все самостоятельно. У меня была проблема именно с кабелем, а я грешил на программатор =)
2. Скачайте программу IC-PROG с или с сайта разработчиков .
3. Распакуйте программу в отдельный каталог. В образовавшемся каталоге должны находиться три файла:
icprog.exe – файл оболочки программатора;
icprog.sys – драйвер, необходимый для работы под Windows NT, 2000, XP. Этот файл всегда должен находиться в каталоге программы;
icprog.chm – файл помощи (Help file).
4. Настройте программу.

Для Windows95, 98, ME

Для Windows NT, 2000, XP

(Только для Windows XP ):

Правой кнопкой щёлкните на файле icprog.exe.

«Свойства » >> вкладка «Совместимость » >>

Установите «галочку» на

«Запустить программу в режиме совместимости с: » >>

выберите «Windows 2000 «.

Запустите файл icprog.exe .

Выберите «Settings » >> «Options » >> вкладку «Language » >> установите язык «Russian » и нажмите «Ok «.

Согласитесь с утверждением «You need to restart IC-Prog now » (нажмите «Ok «).

Оболочка программатора перезапустится.

«Настройки » >> «Программатор «.

Проверьте установки, выберите используемый вами COM-порт, нажмите «Ok «.

«Вкл. NT/2000/XP драйвер » >> Нажмите «Ok » >>

если драйвер до этого не был установлен в системе, в появившемся окне «Confirm » нажмите «Ok «. Драйвер установится, и оболочка программатора перезапустится.

Примечание:

Для очень «быстрых» компьютеров возможно потребуется увеличить параметр «Задержка Ввода/Вывода «. Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы.

«Настройки » >> «Опции » >> выберите вкладку «I2C » >> установите «галочки» на пунктах:

«Включить MCLR как VCC » и «Включить запись блоками «. Нажмите «Ok «.

Программа готова к работе.

5. Установите микросхему в панель программатора, соблюдая положение ключа.
6. Подключите шнур удлинителя, включите питание.
7. Запустите программу IC-Prog.
8. В выпадающем списке выберите контроллер PIC16F876A.

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

Принципиальная схема программатора для pic контроллеров:

Питание на саму схему не требуется, ведь для этого служит COM порт компьютера, через который и осуществляется управление прошивкой микроконтроллера. Для низковольтного режима программирования вполне достаточно 5в, но могут быть не доступны все опции для изменения (фьюзы). Разъем подключения COM-9 порта смонтировал прямо на печатную плату программатора для PIC - получилось очень удобно.

Можно воткнуть плату без лишних шнуров прямо в порт. опробован на различных компьютерах и при программировании МК серий 12F,16F и 18F, показал высокое качество прошивки. Предложенная схема позволяет программировать микроконтроллеры PIC12F509, PIC16F84A, PIC16F628. Например недавно с помощью предложенного программатора успешно был прошит микроконтроллер для .

Для программирования используется WinPic800 - одна из лучших программ для программирования PIC контроллеров. Программа позволяет выполнять операции для микроконтроллеров семейства PIC: чтения, записи, стирания, проверки FLASH и EEPROM памяти и установку битов конфигураций.

Вот есть микроконтроллер, есть написанная программа. Что ещё нужно? Программатор! Ведь без помощи аппаратуры, которая сможет записать последовательностью сигналов процесс, который хочет реализовать человек, сложно будет что-то сделать. А как здорово сделать программатор своими руками!

Также здесь вы найдете описание программаторов и из другого семейства - АВР, но исключительно в сравнительных целях. Приступим к статье, где рассказывается, как сделать программатор-flash своими руками.

Для чего необходим программатор

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

Платные против самодельных

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

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

Драйвера

Первоначально следует подобрать программное обеспечение. В зависимости от схемы программатор может быть заточен или под один микроконтроллер, или под большое их количество. Тот, что будет далее рассматриваться, рассчитан примерно на 98 программаторов от 12-го до 18-го семейств. Для тех, кому понравится вариант сборки, следует уточнить, что в качестве драйверного программного обеспечения использовалась программа IC-PROG. Можете попробовать работать и с другой, но уже на свой страх и риск. Это информация для тех, кто хочет создать программатор для AVR своими руками. Далее будет указано, для каких семейств микроконтроллеров РІС он рассчитан. Если есть желание сделать программатор AVR своими руками или какой-то другой тип МК, то вы всегда можете попытаться.

Схема программатора

Вот тут уже можно попробовать сделать программатор для PIC своими руками. В качестве гнезда необходимо использовать разъем DB9. Можно сделать и USB-программатор своими руками, но для него понадобятся дополнительные элементы схемы, которые усложнят и без того довольно сложную плату. Также внимательно рассмотрите рисунок с различными прямоугольниками (чтобы знать, какие части за что отвечают). Выводы должны подключатся именно туда, куда нужно, иначе микроконтроллер превратится в небольшой кусочек пластика и железа, который можно поставить на стеночку как напоминание о былых ошибках. Процесс сборки и использования программатора таков:

  1. Собрать сам программатор так, как написано на схемах. Просмотреть на наличие некачественной пайки, а также потенциальных мест замыкания. Программатор рассчитан на работу с напряжением 15-18В, больше категорически не рекомендуется.
  2. Подготовьте среду управления прошивкой (выше было упоминание одной программы, с которой программатор точно работает).

Процесс прошивки микроконтроллера

Процесс прошивки микроконтроллера данными можно считать продолжением предыдущего списка:

  1. Произвести необходимые для работы программы настройки.
  2. Установить микроконтроллер в программатор так, как отмечено на схеме. Лучше лишний раз убедиться, что всё так, как должно быть, чем ехать за новым МК.
  3. Подключить питание.
  4. Запустить выбранное программное обеспечения (для этого программатора ещё раз посоветуем IC-Prog).
  5. В выпадающем меню вверху справа выбрать, какой именно микроконтроллер следует прошить.
  6. Подготовленный файл выбрать для программирования. Для этого перейдите по пути "Файл" - "Открыть файл". Смотрите, не перепутайте с «Открыть файл данных», это совсем другое, прошить микроконтроллер с помощью второй кнопки не получится.
  7. Нажать на кнопку «Начать программировать микросхему». Примерное время, через которое она будет запрограммирована - до 2 минут. Прерывать процесс программирования нельзя, это чревато выведением из строя микроконтроллера.
  8. И в качестве небольшого контроля нажмите на кнопку «Сравнить микросхему с буфером».

Не очень сложно, но эта последовательность действий позволяет получить качественный программатор, своими руками сделанный, для различных типов микроконтроллеров РІС.

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

Как уже выше упоминалось, этот программатор может работать как минимум с 98 моделями. Как можно заметить по схематическим рисункам и платам, он рассчитан на те МК, что имеют 8, 14, 18, 28 и 40 выводов. Этого должно хватить для самых различных экспериментов и построения самых разных механизмов, которые только можно сделать в пределах скромного бюджета среднестатистического гражданина. Можно выразить уверенность, что сделанный программатор своими руками сможет удовлетворить самых требовательных радиолюбителей - при условии, что он будет сделан качественно.

2024 serikovdetailing.ru. Автомобильный портал.