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

Микроконтроллеры PIC заслужили славу благодаря своей неприхотливости и качеству работы, а также универсальности в использовании. Но что может дать микроконтроллер без возможности записывать новые программы на него? Без программатора это не больше чем кусочек удивительного по форме исполнения железа. Сам программатор PIC может быть двух типов: или самодельный, или заводской.

Различие заводского и самодельного программаторов

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

Заводской программатор от Microchip

Самый известный и популярный - простой программатор PIC, который использует множество людей и известный для многих под названием PICkit 2. Его популярность объясняется явными и неявными достоинствами. Явные достоинства, которые имеет этот USB программатор для PIC, можно перечислять долго, среди них: относительно небольшая стоимость, простота эксплуатации и универсальность относительно всего семейства микроконтроллеров, начиная от 6-выводных и заканчивая 20-выводными.

Использование программатора от Microchip

По его использованию можно найти много обучающих уроков, которые помогут разобраться с всевозможными аспектами использования. Если рассматривать не только программатор PIC, купленный «с рук», а приобретенный у официального представителя, то можно ещё подметить качество поддержки, предоставляемое вместе с ним. Так, в дополнение идут обучающие материалы по использованию, лицензионные среды разработки, а также демонстрационная плата, которая предназначена для работы с маловыводными микроконтроллерами. Кроме всего этого, присутствуют утилиты, которые сделают работу с механизмом более приятной, помогут отслеживать процесс программирования и отладки работы микроконтроллера. Также поставляется утилита для стимулирования работы МК.

Другие программаторы

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

Программаторы, собранные вручную

А теперь, пожалуй, самое интересное - программаторы PIC-контроллеров, которые собираются вручную. Этим вариантом пользуются те, у кого нет денег или просто нет желания их тратить. В случае покупки у официального представителя можно рассчитывать на то, что если устройство окажется некачественным, то его можно вернуть и получить новое взамен. А при покупке «с рук» или с помощью досок объявлений в случае некачественной пайки или механических повреждений рассчитывать на возмещение расходов и получение качественного программатора не приходится. А теперь перейдём к собранной вручную электронике.

Программатор PIC может быть рассчитан на определённые модели или быть универсальным (для всех или почти всех моделей). Собираются они на микросхемах, которые смогут преобразовать сигналы с порта RS-232 в сигнал, который позволит программировать МК. Нужно помнить, что, когда собираешь данную кем-то конструкцию, программатор PIC, схема и результат должны подходить один к одному. Даже небольшие отклонения нежелательны. Это замечание относится к новичкам в электронике, люди с опытом и практикой могут улучшить практически любую схему, если есть куда улучшать.

Отдельно стоит молвить слово и про программный комплекс, которым обеспечивают USB-программатор для PIC, своими рукамисобранный. Дело в том, что собрать сам программатор по одной из множества схем, представленных в мировой сети, - мало. Необходимо ещё и программное обеспечение, которое позволит компьютеру с его помощью прошить микроконтроллер. В качестве такового довольно часто используются Icprog, WinPic800 и много других программ. Если сам автор схемы программатора не указал ПО, с которым его творение сможет выполнять свою работу, то придется методом перебора узнавать самому. Это же относится и к тем, кто собирает свои собственные схемы. Можно и самому написать программу для МК, но это уже настоящий высший пилотаж.

Универсальные программаторы, которые подойдут не только к РІС

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

Универсальный программатор PIC и AVR - это аппаратура, особенность которой заключается в её универсальности и возможности изменять работу благодаря программе, не внося изменений в аппаратную составляющую. Благодаря этому свойству такие приборы легко работают с МК, которые были выпущены в продажу уже после выхода программатора. Учитывая, что значительным образом архитектура в ближайшее время меняться не будет, они будут пригодны к использованию ещё длительное время. К дополнительным приятным свойствам заводских программаторов стоит отнести:

  1. Значительные аппаратные ограничения по количеству программируемых микросхем, что позволит программировать не одну, а сразу несколько единиц электроники.
  2. Возможность программирования микроконтроллеров и схем, в основе которых лежат различные технологии (NVRAM, NAND Flash и другие).
  3. Относительно небольшое время программирования. В зависимости от модели программатора и сложности программируемого кода может понадобиться от 20 до 400 секунд.

