HELLORADIO.RU — интернет-магазин средств связи
EN FR DE CN JP

Программатор PIC

Программатор PIC – аналог MPLAB ICD2

Описание этого прибора опубликовано в журнале "Радио" №6 за 2006г.

PIC контроллеры от Microchip пользуются не меньшей популярностью среди любителей и профессионалов, чем AVR от Atmel. У каждого из этих семейств есть свои достоинства и недостатки. Программировать PIC также просто, как AVR, для этого могут быть использованы очень простые программаторы, представляющие собой просто буферные элементы для согласования уровней выводов COM или LPT порта компьютера с контроллером, например PonyProg [1]. Недостатки такого решения были рассмотрены в предыдущей статье автора, посвященной описанию программатора для AVR. Все сказанное там, в полной мере относится и к PIC контроллерам. Справедливым остается и утверждение, что гораздо лучше и надежнее воспользоваться разработками производителя контроллеров. Разумеется, подойдя к этому вопросу творчески, а не слепо копируя фирменный образец.

Исходя из этих предпосылок и был разработан предлагаемый программатор. Прототипом послужил внутрисхемный отладчик - программатор MPLAB-ICD2 компании Microchip. Его упрощенный аналог MICD2-MC1 серийно выпускается в России [2]. Описания еще нескольких подобных конструкций можно найти в Internet, заслуживает внимания, например [4]. Все эти схемы отличаются только источниками питания, наличием или отсутствием буферных каскадов и т.п. деталями. Основа же - контроллер PIC16F876A с фирменной прошивкой от Miсrochip - остается неизменным.

В отличие от прототипов предлагаемый программатор - это полноценное устройство, позволяющее программировать контроллеры не только внутрисхемно, но также и непосредственно в программаторе. В список поддерживаемых в режиме программирования входят практически все PIC контроллеры с FLASH памятью. Именно они чаще всего и используются в настоящее время. Управление осуществляется через COM-порт персонального компьютера. Возможно подключение и к USB через конвертер, например на FT232BM [4, 5]. Устройство работает под управлением Интегрированной Среды Разработки MPLAB-IDE. Ее последняя версия всегда свободно доступна на http://www.microchip.com.

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

Принципиальная схема основной платы программатора показана на рис.1. Его основой является контроллер DD2 PIC16F876A. DD1 типа MAX232 служит для согласования уровней COM порта с уровнями TTL. DD3 78S40 (1156ЕУ1) - это преобразователь напряжения 5/12в, а DD4 ADG411BR содержит ключевые каскады для коммутации напряжения 5 и 12в. С целью упрощения конструкции из схемы по сравнению с фирменным MPLAB ICD2 исключены буферные элементы на линиях CLK и DAT, а также электронный потенциометр для регулирования напряжения программирования. Его функцию выполняет обычный переменный резистор R10. Это не вызывает каких-либо ограничений в работе прибора, т.к. в современных PIC это напряжение служит только для перевода контроллера в режим программирования и может иметь значение от 9 до 14в. В его оперативной регулировке нет никакой необходимости.

Схема платы коммутации

Плата коммутации (рис.2) предназначена для программирования контроллеров в DIP корпусах. На этой плате смонтированы панельки для корпусов DIP40, DIP28, DIP18 и 2 штуки DIP8. Одна из этих DIP8 предназначена для установки контроллеров PIC12F6xx в корпусах DIP8 и PIC16F6xx в DIP14, причем последние вставляются таким образом, чтобы их 1-я ножка попала в 1-е гнездо панельки, 2-я - во 2-е, ... 13-я - в 7-е и 14-я - в 8-е. При этом ножки 5...10 не попадают в панельку, они не используются при программировании. Вторая панелька DIP8 предназначена для установки PIC10. Хотя эти контроллеры и имеют всего 6 выводов, но выпускаются они почему-то в 8-и выводных корпусах. На плате панельки размещены таким образом, что вставить контроллер с 14-ю выводами в панельку для PIC10 невозможно.

Контроллеры в других корпусах могут программироваться внутрисхемно или с помощью переходников, подключаемых к выведенным также и на отдельный разъем линиям связи основной платы и платы коммутации. В качестве этого разъема удобно использовать СШ-5, широко применявшийся в бытовой аппаратуре конца прошлого века.

Схема платы коммутации

Размер основной платы 86x76мм, а платы коммутации 100x80мм. Они изготовлены из одностороннего фольгированного стеклотекстолита и оптимизированы для метода «утюжной" технологии. Большинство элементов использованы в SMD корпусах. Дроссель L1 типа ДМ-0,2. Кварц ZQ1 должен возбуждаться на основной частоте 20 мгц. Транзисторы VT1, VT2 любые NPN в корпусах SOT23 для поверхностного монтажа. Диод VD3 любого типа в таком же корпусе. DD4 в корпусе SOIC, остальные микросхемы - в DIP. Стабилитрон VD1 с напряжением стабилизации 5,1в.

