При проектировании и создании устройств на ПИК-контроллерах одной из задач является запись управляющей программы в память процессора. В данном случае подразумеваются ПИК-контроллеры с т.н. флэш-памятью программ, в маркировке которых присутствует буква "F" (например, PIC16F877A). Заложенный в этих микросхемах механизм предполагает упрощенный режим прошивки микрокода. Для этого нужны две вещи - адаптер (программатор), подключаемый к компьютеру, и управляющая программа (софт), выполняющая непосредственно саму процедуру прошивки. Конечно, более профессиональным решением было бы приобретение программатора промышленного изготовления, поддерживаемого непосредственно из среды программирования и обладающего такой полезной функцией, как режим отладки (debugger). Но, в любительских целях ТАКИЕ затраты вряд ли можно считать оправданными. Хотя, последнее - это чисто мое мнение, не претендующее на истину в последней инстанции...
На этой странице в хронологическом порядке описаны те програматоры (и управляющие ими программы) которые я использовал при создании своих конструкций. Указанные как схемы, так и программы были найдены в интернете, причем в открытых источниках (ссылки приводятся) и являются бесплатными.
Первым процессором, с которым мне довелось иметь дело, был PIC16F877A. Как показала практика, начинать поиск нужно не со схемы програматора, а с управляющей программы. И уже потом смотреть, какие типы програматоров она поддерживает. Поиск самых простейших вариантов програмирования прошивки в этот процессор дал комбинацию программы FPP (Flash Pic Programing) [2] и програматора TLVP (Trivial Low Voltage Programator) [1]. Схема програматора приведена ниже (на рис. 1).
Рис. 1 — Схема програматора TLVP
Как видно из приведенной схемы, она действительно весьма тривиальна. А с учетом того, что, когда я впервые увидел схему на сайте Байрона Джэфа, в ней было еще на две детали меньше (не было "антизвоновой цепи" из резистора на 270 Ом и конденсатора на 1 мкФ), то "железяка" была и того проще. Возник вопрос - чем менять регистр 74xx573. Порылся в справочниках, нашел 1533ИР22, являющуюся аналогом 74хх373, и написал письмо Байрону Джэфу с вопросом "А можно ли заменить 573 на 373 ?". Через время пришел его ответ - что все должно работать. Правда, терпения у меня не хватило, и еще до того, как пришел ответ, я на практике уже проверил работоспособность. Все работало отлично.
Один нюанс, и немаловажный. В названии програматора присутствует абревиатура LVP (Low Voltage Programator - т.е. "низковольтное програмирование"). Это означает, что используется именно низковольтное програмирование процессора, и, как следствие:
Сама программа FPP (Flash Pic Programing) также предельно проста. Скачайте архив (программа бесплатная), выложенный на странице автора [2], распакуйте в любую (или новую) папку на диске и запускайте. Внешний вид программы показан на рис. 2 (ниже).
Рис. 2 — Интерфейс программы FPP (Flash Pic Programing)
Первым делом нужно нажать кнопку "Setup", и Вы попадёте в меню настройки, показанное на рис. 3 (ниже). В нем в поле "Hardware" из выпадающего списка выбрать програматор - "TLVP"; в пункте "on port" выбрать номер порта, к которому подключен програматор (обычно LPT1); а в поле "Device" из выпадающего списка выбрать процессор (в моем случае это был PIC16F877). После этого нажимаем кнопку "ОК" и возвращаемся в саму программу.
Рис. 3 — Меню настройки программы FPP
При желании Вы можете использовать данную программу с другим програматором. Но при этом Вам придется ее настроить. Для этого существует меню расширенной настройки. Чтобы попасть в него, нужно в меню настройки (вызываемом кнопкой "Setup") нажать кнопку "Define/Test". Вы попадете в меню, показанное на рис. 4 (ниже). В моем случае (програматор TLVP) этого не потребовалось...
Рис. 4 — Меню расширенной настройки программы FPP
Вкратце сама процедура записи прошивки в процессор (в основном окне программы - см. рис. 2):
Переход на 18-е ПИК-и заставил искать новую программу для записи. А c другой стороны, я решил отказаться от низковольтного (LVP) програмирования (все-таки было мне жалко одну ногу процессора не использовать в конечных конструкциях). Итогом поисков (естественно, "комплексных") стала программа "PP18 : Programmer for PIC18" ([3]). На этом же сайте была взята мной и схема программатора "SCHAER+: PIC18 programmer" - [4]. Вот она:
Рис. 5 — Схема програматора SCHAER+
На странице [4] приведена не только схема, но и разводка печатной платы программатора SCHAER+. Лично для себя я развел эту плату по новой (см. рис. 6 ниже), но принципиальных различий НЕТ. Всё это выложено у меня на сайте в документе [5] - там в одном PDF-е "живёт" всё сразу: схема, плата, расположение деталей и зеркальное изображение дорожек для "лазерного утюга"...
Рис. 6 — Моя разводка платы програматора SCHAER+
В итоге, "мой" програматор SCHAER+ выглядит так, как показано на рис. 7 (ниже).
Рис. 7 — Внешний вид моей платы програматора SCHAER+
Теперь о самой программе "PP18: Programmer for PIC18". Главный нюанс её в том, что она - модульная. То есть, есть сама програма - оболочка, "не знающая" никаких процессоров, и есть модули (dll-файлы), каждый для своего процессора. Соответственно, Вам для работы со страницы автора [3] необходимо скачать как минимум два архива - самой программы PP18.EXE и модуля под выбранный процессор (например, PIC18F458 DLL). Распакуйте оба архива в ОДНУ любую (или новую) папку на диске и запускайте. Внешний вид программы показан на рис. 8 (ниже).
Рис. 8 — Настройка программы "PP18 : Programmer for PIC18" - выбор dll-библиотеки
При первом запуске программы "PP18: Programmer for PIC18" её нужно настроить на работу с требуемой dll-библиотекой (читай - выбранным процессором). Для этого правой кнопкой мыши нужно щелкнуть на изображении ZIF-socket-а в правой стороне интерфейса программы и выбрать пункт "Select Plug-in" (см. рис. 8 выше). После этого нужно указать путь к выбранному dll-файлу.
Более подробно о работе с самой программой можно прочесть на посвященной ей странице в интернете - [3] (правда, на английском языке).
Кроме того, доводилось мне совместно с програматором SCHAER+ использовать и другую программу: "IC-Prog" (версия 1.05D) [6]. При этом, чтобы программатор работал нормально, нужно зайти в пункт "Настройки Программатора" программы "IC-Prog" и:
Рис. 9 — Конфигурация программы "IC-Prog" (версия 1.05D) для работы с програматором "SCHAER+"
От описанных выше програматоров мне пришлось отказаться. Они работали без проблем, пока были подключены к старенькому ноутбуку (Pentium-150), у которого на выходе LPT-порта уровень "единицы" равнялся 5-и Вольтам. Но, после того как я "махнул не глядя" ноутбук на более "свежий", у которого уровень "единицы" на выходе LPT-порта (наверное, в целях энергосбережения) снизили до 3-х Вольт, с програматорами начались "приколы". Кроме того, на старом ноутбуке был установлен "старый" Windows-98, при котором описанные выше программы легко получали прямой доступ у LPT-порту (а это им необходимо для нормальной работы). А вот Windows-2000, установленный на "более свежем" ноутбуке, такого уже не позволяет, что прибавило дополнительного "геморроя" с установкой и настройкой дополнительных драйверов для прямого доступа к порту (типа AllowIo, Porttalk, и т.п.)...
Решил я тут повозиться с процессором PIC18F4550. И вдобавок к "чудесам", описанным абзацем выше, добавилась необходимость шить ПИК "в два присеста".
Это было последней каплей, вынудившей начинать новый этап поисков. Как показал анализ, очень много программ для записи ПИК-ов поддерживают програматор JDM. Но, "в чистом виде" у этого предельно простого програматора также могли быть проблемы с совместимостью (уровнями сигналов COM-порта). И вот, на русском форуме, посвященному процессорам от Микрочипа, я нашел ссылку на програматор EXTRA PIC [7]. Схему его я привожу ниже (рис. 10).
Рис. 10 — Принципиальная схема програматора EXTRA PIC
Как видно из схемы, волновавшая меня проблема совместимости, решена использованием специализированной микросхемы - МАХ232. После того, как развел плату (рис. 11) и спаял програматор, я убедился, что вопросов по поводу его работы не возникает абсолютно. Писать еще что-либо о програматоре смысла не вижу, так как на странице [7] все это уже сделано на должном уровне.
Рис. 11 — Моя разводка платы програматора EXTRA PIC
"Свою" версию печатной платы я не выкладываю ибо, как видно на странице [7] - это коммерческая разработка ее авторов. Там Вы сможете приобрести либо готовый програматор, либо полный набор деталей для его самостоятельного изготовления, либо одну лишь печатную плату...
Рис. 12 — Внешний вид моей платы програматора EXTRA PIC
С данным програматором я проверял работу следующих программ:
Во всех этих программах при настройке нужно указать, что Вы используете програматор JDM.
О том, как под управлением Windows-2000 программе "IC-Prog" предоставить прямой доступ к порту, описано на ее сайте [6]. А вот при запуске программ "WinPic" и "WinPic 800" подобного вопроса у меня не возникло вообще - они "решили проблему" самостоятельно. Кстати, у всех трех указанных программ возможен выбор русского языка интерфейса.
Рис. 13 — Интерфейс программы "WinPic 800"
Ну вот, на этом история "моих" програматоров пока что заканчивается. Хотя, есть еще вот это...
Обобщения и разлагольствования — ©Дмитрий Харций