Особенности практического использования

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

Работа с микроконтроллерами

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

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

Возможные проблемы

Увы, даже самая идеальная техника не лишена возможных проблем, которые нет-нет, да и возникнут. Для улучшенного понимания необходимо составить список. Часть из этих проблем можно исправить вручную при детальном осмотре программатора, часть - только проверить при наличии необходимой проверочной аппаратуры. В таком случае, если программатор PIC-микроконтроллеров заводской, то вряд ли починить представляется возможным. Хотя можно попробовать найти возможные причины сбоев:

  1. Некачественная пайка элементов программатора.
  2. Отсутствие драйверов для работы с устройством.
  3. Повреждения внутри программатора или проводов внутри компьютера/USB.

Эксперименты с микроконтроллерами

Итак, всё есть. Как же начать работу с техникой, как начать прошивать микроконтроллер программатором?

  1. Подключить внешнее питание, присоединить всю аппаратуру.
  2. Первоначально необходима среда, с помощью которой всё будет делаться.
  3. Создать необходимый проект, выбрать конфигурацию микроконтроллера.
  4. Подготовить файл, в котором находится весь необходимый код.
  5. Подключиться к программатору.
  6. Когда всё готово, можно уже прошивать микроконтроллер.

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

Хочется отдельно написать обращение к тем, кто только начинает пользоваться программаторами. Помните, что, какими бы элементарными ни казались некоторые шаги, всегда необходимо их придерживаться, чтобы техника нормально и адекватно могла работать и выполнять поставленные вами задачи. Успехов в электронике!

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

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



Рисунок №1 - схема программатора


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

  • R1 - 10 кОм
  • R2 - 10 кОм (подстроченный). Регулировкой сопротивления данного резистора нужно добиться около 13В на выводе №4 (VPP) во время программирования. В моём случае сопротивление составляет 1,2 кОм
  • R3 - 200 Ом
  • R4, R5 - 1,5 кОм
  • VD1, VD2, VD3, VD4, VD6 - 1N4148
  • VD5 - 1N4733A (Напряжение стабилизации 5,1В)
  • VD7 - 1N4743A (Напряжение стабилизации 13В)
  • C1 - 100 нФ (0,1 мкФ)
  • C2 - 470 мкФ х 16 В (электролитический)
  • SUB-D9F - разъём СОМ-порта (МАМА или РОЗЕТКА)
  • Панелька DIP8 - зависит от используемого вами контроллера

В схеме использован пример подключения таких распространённых контроллеров, как PIC12F675 и PIC12F629 , но это совсем не значит, что прошивка других серий PIC будет невозможна. Чтобы записать программу в контроллер другого типа, достаточно перекинуть провода программатора в соответствии с рисунком №2, который приведён ниже.



Рисунок №2 - варианты корпусов PIC-контроллеров с необходимыми выводами


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

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



Фото №3 - печатная плата программатора


Скачать исходник печатной платы для программы SprintLayout можно по этой ссылке:
(скачиваний: 670)
При желании его можно изменить под свой тип PIC-контроллера. Для тех, кто решил оставить плату без изменений, выкладываю вид со стороны деталей для облегчения монтажа (рисунок №4).



Рисунок №4 - плата с монтажной стороны


Ещё немного колдовства с паяльником и мы имеем готовое устройство, способное прошить PIC-контроллер через COM-порт вашего компьютера. Ещё тёпленький и не отмытый от флюса результат моих стараний показан на фото №5.



Фото №5 - программатор в сборе


С этого момента, первый этап на пути к прошивке PIC-контроллера , подошёл к концу. Второй этап будет включать в себя подключение программатора к компьютеру и работу с программой IC-Prog .
К сожалению, не все современные компьютеры и ноутбуки способны работать с данным программатором ввиду банального отсутствия на них COM-портов , а те что установлены на ноутбуках не выдают необходимые для программирования 12В . Так что я решил обратится к своему первому ПК , который давным-давно пылился и ждал своего звёздного часа (и таки дождался).
Итак включаем компьютер и первым делом устанавливаем программу IC-Prog . Скачать её можно с сайта автора или по этой ссылке:
(скачиваний: 769)
Подключаем программатор к COM-порту и запускаем только что установленное приложение. Для корректной работы необходимо выполнить ряд манипуляций. Изначально необходимо выбрать тот тип контроллера, который собираемся шить. У меня это PIC12F675 . На скриншоте №6 поле для выбора контроллера выделено красным цветом.



