Внутрисхемный отладчик ICD-2 (In-Circuit Debugger) становится самым популярным отладочным средством для микроконтроллеров Microchip. Это связано, в первую очередь, с возможностью осуществлять внутрисхемную отладку и программирование большинства FLASH контроллеров Microchip. Во-вторых, все новые контроллеры выпускаются со встроенным механизмом ICD, а с выходом очередного обновления среды разработки MPLAB IDE программное обеспечение отладчика ICD-2 обновляется для поддержки новых контроллеров. Таким образом, приобретя отладчик, вы получаете гарантированную поддержку своих будущих разработок.
С помощью ICD-2 отладка программы осуществляется в микроконтроллере установленном непосредственно в разрабатываемое изделие и программа выполняется с реальной периферией и сигналами, что обеспечивает учет всех особенностей устройства. Для того чтобы функционировал режим внутрисхемной отладки, в выпускаемые микроконтроллеры встраивают специальный механизм поддержки ICD. Для осуществления отладки этот механизм можно включить, а для серийных изделий жестко выключить в конфигурационном слове микроконтроллера.
Принцип работы механизма следующий: во время работы микроконтроллера при достижении установленной точки останова или при пошаговой отладке отрабатывается немаскируемое прерывание и управление передается подпрограмме отладчика (она незаметно для пользователя дописывается в последние ячейки программной памяти). Эта подпрограмма выполняет функцию передачи через дебаггер в компьютер состояние ячеек памяти микроконтроллера, а так же изменяет их состояние и переключает режимы работы по команде с компьютера. В результате, пользователь может выполнять программу в реальном времени (программа выполняется в соответствии с тактовой частотой контроллера), осуществлять пошаговую отладку (когда шаг за шагом, по команде с компьютера, выполняется код) и видеть состояние нужных регистров в среде разработки MPLAB IDE как при программировании на языке ассемблер, так и на языке высокого уровня Си. Поддерживается установка точек останова, просмотр и изменение памяти данных ОЗУ и EEPROM.
В режиме отладки становятся недоступными: 1 или 2 уровня стека (в зависимости от семейства отлаживаемого контроллера PIC12/16F, PIC18F или dsPIC), порты ввода-вывода RB6 и RB7 (для программирования микроконтроллера и управлением режимами отладки); вывод MCLR/Vpp (используется для программирования). Помимо этого, при отладке так же становятся недоступным для пользователя часть ячеек программы и регистров ОЗУ, которые резервируется для работы подпрограммы отладчика.
Следует заметить, что ограничения вносятся лишь при включенном режиме отладки. Если же программа очень большая, в этом случае можно порекомендовать отлаживать программу частями, а затем отключить режим отладки и полностью запрограммировать используемый микроконтроллер. При этом снимаются все налагаемые MPLAB-ICD2 ограничения, он работает в режиме обычного программатора.
Так как отладчик MPLAB-ICD2 программирует FLASH-память программ контроллеров, то с помощью него можно не только отладить программу в разрабатываемом устройстве, но и использовать в качестве серийного внутрисхемного программатора (в ICD2 встроена защита от перегрузок по току и напряжению, есть диагностические светодиоды контроля состояния). Невысокая стоимость дебаггера делает его весьма привлекательным многофункциональным отладочным средством.
Возможности и варианты поставки
Дебаггер-отладчик MPLAB ICD2 от Microchip работает почти со всеми FLASH – микроконтроллерами серий PIC12F, PIC16F, PIC18FXXXX и dsPIC30F. Кроме того, отладчик имеет возможность обновления программного обеспечения для поддержки новых появляющихся микроконтроллеров.
Работает MPLAB ICD2 под управлением бесплатной универсальной среды разработчика MPLAB IDE, которая периодически обновляется и доступна на сайте http://www.microchip.com/. Причем ICD2 работает как со старыми 16-битными версиями MPLAB IDE 5.xx (поддерживается работа только через RS-232), так и с новыми 32-bit версиями MPLAB IDE 6.xx и 7.хх (поддерживается как RS-232, так и USB). Рабочее окно среды MPLAB IDE 6.60 с примером отладки программы показано на рис. 1.
Среда имеет удобный графический интерфейс, встроенный менеджер проектов и текстовый редактор с поддержкой выделения операторов и директив цветом, встроенный ассемблер и симулятор, поддержу новейших dsPIC. Среда позволяет подключать компиляторы Си как производства Microchip, так и других фирм.
Дебаггер ICD2 поставляется (таблица 1) как в виде отдельного модуля без источника питания (DV164005), с источником питания (DV164007), а так же в составе комплекта с демонстрационной платой PICDEM 2 Plus и образцом FLASH- контроллера PIC18F452 (DV164006, см рис 2). Демонстрационная плата содержит 2х16 ЖКИ дисплей, температурный датчик, EEPROM память, светодиоды, пищалку, RS232 интерфейс и может быть приобретена отдельно (в этом случае номер для заказа DM163022). Отличительными особенностями дебаггера MPLAB ICD2 являются:
Быстрая связь с компьютером через USB или RS-232;
Три встроенных светодиода, характеризующих состояние дебаггера;
Встроенная система внутрисхемного программирования отлаживаемого микроконтроллера;
Обновление программного обеспечения;
Задаваемая 1 точка останова (в новых контроллерах до 3);
Работа в пошаговом и режиме реального времени;
Просмотр и модификация содержимого управляющих регистров, FLASH, RAM и EEPROM;
Работа во всем диапазоне частот.
Таблица 1. Варианты поставки MPLAB-ICD2
Номер заказа |
Дебаггер
ICD-2 |
USB-кабель |
RS-232 кабель |
Источник питаня |
Демо-плата PICDEM 2 Plus (DM163022) |
Набор инструкций и CD-ROM |
DV164005 |
да |
да |
– |
– |
– |
да |
DV164006 |
да |
да |
да |
да |
да |
да |
DV164007 |
да |
да |
да |
да |
– |
да |
Подготовка к работе и включение MPLAB-ICD2
Подготовка к работе сводится к инсталляции программного обеспечения (интегрированной среды MPLAB IDE) на компьютер и инсталляции драйверов USB (если вы собираетесь работать с ICD2 через USB). Перед установкой MPLAB IDE необходимо деинсталировать предыдущую версию программного обеспечения. После установки необходимых драйверов можно подключить модуль ICD2 к компьютеру при помощи прилагаемого кабеля.
Отлаживаемая плата соединяется с ICD2 через входящий в комплект кабель. Разумеется, что на плате должен стоять ответный разъем, соединенный с отлаживаемым микроконтроллером. Второй вариант использовать плату-переходник (header), на которой установлена колодка под PICmicro, разъем для подключения ICD и штыри-контакты для установки всей конструкции в отлаживаемую плату. В этом случае микроконтроллер устанавливается в отлаживаемое устройство через такой переходник, позволяющий подключить ICD2 не переделывая основную плату устройства. Переходник можно приобрести (номер для заказа AC162051) или изготовить самостоятельно.
Все варианты подключения отладчика ICD2 с отлаживаемой платой и компьютером, а так же подключение источника питания отображены в таблице 2. Необходимо учесть, что отлаживаемое устройство и его источник питания должны подключаться к отладчику в последнюю очередь.
Таблица 2. Варианты подключения отладчика ICD2.
Для того чтобы начать писать программу, в интегрированной среде MPLAB IDE необходимо создать проект. При этом нужно выбрать тип микроконтроллера и отладочного средства (в нашем случае ICD2). После этого будет предпринята попытка установить связь компьютера с ICD2. Если появилось сообщение об ошибке, необходимо зайти в меню свойств ICD2 и проверить правильность выбора порта (COM или USB), а также вариант подключения источника питания.
Теперь можно написать простейшую программу и откомпилировать ее. Если программа откомпилировалась без ошибок, можно переходить к самому интересному – внутрисхемной отладке. Для этого необходимо загрузить откомпилированную программу в отлаживаемый контроллер, для чего кликнуть по надписи "Program".
Для внутрисхемной отладки необходимо в конфигурационном слове контроллера:
Правильно задать тип генератора в соответствии используемому в отлаживаемом устройстве (наличие тактового генератора необходимо для отладки устройства);
Выключить сторожевой таймер WDT (WDT – disabled);
Выключить защиту кода (Code Protect – disabled);
Выключить защиту чтения таблиц (Table Read Protect – disabled);
Включить режим отладки (Background Debug – enabled);
Выключить низковольтное программирование (Low Voltage Program – disabled).
После успешной записи и сверки можно кликнуть по иконке сброса, при этом на исходном тексте программы появится серая полоска указателя текущей команды. Теперь можно запустить пошаговую отладку, выполнение в реальном времени, попробовать изменить содержимое ОЗУ/EEPROM, установить точки останова. Несколько коротких рекомендаций:
Если дебаггер успешно программирует кристалл, но при попытке сброса и пошаговой отладки выдает ошибку связи, проверьте соответствие типа генератора в конфигурационном слове (HS, XT, RC и тд) реально используемому на отлаживаемой плате;
Скорость работы пошаговой отладки можно увеличить, ограничив количество обновляемых регистров ОЗУ при отладке;
Если ваша программа небольшая, есть смысл изменить конечный адрес программной памяти на вкладке опций программирования ICD2. В этом случае каждый раз при изменении программы будет переписываться не вся программная память, а лишь ее часть, что уменьшит время программирования микросхемы;
Используйте соединение USB – скорость отладки возрастет;
Не забывайте обновлять "прошивку" ICD2 !
Отладка контроллеров с числом выводов 8, 14 и 18.
Для внутрисхемной отладки контроллеров необходимо, помимо выводов напряжения питания и программирования, подключение еще двух выводов для передачи данных. Для «многоногих» контроллеров высвобождение всего 2-х портов не представляет сложности, однако при отладке, например, 8-и выводных контроллеров это становится неприемлемым, т.к. из портов ввода/вывода свободными остаются только 3 из 6. Поэтому фирма Microchip выпускает ряд адаптеров для отладки контроллеров с числом выводов 8, 14 и 18 (см табл. 3). Адаптер подключается к отладчику ICD2 и вставляется в DIP-колодку в отлаживаемой схеме. На плате адаптера (см. рис. 3) установлен специальный отладочный кристалл, аналогичный эмулируемому, но имеющий дополнительные выводы для подключения ICD2. При этом для отладки становятся доступны все порты ввода/вывода отлаживаемого микроконтроллера. Следует учесть, что адаптеры необходимы только для отладки микроконтроллеров, для программирования адаптеры не нужны.
Для программирования контроллеров вне изделия применяется универсальный программирующий модуль AC162049, подключаемый к отладчику ICD2. В этом случае микроконтроллер в DIP-корпусе устанавливается в сокету и выполняются необходимые соединения к выводам питания и программирования микроконтроллера.
Таблица 3.
Адаптер |
Отлаживаемые контроллеры |
АС162049 |
Универсальный программирующий модуль, ZIF40 |
АС162050 |
PIC12F629, PIC12F675 |
АС162052 |
PIC12F630, PIC12F676 |
АС162053 |
PIC16F627A, PIC16F628A, PIC16F648A |
АС162054 |
PIC16F716 |
АС162055 |
PIC16F684 |
АС162056 |
PIC16F688 |
АС162057 |
PIC12F635, PIC16F636 |
AC162058 |
PIC12F683 |
AC162059 |
PIC10F20x, PIC12F508, PIC12F509, PIC16F505 |
AC162060 |
PIC16F785 |
AC162061 |
PIC16F690 |
AC162066 |
PIC16F639 |
AC162070 |
PIC10F22x, PIC12F510, PIC16F506 |
Рис. 3. Адаптеры для отладки маловыводных контроллеров.
Рис. 4. Универсальный программирующий модуль.
ICSP, или как запрограммировать PIC внутрисхемно.
Очень часто возникает необходимость программирования PICmicro после монтажа на печатную плату. В первую очередь это касается малогабаритных корпусов с большим числом выводов, таких как SOIC, SSOP, TQFP, QFN и DFN. Связано это, в первую очередь, с необходимостью иметь дополнительные переходники для программирования таких корпусов обычным способом. Особо хотелось бы отметить, что использование обычного программирования для новых многовыводных MegaPIC (PIC18F6x20/8x20) c 60 и более выводами, а также микросхем в миниатюрных корпусах QFN и DFN, требует чрезвычайно дорогих и очень редких переходников, что изначально ставит под сомнение использование обычного метода программирования и оставляет единственный реальный путь – внутрисхемное программирование.
К достоинствам внутрисхемного программирования следует отнести возможность запрограммировать контроллер уже после монтажа на печатную плату. Это позволяет сразу изготовить партию одинаковых изделий, но в каждый прибор записывать индивидуальную программу под конечного пользователя. В случае, если применяется контроллер с FLASH программной памятью, то всегда остается возможность перепрограммировать микроконтроллер, записав обновленную или исправленную версию программы в давно выпущенный прибор. А при наличии внутрисхемного программатора/отладчика MPLAB ICD2, разработчик получает возможность не только внутрисхемно запрограммировать, но и отладить прибор.
Какие PICmicro можно запрограммировать внутрисхемно?
Почти все однократные или FLASH микроконтроллеры, за исключением старых PIC16C5x и PIC17Cxxx, имеющих только параллельный интерфейс программирования. Разумеется, что однократные контроллеры можно будет запрограммировать один раз, а FLASH – много раз.
Что необходимо предусмотреть при разработке электронной схемы конструируемого прибора для возможности затем использовать внутрисхемное программирование?
В разрабатываемом приборе необходимо предусмотреть подключение разъема (контактных точек/площадок) для внутрисхемного программирования и отладки. Его конструктивное исполнение может быть произвольным, но если вы планируете использовать внутрисхемный программатор/отладчик ICD2, рекомендуется использовать такой же разъем, что и в ICD2 (RJ11 6PIN). Назначение и нумерация сигналов на контактах разъема приведена в таблице 4. Рекомендуемая схема подключения изображена на рис. 5 и 6.
Таблица 4. Назначение и нумерация сигналов на контактах разъема ICD2
Номер контакта разъема ICSP |
Название |
Описание |
1 |
MCLR/Vpp |
Сброс в режиме отладки /
Напряжение программирования (+13В) |
2 |
Vdd |
Напряжение питания |
3 |
GND (0V) |
«Земля» |
4 |
RB7/PGD
(Data I/O) |
Данные в режиме программирования /отладки |
5 |
RB6/PGC
(CLK) |
Строб в режиме программирования /отладки |
6 |
– |
Не используется |
Примечания:
1. Для 8 и 14pin микроконтроллеров сигналы RB6 и RB7 имеют другие названия, необходимо свериться с документацией.
2. Во избежание проблем настоятельно рекомендуется для всех FLASH микроконтроллеров с поддержкой режима низковольтного программирования вход низковольтного программирования PGM (обычно он совмещен с RB3 или RB4 в зависимости от используемого типа микроконтроллера – см. документацию на микроконтроллер) подтягивать к «земле» напрямую или через резистор 5-10кОм. В любом случае настоятельно не рекомендуется оставлять его неподключенным или подключенным к + источника питания напрямую или через резистор.
3. Следует учесть, что выводы PGD и PGC могут использоваться в схеме, но таким образом, чтобы внешние элементы не шунтировали выводы программатора и не мешали его работе. Не следует подключать к этим выводам конденсаторы и диоды, т.к. эти выводы используются для связи отладчика с контроллером. Не следует подключать к этим выводам подтягивающие резисторы к линии питания, т.к. вместе с внутренними резисторами ICD2 они будут образовывать делитель напряжения.
4. Не следует подключать к выводу MCLR блокировочные конденсаторы – они будут мешать быстрому установлению напряжения программирования.
5. Если у контроллера есть выводы аналогового питания, то они должны быть подключены к соответствующим цепям питания и земли.
|