Тимофей Носов
Низковольтное программирование LVP из PicKit2Цель данной статьи – показать, как внутрисхемно прошивать микроконтроллер (далее МК) в режиме низковольтного программирования с использованием PicKit2. Показаны схемы включения и особенности работы в программе PICkit 2 Programmer v2.61 .
Традиционно для прошивания к микроконтроллеру подключают 5 линий:

Vpp – напряжения программирования (обычно на уровне +13 вольт);
Vdd – напряжение питания +5 вольт;
Vss – общая линия (минус питания);
PGD – "программинг дата" или данные;
PGC – " программинг клок" или тактирование.
Аналогичные линии наблюдаем и на микроконтроллере.

Всё бы хорошо, если бы в один прекрасный момент не потребовалась сделать устройство с микроконтроллером в корпусе SOIC (или вовсе по идеологии микроконтроллер припаян к плате в любом корпусе).
Первое, при разводке платы для любых случаев надо организовать работу вывода MCLR (мастер-клир или сброс). Это важный момент, т.к. именно на этой линии присутствует функция Vpp – т.е. подачи высокого напряжения, которое переводит МК в режим программирования (прошивания). Смотрим схемы:

|
Случай, когда организация MCLR не требуется. Банально отключается в битах конфигурации и линия вовсе может использоваться на вход. Строго говоря, MCLR всё равно присутствует в неявном виде в МК. Присутствует в PIC16F627, PIC16F628, PIC16F627А, PIC16F628А, PIC16F648А. В данном случае всё просто, легко организовать высоковольтное программирование при условии, что по линии Vdd схема потребляет не больше, чем может дать программатор и USB . Либо Vdd отключаем от схемы в момент программирования.
|

|
Случай организации MCLR путем объединения с плюсовой линией питания. И никак иначе. Для работы МК требуется сформировать высокий уровень после подачи питания. Для программирования однозначно требуется перемычка, чтобы Vpp отключить от Vdd на время высоковольтного программирования. Требования к питанию по Vdd как и предыдущем случае.
PIC16F77, PIC16F873, PIC16F874, PIC16F876, PIC16F877 (и они же с индексом А).
|

|
В данном случае Vpp отделяем от Vdd диодом. Одновременно на MCLR в рабочем режиме обеспечивается потенциал высокого уровня. В отдельных случаях решение может быть оправданным. Лично мне не нравится распиновка для такого решения, где 1 вывод MCLR/Vpp , а 20 вывод Vdd (очень неудобно разводить в одном слое). Нам же документация навяливает еще более неудобное включение см. включение из документации к PicKit2.
|

|
И, наконец, случай, когда используется низковольтное LVP программирование (линия Vpp вовсе не нужна). Для режима LVP задействуется вывод PGM (настраивается на выход и в режиме LVP не может использоваться как цифровая линия). Не будет секретом, что МК с завода выпускаются с включенным режимом LVP, который может быть переключен в HVP только при высоковольтном программировании (т.е. случайно это сделать не получится). Для перевода МК в режим программирования на PGM нужно установить высокий уровень (для рабочего режима и подтягиваем PGM к минусу). Далее рассмотрим подключение МК к PicKit2 и недокументированную греблю граблями.
|
Будем считать, что к этому моменту у вас сделаны следующие подключения микроконтроллера к PicKit2:
– общая линия Vss (до сих пор не знаю, нужно ли все Vss на МК к земле подключать или достаточно одну из Vss; кто может сослаться на официальный источник – дайте знать);
– линия PGC;
– линия PGD;
– линию PGM подключить к Auxiliary (как посоветовал Help-ReadMe).
– линию Vdd не будем подключать к программатору, будем использовать питание в самом устройстве.
Таким образом, нам достаточно четыре провода для прошивания.
Теперь рассмотрим работу в оболочке PICkit 2 Programmer v2.61 (из MPLAB не получилось в режиме LVP соединиться с МК).
К этому моменту устройство соединено 4мя проводами, питание на устройство подано, запускаем PICkit 2 Programmer v2.61.
И тишина – в автомате PICkit2 не видит МК; одно радует, что не ругается.
Ставим ручной выбор – меню Programmer – Manual Device Select (ставим галочку).

Для моего микроконтроллера (PIC16F876A) не лишним будет клацнуть Device Family – Midrange – Standard.

В выпадающем списке выбираем наш МК

Выбрали. Так и хочется нажать кнопку Read и проверить жизнеспособность. Нажимаем.
Наблюдаем грустную надпись "No device detected".

И только после этого в меню Tools становится активным пункт Use LVP Program Entry на которым мы ставим галочку. Ок. Поставили.

После этого в главном окне мы наблюдаем несколько бодрых сообщений.

Всё, теперь можно читать и шить, в том числе шить с защитой (CP/CPD).
Полезные ссылки:
Попробуй сделать печатную плату на кухне
Узнай как прошить микроконтроллер прошивкой
Научись программировать и делать прошивки
Задай вопрос или найди ответ в форуме
|