Скриншот №6 - выбор типа микроконтроллера




Скриншот №7 - настройка метода записи контроллера


В этом же окне переходим во вкладку "Программирование " и выбираем пункт "Проверка при программировании ". Проверка после программирования может вызвать ошибку, так как в некоторых случаях самой прошивкой устанавливаются фьюзы блокировки считывания СР . Чтобы не морочить себе голову данную проверку лучше отключить. Короче следуем скриншоту №8.



Скриншот №8 - настройка верификации


Продолжаем работу с этим окном и переходим на вкладку "Общие ". Здесь необходимо задать приоритет работы программы и обязательно задействовать NT/2000/XP драйвер (скриншот №9). В некоторых случаях программа может предложить установку данного драйвера и потребуется перезапуск IC-Prog .



Скриншот №9 - общие настройки


Итак, с этим окном работа окончена. Теперь перейдём к настройкам самого программатора. Выбираем в меню "Настройки"->"Настройки программатора " или просто нажимаем клавишу F3 . Появляется следующее окно, показанное на скриншоте №10.



Скриншот №10 - окно настроек программатора


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

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



Скриншот №11 - процесс чтения информации с микроконтроллера


Если микроконтроллер новый и до этого не прошивался, то все ячейки его памяти будут заполнены значениями 3FFF , кроме самой последней. В ней будет содержаться значение калибровочной константы. Это очень важное и уникальное для каждого контроллера значение. От него зависит точность тактирования, которая путём подбора и установки этой самой константы закладывается заводом изготовителем. На скриншоте №12 показана та ячейка памяти, в которой будет храниться константа при чтении контроллера.



Скриншот №12 - значение калибровочной константы


Повторюсь, что значение уникальное для каждой микросхемы и не обязательно должно совпадать с тем, что на рисунке. Многие по неопытности затирают эту константу и в последствии PIC-контроллер начинает некорректно работать, если в проекте используется тактирование от внутреннего генератора. Советую записать эту константу и наклеить надпись с её значением прямо на контроллер. Таким образом вы избежите множество неприятностей в будущем. Итак, значение записано - двигаемся дальше. Открываем файл прошивки, имеющий как правило расширение .hex . Теперь вместо надписей 3FFF , буфер программирования содержит код нашей программы (скриншот №13).



Скриншот №13 - прошивка, загруженная в буфер программирования


Выше я писал, что многие затирают калибровочную константу по неосторожности. Когда же это происходит? Это случается в момент открытия файла прошивки. Значение константы автоматически меняется на 3FFF и если начать процесс программирования, то назад дороги уже нет. На скриншоте №14 выделена та ячейка памяти где ранее была константа 3450 (до открытия hex-файла ).

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Программатор PIC контроллеров своими руками

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

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

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

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

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

Различные типы микроконтроллеров PIC12C508, PIC12C509, PIC16C84 и микросхем памяти с интерфейсом I2C программируют, вставляя в разъём как показано на рисунке выше.

Рассказать в:
Быстро собрать понравившуюся схему на микроконтроллере для многих радиолюбителей - не проблема. Но многие начинающие работать с микроконтроллерами сталкиваются с вопросом - как его запрограммировать. Одним из самых простых вариантов программаторов является JDM программатор.
Программа - программатор ProgCode v 1.0Эта программа работает в WindowsXP. Позволяет программировать PIC контроллеры среднего семейства(PIC16Fxxx) через COM порт компьютера. Индикатор подключения программатора(в правом верхнем углу окна) при отсутствии программатора на выбранном в настройках порту окрашивается в красный цвет. Если программатор подключен - программа обнаруживает его и индикатор в правом верхнем углу принимает вид, который показан на рисунке 1. В левой части окна программы расположена панель управления. Эту панель можно свернуть нажав на кнопку в панели инструментов или, кликнув по левому краю окна (это удобно, когда окно программы развёрнуто во весь экран).

Рисунок (скриншот программы ProgCode v1.0)