Программатор выполнен в корпусе, спаяном из фольгированного гетинакса. Плата коммутации является верхней крышкой, в ней сделаны по месту не показанные на чертеже отверстия для HL1-HL3. Разъем СШ-5 для внутрисхемного программирования и отладки размещается на боковой стенке. Там же монтируется и переключатель SA1. Обращаю внимание, что это именно переключатель, а не кнопка. Кабель связи с компьютером может иметь длину 1...1,5м. Питание осуществляется от любого сетевого адаптера с напряжением 9...15в и током до 100ма.

После сборки следует внимательно проверить правильность монтажа, отсутствие короткозамкнутых дорожек и непропаяных соединений. После этого нужно проверить наличие напряжения питания 5в на выходе DA1 и выставить 12...12,5в на выводе 1 DD3 с помощью резистора R10. Диапазон регулирования определяется номиналами R7...R9.

Контроллер DD2 перед установкой в схему необходимо запрограммировать. Его прошивка входит в состав MPLAB IDE, она состоит из двух частей - загрузчика и операционной системы. Если MPLAB была установлена в каталог по умолчанию, то путь к файлам прошивки будет C:\Program Files\Microchip\MPLAB IDE\ICD2\. Для работы достаточно записать в память контроллера только загрузчик, операционная система загружается средствами MPLAB. Однако будет меньше проблем при запуске программатора, если предварительно записать в память контроллера оба части. Файл прошивки icd2f876a.hex, содержащий в себе как загрузчик, так и операционную систему можно загрузить из архива icd.zip.. В этом же архиве находятся и дистрибутивы печатных плат в формате Sprint-Layout 4.0. Для программирования можно воспользоваться упоминавшимся ранее PonyProg или обратиться за помощью к друзьям. Слово конфигурации включено в файл прошивки, так что в отличие от AVR, не придется ломать голову над установкой Fuse бит. Если все сделано безошибочно, после подачи питания будет светиться светодиод HL1 «Ready». Теперь можно подключить программатор к COM порту и приступить к тестированию.

Фирма Microchip настоятельно рекомендует отключить буфер FIFO для используемого COM порта. Это нужно обязательно сделать. В Windows XP последовательность действий такая. Пуск — Панель управления — Система — Оборудование — Диспетчер устройств — Порты (COM и LPT) — Последовательный порт X — Параметры порта — Дополнительно —Убрать галочку «Использовать буферы FIFO» — OK. К сожалению, нигде не упоминается, что после этого компьютер следует перезагрузить. Если не выполнить эту процедуру, программатор не будет работать. А вот при использовании конвертера USB-COM на FT232BM никаких изменений в свойствах порта делать не нужно.

Наконец, можно запускать MPLAB-IDE. Желательно использовать версию не ниже 7. Все дальнейшие пояснения будут относиться к версии 7.30. После запуска в меню Debugger — Select Tool нужно убедиться, что MPLAB ICD2 не отмечен галочкой. Одновременно выбирать это устройство в качестве отладчика и программатора нельзя. Затем нужно отметить Programmer — Select Programmer — MPLAB ICD2 и перейти на Programmer — MPLAB ICD2 Setup Wizard. Последовательно проходя по открывающимся окнам надо выбрать номер используемого COM порта, а также скорость обмена. Доступны две скорости 19200 и 57600, лучше выбрать вторую. После этого отметить «Power target circuit from MPLAB ICD2». «MPLAB IDE automatically connect to the MPLAB ICD2» лучше не отмечать, а вот последующее предложение автоматически загружать требуемую операционную систему следует принять. Потом эти установки можно будет изменить. Теперь можно устанавливать связь: Programmer — Connect. Откроется окно «Output», на которое будут выводиться все сообщения, предупреждения и ошибки. Внимательно читайте все, что там появится. Если нет сообщений, выделенных красным цветом, значит программатор работает корректно. Некоторые сообщения требуют подтверждения, наиболее надоедливые из них можно запретить, поставив соответствующую галочку.

Теперь нужно выбрать тип контроллера, с которым предполагается работать Configure — Select Device. В случае необходимости требуемая операционная система загрузится автоматически. Если нужно просто запрограммировать HEX файл в контроллер без создания проекта, действия должны быть такими: File — Import, затем указание пути к файлу прошивки. Просмотреть и отредактировать, при необходимости, загруженный файл можно, выполнив команду View — Program memory или View — EEPROM. Изменить биты слова конфигурации - Configure — Configuration Bits. Непосредственно запись, чтение, стирание или верификация осуществляются нажатием соответствующих кнопок на панели инструментов. Область памяти, с которой выполняются действия может быть установлена Programmer — Settings — Program.