Если в программу загружается HEX файл, то желательно перед этим выбрать в списке контроллеров тот МК, для которого расчитана загружаемая прошивка. Если этого не сделать, то файл, расчитанный на микроконтроллер с памятью большего размера чем выбран в списке, будет обрезан и части программы потеряна - при таком варианте загрузки файла выводится предупреждение.

Если этого не произошло, то выбрать нужный контроллер можно и после загрузки файла в программу.

Формат файлов SFRВ программаторе ProgCode поддержана работа с собственным форматом файлов. Эти файлы имеют расширение.SFR и позволяют хранить дополнительную информацию о программе, предназначенной для микроконтроллера. В таком файле сохраняется информация о типе микроконтроллера. Это позволяет при загрузке файла формата SFR не беспокоится о предварительном выборе типа МК в настройках.

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



Задержка импульса может быть равна 0. Её регулировка предусмотрена для "особо трудных" экземпляров контроллеров, которые не удаётся прошить. То же самое относится и к надбавке к паузе при записи - по умолчанию она нулевая. Если увеличить значения этих настроек, время программирования контроллера значительно увеличится.

Галочка "проверка при записи" должна быть выставлена, если вам нужно "на лету" проверить всё что записывается в микроконтроллер на правильность и соответствие исходному файлу. Если эту галочку снять проверка не производится вообще и сообщений об ошибках не будет, даже если такие ошибки в реальности будут присутствовать.
Выбор скорости порта - скорость может быть любой. Для JDM программатора этот параметр не имеет значения.

В WindowsXP применяется буферизирование передаваемой через порты COM информации. Это так называемые буфера FIFO. Чтобы избежать ошибок при программировании через JDM этот механизм необходимо отключить. Сделать это можно в диспетчере устройств Windows.

Заходим в панель управления, затем:
Администрирование - управление компьютером - диспетчер устройств

Затем выбираем порт, на который подключен JDM программатор(например COM1) - смотрим свойства - вкладка параметры порта - дополнительно. И снимаем галочку на пункте "Использовать буферы FIFO"

Рисунок - Настройка COM порта для работы с JDM программатором



После этого перезагружаем компьютер.


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

Любой файл при двойном клике по нему в панели обозревателя откроется в самой программе - это относится к рисункам, html файлам, doc, rtf, djvu(при установленных плагинах), pdf, txt, asm. Файл возможно так-же открыть двойным кликом в обозревателе с помощью внешней программы, установленной на компьютере. Для этого расширение нужного типа файлов необходимо прописать в списке "Ассоциации файлов". Если путь к открывающей программе не указывать - Windows откроет файл в программе по умолчанию(это удобно для открытия архивов, которые не всегда однозначно открываются). Если путь к открывающей программе указан в списке - файл откроется в указанной программе. Удобно просматривать таким образом файлы типа SPL, LAY, DSN.

Рисунок (скриншот обозревателя программы ProgCode v1.0)



Вот так выглядит окно с настройками ассоциаций файлов:




Обозреватель проектов в интернетеОбозреватель проектов в интернете так-же как и локальный обозрватель проектов позволяет быстро перейти на нужный сайт в интернете парой кликов, просмотреть проект и при необходимости сразу прошить программу в МК.



При обзоре проектов в интернете если на странице проекта есть ссылка на файл с расширением SFR(это формат файлов программы ProgCode), то такой файл при клике по нему откроется в новой вкладке программы и сразу готов к прошивке в микроконтроллер.
Список ссылок можно редактировать воспользовавшись кнопкой "Изменить". При этом откроется окно редактирования списка ссылок:





Описание процесса программирования микросхемБольшинство современных микросхем содержит флэш-память, которая программируется посредством протокола I2C или подобных протоколов.
Перезаписываемая память есть в PIC , AVR и других контроллерах, микросхемах памяти типа 24Cxx, и подобных им, различных картах памяти типа MMC и SD, обычных флэш USB картах, которые подключаются к компьютеру через USB разъём.Рассмотрим запись информации во флэш память микроконтроллера PIC16F628AЕсть 2 линии DATA и CLOCK, по которым передаётся информация. Линия CLOCK служит для подачи тактовых импульсов, а линия DATA для передачи информации.
Чтобы передать в микроконтроллер 1 бит информации, необходимо выставить 0 или 1(в зависимости от значения бита) на линии данных(DATA) и создать спад напряжения (переход от 1 к 0) на линии тактирования(CLOCK).
Один бит для контроллера – маловато. Он ждёт вдогонку ещё пять, чтобы воспринять эту посылку из 6-ти бит как команду. Контроллеру очень нравятся команды, а состоять они должны именно из 6-ти бит – такова уж природа у PIC16.
Вот список и значение команд, которые PIC способен понять. Команд не так уж и много – словарный запас у этого контроллера невелик, но не надо думать, что он совсем глуп – бывают устройства и с меньшим количеством команд"LoadConfiguration" 000000 - Загрузка конфигурации
"LoadDataForProgramMemory" 000010 - Загрузка данных в память программ
"LoadDataForDataMemory" - 000011 - Загрузка данных в память данных(EEPROM)
"IncrementAddress" 000110 - Увеличение адреса PC МК
"ReadDataFromProgramMemory" 000100 - Чтение данных из памяти программ
"ReadDataFromDataMemory" 000101 - Чтение данных из памяти данных(EEPROM)
"BeginProgrammingOnlyCycle" 011000 - Начать цикл программирования
"BulkEraseProgramMemory" 001001 - Полное стирание памяти программ
"BulkEraseDataMemory" 001011 - Полное стирание памяти данных(EEPROM)
"BeginEraseProgrammingCycle" 001000 - Начать цикл программированияРеагирует контроллер на эти команды по-разному. По-разному после выдачи команды нужно и продолжать с ним разговор.
Для того чтобы начать полноценный процесс программирования необходимо ещё подать напряжение 12 вольт на вывод MCLR контроллера, после этого подать на него напряжение питания. Именно в такой последовательности подачи напряжений есть определённый смысл. После подачи питания, если PIC сконфигурирован на работу от внутреннего RC генератора, он может начать выполнение собственной программы, что при программировании вещь недопустимая, так как неизбежен сбой.
Предварительная подача 12-ти вольт на MCLR позволяет избежать такого развития событий.
При записи информации во флэш память программ МК после команды"LoadDataForProgramMemory" 000010 - Загрузка данных в память программнеобходимо отправить в контроллер сами данные - 16 бит,
которые выглядят так: “0xxxxxxxxxxxxxx0”.Крестики в этом слове – это сами данные, а нули по краям отправляются как обрамление – это стандарт для PIC16. Значащих битов в слове всего 14. У этой серии контроллеров 14-ти битный формат представления команд.
После окончания передачи слова с данными PIC ждёт следующую команду.
Так как нашей целью является запись слова в память программ МК, следующей командой должна быть команда
"BeginEraseProgrammingCycle" 001000 - Начать цикл программированияПолучив её, контроллер отключается от внешнего мира на 6 миллисекунд, которые нужны ему, чтобы завершить процесс записи.Сигналы на выводах микроконтроллера формируются компьютером при помощи специальных программ - программаторов. Для передачи сигнала могут служить порты COM, LPT или USB. C JDM программатором работают такие программы как PonyProg, IsProg, WinPic800.
Схема JDM программатораОчень простая схема программатора приведена на рисунке. В этой схеме хоть и не реализуется контроль последовательности подачи напряжений, но зато она очень проста и собрать такую схему возможно очень быстро, ипользовав минимумом деталей.
Рисунок (схема JDM программатора)


Одним из вопросов при подключении программатора к компьютеру является вопрос - как обеспечить селективную развязку. Чтобы в случае неисправности в схеме избежать повреждения COM порта. В некоторых схемах применяется микросхема MAX232, которая обеспечивает селективную развязку и согласует уровни сигналов. В этой схеме вопрос решён проще - с помощью применения батарейного питания. Уровень сигнала, поступающего от компьютера ограничивается стабилитронами VD1, VD2, и VD3. Несмотря на простоту схемы JDM программатора с его помощью можно запрограммировать большинство типов PIC микроконтроллеров.Перемычка между выводами COM6(DSR) и COM7(RTS) предназначена для того, чтобы программа могла определить, что программатор подключен к компьютеру.

Поключение выходов программатора к конкретному МК зависит от типа МК. Часто на плату программатора монтируют несколько панелек, которые расчитаны на определённый тип контроллеров.

В таблице приведено назначение ножек некоторых типов МК при программировании.