Более подробно работа с устройством в режиме программатора и отладчика описана в Help — Topics — MPLAB ICD2, а также в руководстве пользователя «MPLAB ICD2 USER'S GUIDE», которое можно загрузить с сайта http://www.microchip.com, а на http://www.microchip.ru можно найти описание MPLAB IDE на русском языке. Много полезной информации на русском языке есть и в [2]. Пересказывать эту обширную документацию в статье не имеет смысла.

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

  • При включенном напряжении питания Vcc уровень на выводе MCLR поднимается с нуля до 12в.
  • При выключенном Vcc уровень на выводе MCLR поднимается с нуля до 12в, а затем подается Vcc на контроллер.

В разных типах контроллеров Microchip рекомендует использовать один из этих способов, в основном в старых разработках - первый, а в более поздних - второй. В фирменном программаторе ICD2 реализован только первый способ, т.е. напряжение питания контроллера при программировании не отключается. Его можно снять только вручную, поставив или убрав галочку в меню Programmer — Settings — Power — «Power target circuit from MPLAB ICD2». Во-первых, это не удобно, т.к. устанавливать программируемый контроллер в панельку и извлекать из нее лучше при отключенном питании, во-вторых, это накладывает ограничения на конфигурацию вывода MCLR. Его можно сконфигурировать только как вывод сброса, а не как вывод порта. Это может оказаться неприятным сюрпризом для пользователя, т.к. использование вывода сброса как вывода порта допускается для многих типов PIC, такая возможность особенно актуальна для PIC10 и PIC12 с малым числом линий ввода-вывода. В фирменной документации на ICD2 об этой неприятной особенности нет ни слова.

Этот недостаток можно было бы легко устранить, вмешавшись в прошивку PIC16F876A, аппаратные возможности для этого есть. Но делать это не разумно, т.к. для разных типов PIC автоматически загружаются разные прошивки, называемые «операционными системами». Всего их более десятка! Да и с выходом новых версий MPLAB они могут изменяться. Пришлось решать эту проблему схемотехнически. Для этого в схему добавлены транзистор VT1, диод VD3 и переключатель SA1. Идея в том, чтобы отключать Vcc, если Vpp, подаваемое на вывод MCLR программируемого контроллера равно нулю. В этот момент контроллер находится в состоянии сброса и питание с него можно снять. Если контакты SA1 разомкнуты, напряжение Vpp появится сразу же, как только на вывод 9 DD4 придет нулевой уровень с управляющего контроллера. Vcc же появится с небольшой задержкой, определяемой номиналом C18.

Если SA1 замкнут, Vpp появится после Vcc с задержкой, определяемой номиналом C17. Таким образом, при замкнутом SA1 реализуется первый вариант входа в режим программирования, а при разомкнутом - второй. При этом галочка «Power target circuit from MPLAB ICD2» должна быть снята. Если ее установить, Vcc будет включено постоянно и устройство будет работать в штатном режиме, аналогично фирменному прототипу.

Как показала практика, большинство контроллеров корректно программируются без галочки, при замкнутом SA1. Этот переключатель оставлен в схеме исключительно для экспериментальных целей. Если таковые не преследуются, можно левый по схеме вывод C17 просто соединить с «землей». Были протестированы PIC12F629, PIC16F630, PIC16F505, PIC16F628, PIC16F628A, PIC16F73, PIC16F876A, PIC16F877A, PIC16F84A. PIC16F84 без буквы «A» почему-то не входит в список поддерживаемых, но прекрасно программируется, если выбрать PIC16F84A. При программировании некоторых из указанных типов появляются предупреждения об отсутствии напряжения питания или об ошибке самотестирования. К счастью, это только предупреждения, и на них можно не обращать внимания. Просто напряжение Vcc измеряется «не вовремя». Однако, к сожалению, есть и исключения. Например, стирание памяти PIC18F458 при выключенном «Power target circuit from MPLAB ICD2» производится некорректно. Тут уж ничего не поделаешь, придется работать с ним в штатном режиме, манипулируя перед установкой и удалением его из панельки указанной выше галочкой.

Возможности MPLAB ICD2 как отладчика весьма ограничены и особо надеяться на них не стоит. Поэтому детально в этой статье они не рассматриваются. Хотя, кое-что может и пригодиться. Все подробности в указанных выше источниках информации о фирменном MPLAB ICD2. Единственное ограничение - напряжение питания пользовательского устройства должно быть 5в.

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

Наименование

Где купить

Цена

PIC16F876A
 ADG411BR
 78S40
 MAX232
 Итого

http://www.chipinfo.ru

237 руб.
 89 руб.
 31 руб.
 16 руб.
 373 руб.

Фирменный MPLAB ICD2

http://www.icmicro.ru

200 USD

Упрощенный отечественный аналог MICD2-MC1 (без корпуса)

http://www.dessy.ru

1600 руб

Прошивка и дистрибутивы проекта печатных плат.

Литература:


mailto: ra4nalr (at) write.kirov.ru

mailto: ra4nal (at) yandex.ru

http://ra4nal.qrz.ru

http://ra4nalr.tut.ru

© 2006. Воспроизведение материалов сайта в любом виде только с согласия автора.

Партнеры