приведены рисунки с назначением выводов наиболее распространнённых МК при программировании.Цоколёвка (распиновка) микроконтроллеров PIC16F876A, PIC16F873A в корпусе DIP28.

Цоколёвка (распиновка) микроконтроллеров PIC16F874A, PIC16F877A в корпусе DIP40.
Цоколёвка (распиновка) микроконтроллеров PIC16F627A, PIC16F628A, PIC16F648A в корпусе DIP18.
Такое же расположение выводов, предназначенных для программирования, имеют МК PIC16F84, PIC16F84A.

Назначение выводов для микроконтроллеров серии PIC16Fxxx в зависимости от типа корпуса в большинстве случаев является стандартным, но если возникает сомнения на этот счёт, то надёжнее всего свериться с даташитом на конкретный экземпляр МК. Часть документации присутствует на русском сайте http://microchip.ru Полное же собрание даташитов и другой документации находится на сайте производителя PIC микроконтроллеров: http://microchip.com
Индекс проектовПрограмма позволяет напрямую выходить на страницу индекса, парой кликов просматривать описание нужного проекта и сразу-же прошивать программу в контроллер.



При необходимости прошить контроллер выбранной прошивкой - кликаем мышкой на файл формата SFR, к примеру Timer_a.sfr
Программа загружает файл с сервера в новую вкладку.



После этого остаётся только вставить МК в панельку программатора, если это ещё не сделано, и нажать на кнопку "Записать всё".
Программа записывается в МК. После этого контроллер вставляется в плату устройства и устройство готово к работе.

Скачать программу можно на странице загрузки файлов:http://cxema.my1.ru/load/proshivki/material_k_state_prostoj_jdm_programmator_dlja_pic_mikrokontrollerov/9-1-0-1613 Раздел:

Так уж сложилось, что знакомство с микроконтроллерами я начал с AVR. PIC микроконтроллеры до поры, до времени — обходил стороной. Но, все же на них тоже ведь есть уникальные, интересные для повторения, конструкции! А ведь эти микроконтроллеры тоже прошивать нужно . Эту статью пишу в основном для себя самого. Чтобы не забыть технологии, как без проблем и бессмысленных потерь времени прошить PIC микроконтроллер.

Как программировать PIC микроконтроллеры или Простой JDM программатор

Для первой схемы — долго и упорно пытался сделать PIC программатор по найденным в интернете схемам — ничего не вышло . Стыдно, но пришлось обращаться к знакомому, чтобы прошил МК. Но ведь это не дело — постоянно бегать по знакомым! Этот же знакомый и посоветовал простенькую схему, работающую от СОМ порта. Но даже и тогда, когда я ее собрал — все равно ничего не получалось . Ведь мало собрать программатор — нужно еще под него настроить программу, которой будем прошивать. А вот как раз это у меня и не получалось. Целая туча инструкций в интернете, и мало какая мне помогла…

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

Итак, программатор для PIC микроконтроллеров. Простой, хотя и не 5 проводков, как для AVR микроконтроллеров, который я использую до сих пор. Вот схема:

Вот печатная плата ().

СОМ разъем припаивается штырьками прямо на контактные площадки (главное — не запутаться с нумерацией). Второй ряд штырьков соединяется с платой маленькими перемычками (очень непонятно сказал, ага). Попробую дать фотографию… хоть она и страшная (нету у меня сейчас нормального фотоаппарата ).
Самое злобное в том — что для PIC микроконтроллеров для прошивки нужны 12 вольт. А лучше не 12, а чуточку побольше. Скажем, 13. Или 13.5 (кстати, специалисты — поправьте меня в комментариях, если ошибаюсь. Пожалуйста.). 12 вольт еще можно где-то добыть. А 13 где? Я то выходил из положения просто — брал свежезаряженный литий-полимерный аккумулятор, в котором было 12.6 вольт. Ну или вообще четырехбаночный аккумулятор, с его 16 вольтами (прошил так один PIC — без проблем).

Но я опять отвлекся. Итак — инструкция по прошивке PIC микроконтроллеров. Ищем программу WinPIC800 (к сожалению простая и популярная icprog у меня не заработала,) и настраиваем ее так, как показано на скриншоте.

После этого — открываем файл прошивки, подключаем микроконтроллер и прошиваем.