Отладочные платы pic. Схемы и материалы. Расположение выводов ICSP у PIC-контроллеров

Это устройство предназначено в первую очередь для изученuя основ микроконтроллерной техники u получения практических навыков программирования u отладки программ для широко распространённых микроконтроллеров среднего семейства фирмы Microchip PIC16F84A, PlC16F628А и может быть использовано в лабораторных и исследовательских целях. Прu подключении внешних периферийных устройств оно может служить макетом разрабатываемой микроконтроллерной системы, позволяя отлаживать программы во взаимодействии с реальными источниками сигналов и исполнительными устройствами.

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

Для микроконтроллеров рассматриваемого семейства сегодня выпускают достаточно много промышленных программаторов, в том числе PicProg, Uniprog, EXTRA-PIC, PICkit-2.

Имеется и большой ассортимент пригодных для повторения программаторов любительской разработки. А вот разнообразие отладочных плат значительно скромнее: отечественные ЛОК-2, ЛОК-4 , зарубежные PIC-Easy , PIC-PG4 , PIC-MT-USB , LAB-X1 и др. Эти платы, однако, сложны по конструкции и слишком дороги для простого радиолюбителя.

Предлагаемая простая отладочная плата «PIC-ЛАБ» предназначена для отладки программ для таких широко распространённых микроконтроллеров, как PIC16F84A и PIC16F628A, в лабораторных и домашних условиях. Схема платы приведена на рис. 1.

Для микроконтроллера DD2 с отлаживаемой программой предусмотрена панель DIP-18, что позволяет легко заменять его. Кроме микроконтроллеров указанных на схеме типов в панель можно устанавливать и другие 18-выводные, имеющие аналогичное назначение выводов, например PIC16F648.

Все линии порта А установленного на плату микроконтроллера выведены на разъём XS2, а порта В — на разъём XS3. Сюда подключают необходимые при отладке внешние устройства. На плате имеются восемь единичных светодиодов HL2—HL9 и семиэлементный светодиодный индикатор HG1. С помощью блоков DIP-выключателей SA2—SA5 их можно подключить к порту В микроконтроллера через ограничивающие ток резисторы R8—R15.

Включают светодиоды HL2—HL9 записью лог. 1 в соответствующие разряды регистра PORTB микроконтроллера. Поскольку индикатор SA15-11EWA (HG1) с общим анодом, его элементы включают записью лог.0 в соответствующие разряды того же регистра. Если заменить индикатор аналогичным, но с общим катодом, например, SC15-11EWA, то его выводы 1 и 5 необходимо отключить от плюсового провода питания и соединить с общим проводом, как показано на схеме крестом и штриховой линией. Тогда элементы индикатора будут включаться, как и светодиоды HL2—HL9, записью единиц в разряды регистра PORTB.

DIP-выключателями блока SA1 к линиям RA0—RA3 порта А микроконтроллера при необходимости могут быть подключены кнопки SB1—SB4. При чтении регистра PORTA нажатым кнопкам соответствуют нули в соответствующих разрядах, не нажатым — единицы.

На плате предусмотрены также подключённый к выводам тактового генератора микроконтроллера кварцевый резонатор ZQ1, управляемый звуковой генератор на микросхеме DD1 с пьезоизлучателем НА1, коммутатор на транзисторе VT1 для управления нагрузкой, подключаемой к контактной колодке ХТ1. Работу звукового генератора разрешают записью лог. 1 в разряд RB7 регистра PORTB микроконтроллера. При этом должны быть замкнуты контакты 1—12 и 3—10 блока выключателей SA5. Громкость звукового сигнала можно увеличить, отключив один из выводов излучателя звука от общего провода и соединив его с выходом элемента DD1.3, как показано на схеме штриховой линией. Если вместо контактов 1 — 12 замкнуть контакты 2—11, то разряд RB7 станет управлять состоянием транзистора VT1.

Состояния выключателей блоков SA1—SA5, необходимые для организации работы отладочной платы «РIC-ЛАБ» в перечисленных ниже режимах, указаны в таблице (. — контакты замкнуты, о — контакты разомкнуты).

Режим 1 — индикация состояния всех линий порта В микроконтроллера восемью светодиодами HL2—HL9.
Режим 1.1 — светодиодная индикация состояния только семи линий порта В (RBO—RB6), выход RB7 управляет генератором звуковой частоты с пьезоизлучателем звука НА1.
Режим 1.2 — то же, что режим 1.1, но выход РВ7 управляет не звуковым генератором, а транзистором VT1.
Режим 2 — к линиям RB0—RB6 подключены катоды семиэлементного индикатора HG1.
Режим 2.1 — то же, что 1.1, но вместо светодиодов HL2—HL8 к линиям RB0—RB6 подключены катоды семиэлементного индикатора HG1.
Режим 2.2 — то же, что 1.2, но вместо светодиодов HL2—HL8 к линиям RB0—RB6 подключены катоды семиэлементного индикатора HG1.
Режим 3 — к портам микроконтроллера подключены только внешние устройства (через разъёмы XS2 и XS3).
Режим 3.1 — к порту А микроконтроллера через разъём XS2 подключены внешние устройства, порт В используется, как в режиме 1 или 2.
Режим 3.2 — к порту В микроконтроллера через разъём XS3 подключены внешние устройства, выводы RAO—RA3 порта А соединены с кнопками SB1 — SB4.

Детали и конструкция отладочной платы

Все детали устройства смонтированы на односторонней печатной плате из фольгированного стеклотекстолита толщиной 1,5мм (рис. 2). Расположение на ней элементов показано на рис. 3. Плата рассчитана на установку постоянных резисторов С2-23-0.25 (R19) и 02-23-0,125. Конденсаторы С1, С2 — плёночные К73-17, а СЗ, 04 — керамические КТ-2 или К10-7В. Блоки выключателей SA1— SA4 — SWD1-4, SA5 — SWD1-6, кнопка SB5 — PSM1-1-0. Гнездо питания XS1 — DS-225, разъёмы XS2 и XS3 — однорядные цанговые панели соответственно SCSL-7 и SCSL-9, колодка XT 1 — DG301-5.0-03P. При необходимости к ней можно подключить динамическую головку 0,5ГД-30 или другую нагрузку сопротивлением не менее 16 Ом.

Вместо транзистора КТ829Б можно использовать другой той же серии. Семиэлементный индикатор с общим анодом SA15-11EWA заменяется A-1501R. Об установке индикатора с общим катодом было рассказано выше. Одну из проволочных перемычек на плате в этом случае следует перенести в положение, показанное на рис. 3 штриховой линией. Светодиоды L-816Н можно заменить на КИПМ15М10-К4-П5, а пьезоизлучательКР1-32101_— на ЗП-1.

Отладочная плата »PIC-ЛАБ» пригодна для использования в качестве средства обучения, при выполнении лабораторных экспериментов, а также для макетирования и отладки программ практических разработок на базе микроконтроллеров. Питать её можно от любого стабилизированного источника напряжения +5 В, в том числе от сетевого адаптера, способного отдавать ток не менее 200 мА.

Тимофей Носов

Программатор PIC микроконтроллеров или вся правда об Extra-PIC

В статье рассматривается программатор Extra-PIC, данные о котором получены из (DOC Rev.1.03.00).

Список поддерживаемых микросхем, при использовании с программой IC-PROG v1.05D:
PIC-контроллеры фирмы Microchip: PIC12C508, PIC12C508A, PIC12C509, PIC12C509A, PIC12CE518, PIC12CE519, PIC12C671, PIC12C672, PIC12CE673, PIC12CE674, PIC12F629, PIC12F675, PIC16C433, PIC16C61, PIC16C62A, PIC16C62B, PIC16C63, PIC16C63A, PIC16C64A, PIC16C65A, PIC16C65B, PIC16C66, PIC16C67, PIC16C71, PIC16C72, PIC16C72A, PIC16C73A, PIC16C73B, PIC16C74A, PIC16C74B, PIC16C76, PIC16C77, PIC16F72, PIC16F73, PIC16F74, PIC16F76, PIC16F77, PIC16C84, PIC16F83, PIC16F84, PIC16F84A, PIC16F88, PIC16C505*, PIC16C620, PIC16C620A, PIC16C621, PIC16C621A, PIC16C622, PIC16C622A, PIC16CE623, PIC16CE624, PIC16CE625, PIC16F627, PIC16F628, PIC16F628A, PIC16F630*, PIC16F648A, PIC16F676*, PIC16C710, PIC16C711, PIC16C712, PIC16C715, PIC16C716, PIC16C717, PIC16C745, PIC16C765, PIC16C770*, PIC16C771*, PIC16C773, PIC16C774, PIC16C781*, PIC16C782*, PIC16F818, PIC16F819, PIC16F870, PIC16F871, PIC16F872, PIC16F873, PIC16F873A, PIC16F874, PIC16F874A, PIC16F876, PIC16F876A, PIC16F877, PIC16F877A, PIC16C923*, PIC16C924*, PIC18F242, PIC18F248, PIC18F252, PIC18F258, PIC18F442, PIC18F448, PIC18F452, PIC18F458, PIC18F1220, PIC18F1320, PIC18F2320, PIC18F4320, PIC18F4539, PIC18F6620*, PIC18F6720*, PIC18F8620*, PIC18F8720*

Примечание: микроконтроллеры, помеченные звездочкой (*) подключаются к программатору только через разъем ICSP.

Последовательная память EEPROM I2C (IIC): X24C01, 24C01A, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, AT24C128, M24C128, AT24C256, M24C256, AT24C512.

Схема программатора.
На стороне программатора используется разъем DB9 типа "гнездо" ("мама", "дырки").
Очень часто ошибаются и ставят "вилку" ("папу", "штырьки"), т.е. такое же как и на стороне ПК!

Расположение выводов ICSP у PIC-контроллеров.

Внимание! Материал только для общей справки. Обязательно убедитесь, что указанное расположение выводов соответствует выбранному вами микроконтроллеру. Для этого, обратитесь к Data Sheets и Programming Specifications на соответствующий микроконтроллер (обычно всё совпадает).

Рисунок печатной платы (облегченный вариант).

Рисунок печатной платы (полная версия).

Фотография собранного программатора (облегченный вариант).


Считаем необходимым разместить здесь фотографии программаторов наших благодарных читателей. Если вы достигли результатов, не стесняйтесь – высылайте фотографии, мы с радостью их здесь разместим. Некоторые фотографии не подписаны; я, к сожалению, не имел возможности сохранить имена и адреса. Если найдутся хозяева фотографий - пишите - подпишем.

Введение. Данная инструкция составлена на примере прошивки микросхемы PIC16F876A для сборки универсального многоканального АЦП .

1. Соберите программатор Extra-PIC, отмойте растворителем или спиртом с зубной щеткой, просушите феном.
Осмотрите на просвет на предмет волосковых замыканий и непропаев.
Подготовьте блок питания на напряжение не менее 15В и не более 18 вольт.
Распаяйте удлинительный шнур мама-папа для COM-порта (не путать с нуль-модемными и кабелями для модемов; прозвоните шнур - первая вилка должна идти к первому гнезду и т.д.; нумерация вилок и гнезд нарисована на самом разъеме).
2. Скачайте программу IC-PROG с нашего сайта или с сайта разработчиков .
3. Распакуйте программу в отдельный каталог. В образовавшемся каталоге должны находиться три файла:
icprog.exe – файл оболочки программатора;
icprog.sys – драйвер, необходимый для работы под Windows NT, 2000, XP. Этот файл всегда должен находиться в каталоге программы;
icprog.chm – файл помощи (Help file).
4. Настройте программу.

Для Windows95, 98, ME

Для Windows NT, 2000, XP

(Только для Windows XP ):

Правой кнопкой щёлкните на файле icprog.exe.

"Свойства " >> вкладка "Совместимость " >>

Установите "галочку" на

"Запустить программу в режиме совместимости с: " >>

выберите "Windows 2000 ".

Запуститефайл icprog.exe .

Выберите "Settings " >> "Options " >> вкладку "Language " >> установитеязык "Russian " инажмите "Ok ".

Согласитесь с утверждением "You need to restart IC-Prog now " (нажмите "Ok ").

Оболочка программатора перезапустится.

"Настройки " >> "Программатор ".

Проверьте установки, выберите используемый вами COM-порт, нажмите "Ok ".

"Вкл. NT/2000/XP драйвер " >> Нажмите "Ok " >>

если драйвер до этого не был установлен в системе, в появившемся окне "Confirm " нажмите "Ok ". Драйвер установится, и оболочка программатора перезапустится.

Примечание:

Для очень "быстрых" компьютеров возможно потребуется увеличить параметр "Задержка Ввода/Вывода ". Увеличение этого параметра увеличивает надёжность программирования, однако, увеличивается и время, затрачиваемое на программирование микросхемы.

"Настройки " >> "Опции " >> выберите вкладку "I2C " >> установите "галочки" на пунктах:

"Включить MCLR как VCC " и "Включить запись блоками ". Нажмите "Ok ".

Программа готова к работе.

5. Установите микросхему в панель программатора, соблюдая положение ключа.
6. Подключите шнур удлинителя, включите питание.
7. Запустите программу IC-Prog.
8. В выпадающем списке выберите контроллер PIC16F876A.

9. Если у вас нет файла с прошивкой – подготовьте его:
– откройте стандартную программу "Блокнот";
– вставьте в документ текст прошивки (со странички УМ-АЦП1);
– сохраните под любым именем, например, prohivka.txt (расширение *.txt или *.hex).
10. Далее в IC-PROG Файл >> Открыть файл (! не путать с Открыть файл данных) >> найти наш файл с прошивкой (если у нас файл с расширением *.txt , то в типе файлов выберите Any File *.*). Окошко "Программного кода" должно заполнится информацией.
Плата программатора для ICSP на базе Extra-PIC (без комметариев)

Статья адресована тем, кто знаком с электроникой и, может быть, с микроконтроллерами, но, так как и Я, не работал с конкретным видом микроконтроллеров. В ней я хочу изложить свой опыт освоения PIC-контроллера PIC16 F877 A . В основе изучения создание несложной схемы «Отладочной платы», как универсального электронного устройства, сравнимого с ПЛК для АСУ. В том смысле, что одно и то же устройство, по необходимости, становится различным изделием, в зависимости от программы. Рассмотрим создание нескольких устройств и освоение приемов программирования. В дальнейшем «Отладочную плату» можно будет использовать для создания многих иных проектов. В статье будут рассмотрены вопросы:

  1. Программирование с использованием бесплатно предоставляемых производителем MicroCHIP программных средств MPLAB- X IDE и компилятора XC8 .
  2. Освоение программирования портов ввода-вывода, 7-ми сегментных индикаторов, таймеров, прерываний, ADC- преобразователя.

«Отладочные платы», как изделие, появились по инициативе производителей электронной продукции, в частности - микроконтроллеров. Они позволяют быстро и легко осваивать использование продукции. Кроме того – они с успехом могут заменять «макетные платы», изготовление которых является неотъемлемой составной частью проектирования любого электронного устройства. Однако, пока микроконтроллер малоизвестен, производители, в рекламных целях, всячески снижают стоимость «отладочных плат», иногда даже присылают в подарок всем желающим. Но, как только приходит популярность, стоимость такой продукции становится «не по карману» многим желающим. Достаточно взглянуть на цены серий популярных отладочных комплектов: ARDUINO, EasyPIC, NUCLEO, DISCOVERY. При этом стоимость основного компонента – микроконтроллера сравнительно невысока. Для примера, стоимость PIC16 F877 A находится в районе 5$. Цель данной статьи – показать как создать свою недорогую и оптимальную, без излишеств, отладочную плату. Монтажная схема и печатная плата не рассматривается в виду нецелесообразности определенного вида конструкции. Наиболее приемлемым можно считать вариант монтажа на «универсальной печатной плате». Например такой.

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

Полная принципиальная схема показана на рисунке №1. Для более детального рассмотрения используйте ссылки на ресурсы.

Рисунок №1

Подробнее рассмотрим принципиальную схему. В основе устройства микроконтроллер PIC16F877A. Синхронизация тактирования работы производится кварцем 14 МГц, подключенного стандартно согласно документации к выводам 13 и 14. К портам А и B подключены выходные индикаторные светодиоды. К этим выводам (параллельно резистор-светодиод) можно подключить выходные ключи для увеличения нагрузочной способности. Ключи могут быть любого типа – от транзисторно-релейных – до оптопарно–симисторных. Поэтому на принципиальной схеме они не указаны (все-таки «отладочная» плата). Одним из лучших вариантов можно считать «твердотельное реле типа SSR-10DA или SSR-25DA». К портам D, C и E подключены семисегментные индикаторы типа KW2-561AGA с общими анодами, которые можно заменить величайшим количеством аналогов сдвоенных, четверных или одинарных индикаторов с общим анодом, управляемых отдельным подключением анодов. Аноды подключаются через ключи pnp- транзисторов. Также подключены 7 кнопок без фиксации. А, В и С – отдельно к порту С. Использованы дополнительные подтягивающие резисторы 15-24 ком. Использовать внутренние не рекомендую – некоторые экземпляры микроконтроллеров не вытягивают входы, как следствие – ложные срабатывания, особенно в условиях дополнительных помех. Еще четыре кнопки – 1-4 подключены к портам индикатора таким образом, что бы их состояние можно было бы определять одновременно со сканированием анодов индикаторов через единственный порт ввода – RD6. Тем самым экономится три ввода, в сравнении с отдельным подключением. На схеме так же отображен разъем для внутрисхемного программирования ICSP. Вывод MCLR/VPP подключен к +5В через диод, чтобы после программирования, при подаче напряжения питания, микроконтроллер переходил в рабочий режим. Следует помнить, так же, что, программатор должен «отпускать» выводы программирования PGD & PGC. Некоторые самодельные программаторы этого не делают, вследствие упрощения схемы. Имеются несколько незадействованных выводов, которые, при необходимости, можно подключить в схему для наращивания вводов-выводов.

Для начала программирования необходимо скачать и установить

Таким же образом ищем XC8 Compilers . Так же скачиваем и стандартно устанавливаем в систему на компьютер.

Запустим среду программирования MPLAB X IDE . В меню выбираем «Создать новый проект ». Выбираем «Стандартный проект» (см.рис) затем – «тип микроконтроллера»-PIC16F877A.

После этого MPLABX предлагает выбрать тип программатора. В данном случае принципиального значения в выборе нет. Можно выбрать Simulator или PICKit. HEX-файл прошивки будет сгенерирован в любом случае. Следующий шаг – выбор компилятора. Выбираем XC8 – компилятор СИ, который был предварительно скачан (free-версия) и установлен. В следующем примере используем MPASM-компилятор, поставляемый бесплатно со всеми MPLAB. Заключительный шаг создания проекта – Выбор имени проекта («AUTOMATIC_LIGHTING_EFFECTS» ) и папки расположения проекта. Нажатие кнопки Finish заканчивает создание проекта. Теперь в проект необходимо добавить исходный файл программы. Нажимаем правую кнопку на разделе исходные файлы проекта. Затем New ->main.c даем имя файлу, жмем Finish.

Рассмотрим программу, превращающую «универсальное электронное устройство», каковым, несомненно и является отладочная плата, в устройство определенного назначения. Одной из программ-прошивок, достаточно разнообразно использующей многие возможности аппаратного устройства платы, может быть программа «Автомат Световых Эффектов » . Ее исходный текст приведен ниже. По сообщениям MPLAB-X программа использует до 24% памяти программ и до 17% памяти данных. Ещё она использует 96 байт EEPROM, что так же является далеко не полным использованием. Т.е. у микроконтроллера остается еще масса ресурсов для развития программы.

Рассмотрим основные модули программы. В начале программы указана конфигурация работы микроконтроллера (то что в avr называют fuses). Слово конфигурации записывается в скомпелированную прошивку, благодаря чему отпадает необходимость ручной настройки программатора. Для этого в данном компиляторе существуют директивы # pragma config

#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit // (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

В данной конфигурации выбран источник тактирования XT-кварц 4 Мгц, отключены WDT,BOR,LVP и защита памяти. В данном примере эти опции не нужны.

Благодаря использованию EEPROM программа запоминает какая «световая картина» была запущена на «Автомат Световых Эффектов » перед выключением.

... Number_PRG = EEPROM_READ(ADR_Num_Prg); ... EEPROM_WRITE(ADR_Num_Prg,Control_Number_PRG); ...

Еще в EEPROM запрограммировано семь различных «световых картин» и знакогенератор для семисегментного индикатора.

void Load_EEPROM_DATA(void) { /*--- Segments Simbols ABCDEFGH ---*/ /* 0x2100 -- 0 1 2 3 4 5 6 7 */ __EEPROM_DATA(0b00000011, 0b10011111, 0b00100101, 0b00001101, 0b10011001, 0b01001001, 0b01000001, 0b00011111); ... /*------ Sveto-Programms --- Start_ADR_Programms = 0x2120 -----*/ /* 0x2120 -- 1-1/9 1-2/10 1-3/11 1-4/12 1-5/13 1-6/14 1-7/15 1-8/16 */ __EEPROM_DATA(0b11111011, 0b11111101, 0b11111110, 0b01111111, 0b10111111, 0b11011111, 0b11101111, 0b11110111); ... }

Благодаря использованию EEPROM размер программы значительно компактнее, нежели все коды-сочетания пришлось бы программировать прямо в программе. Впрочем, PIC-контроллеры имеют возможность использовать свободную Flesh-память программ, даже если нет EEPROM. В данной программе для работы с EEPROM используются стандартные макросы XC8 – компилятора. Для загрузки знакогенератора - __EEPROM_DATA(8байт) . Это «не исполняемый» макрос. Он обеспечивает загрузку данных не вовремя выполнения программы микроконтроллера, а во время программирования прошивки. Но в исходном тексте программы он обязательно должен вызываться в теле main(). EEPROM_READ(ADR) и EEPROM_WRITE(ADR,байт) - макросы выполняющие обмен данных во время выполнения программы микроконтроллера.

Кнопки A и С – функционируют как установка номера световой картины. При этом номер 8 – режим АВТО, в котором все программы повторяются по очереди. Кнопка В – реверс. А кнопка №1 – СТОП, №2 – быстрое включение АВТО, №3 – резервная, №4 – запуск после нажатия СТОП. Используемые порты ввода-вывода инициируются в теле функции Init_Ports() . Названия всех определений регистров и битов находятся в файле pic16f877a.h компилятора, где их и можно посмотреть. А включать этот файл в тело программы – не обязательно. MPLAB- X сама указывает компилятору какой микроконтроллер был выбран на этапе создания проекта. О том как создавать проекты – смотрите далее. Функция Init_TMR0() настраивает таймер на работу по прерываниям. Благодаря чему обеспечивается запланированное свечение индикаторов и опрос кнопок.

/* processing interrupts */ void interrupt Handler_Interrupt(void) { if(INTCONbits.TMR0IF) {...} if(PIR1bits.ADIF) { ADC_Value = ADRESH<<8; ADC_Value += ADRESL; ADC_Delay = 100; PIR1bits.ADIF = 0; /* clear interrupt flag ADC */ } }

Так же в обработчике прерываний обрабатываются прерывания ADC – преобразователя. Показания которого, определяемые переменным резистором R1 схемы, используются как задатчики темпа работы «Автомат Световых Эффектов ». Собственно, это и есть все модули программы, рассмотренные вкратце. При внимательном рассмотрении исходного текста программы легко и быстро можно понять как запрограммировать ту или иную функцию микроконтроллера с помощью компилятора XC8-Free edition.

В следующем примере программы для « PIC16 F877 A - Отладочная плата», рассмотрим устройство «ЧАСЫ/ТАЙМЕР-ТЕРМОРЕГУЛЯТОР» .

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
MCU МК PIC 8-бит

PIC16F877

1 В блокнот
VT1-VT5 Биполярный транзистор

КТ361Б

1 В блокнот
VD1-VD5 Выпрямительный диод

1N4001

5 В блокнот
VD6-VD14 Светодиод BL-B2139 9 В блокнот
C1, C2 Конденсатор 15 пФ 2 В блокнот
C3 Электролитический конденсатор 220мкФ 25В 1 В блокнот
R1 Переменный резистор 4.7 кОм 1 В блокнот
R2-R5 Резистор

15 кОм

4 В блокнот
R6-R13 Резистор

200 Ом

8

Предлагаемый вариант отладочной платы предназначен для проверки и отладки программ микроконтроллеров семейства PICmicro в корпусе DIP-28, например: PIC18F2525, PIC18F2620, PIC16F76, PIC18F73, PIC16F870, PIC18F873, PIC18F876 и многих других. Она может быть полезна как начинающим радиолюбителям, так и опытным разработчикам встраиваемого программного обеспечения.

Схема отладочной платы представлена на рис. 1. Она имеет "на борту" следующий набор элементов: ЖКИ WH1602J-YYH-CT (HG1), кнопочную клавиатуру (SB1 -SB16), два светодиода для поверхностного монтажа (HL1 и HL2), звуковой излучатель HCM1606X (HA1) с встроенным генератором, цифровой датчик температуры DS18B20 (BK1), стабилизатор напряжения питания 5 В (DA1) и панель для установки микроконтроллера DD1.

Рис. 1. Схема отладочной платы

Такая комплектация позволяет загружать в микроконтроллер, установленный на плату в качестве DD1, самые разнообразные по сложности и назначению программы и проверять их в действии. Например, программу калькулятора, способного выполнять различные арифметические действия, использующую кнопочную клавиатуру и ЖКИ, или прилагаемую к статье программу цифрового термометра. Дополнительно задействовав излучатель звука HA1, можно испытывать программы различных сигнализаторов, таймеров и будильников. И многое-многое другое.

Выключатель SA1 предназначен для включения и выключения питания платы. Выключателем SA2 управляют подсветкой экрана ЖКИ, а подстроечным резистором R9 регулируют контрастность изображения на нём. Разъём X1 предназначен для подключения программатора (PicKit2, PicKit3 или аналогичного).

Чертёж отладочной платы изображён на рис. 2, её изготавливают из фольгированного с двух сторон стеклотекстолита толщиной 1,5 мм. Расположение элементов на плате показано на рис. 3. Для микроконтроллера DD1 на ней установлена панель DIP-28. Выключатели SA1 и SA2 - IS-1390. Кнопки SB1-SB16 - TC-12ET (KLS7-TS1204) или подобные.

Рис. 2. Чертёж отладочной платы

Рис. 3. Расположение элементов на плате

В качестве примера того, как работать с отладочной платой, предлагаю руководство по превращению её в цифровой термометр. Помимо самой отладочной платы в сборе и микроконтроллера PIC16F876-20I/SP, потребуются программатор PicKit2 либо PicKit3 и компьютер с установленной на нём средой разработки программ для микроконтроллеров PICmicro MPLAB IDE.

Она бесплатна, её последнюю версию (на момент написания статьи - MPLAB X IDE v.3.65) можно найти по адресу http://www.microchip.com/mplab/ mplab-x-ide на официальном сайте компании Microchip. Скачав установочный пакет этой среды, запустите её установку и следуйте выводимым на экран компьютера инструкциям. В окне Select Programs установщика отметьте "галочками" все пункты.

Можно установить и работающий совместно с MPLAB компилятор языка Си, хотя для приложенной к статье программы цифрового термометра, написанной на языке ассемблера, он не нужен. Последнюю на момент написания статьи версию компилятора XC8 Compiler V. 1.42 скачивают по адресу http://www.microchip.com/ mplab/compilers. Он предназначен для восьмиразрядных микроконтроллеров семейства PICmicro. Его бесплатный вариант отличается от платного только степенью оптимизации выходного кода и вполне достаточен для большинства задач. По умолчанию компилятор будет помещён в папку с уже установленной MPLAB Х IDE.

Запустите MPLAB Х IDE и выберите в меню PROJECTS пункт Create New, в результате чего на экране компьютера будет открыто окно New Project. Выберите в нём Standalone Project и нажмите на экранную кнопку Next. В открывшемся окне выберите тип используемого микроконтроллера (в нашем случае это PIC16F876) и, нажав на экранную кнопку Next, перейдите в окно Select Tool. Выберите в нём используемый программатор, например PicKit3. В следующем окне Select Compiler выберите ассемблер mpasm(v5.54).

И наконец, в окне Select Program Name and Folder задайте имя проекта и папку, в которой он будет храниться. Чтобы в текстах программ правильно отображалась кириллица, обязательно укажите в поле Encoding кодировку windows-1251. В завершение подготовки к созданию проекта нажмите на экранную кнопку Finish.

В открывшемся окне на вкладке Projects щёлкните правой кнопкой мыши по пункту Source Files и выберите в выпавшем меню пункт Add existing items. Укажите путь к заранее помещённому на жёсткий диск компьютера (желательно в папку проекта) файлу исходного текста программы на языке ассемблера. В нашем случае это файл Thermo.asm из приложения к статье.

Дважды щёлкните левой кнопкой мыши по имени добавленного файла. Он будет открыт в окне редактора среды MPLAB. Затем нажмите на экранную кнопку с изображением молотка . Начнётся трансляция программы. О её успешном завершении будет свидетельствовать сообщение "BUILD SUCESSFUL" в окне Output. В папке проекта появится готовый к загрузке в память микроконтроллера HEX-файл.

Теперь остаётся только запрограммировать микроконтроллер. Для этого необходимо подключить программатор к отладочной плате, как показано на рис. 4 (надпись на экране индикатора появится только после завершения программирования и запуска программы). Учтите, что расположение одноимённых контактов соединяемых разъёмов отладочной платы и программатора различно. Программатор необходимо также соединить с компьютером.

Рис. 4. Подключение программатора к отладочной плате

Прежде чем приступать к программированию, необходимо подать на разъём X2 напряжение питания 6...15 В от любого источника, например батареи "Крона" (6А22). Запитать плату можно и от программатора. Для этого следует в окне Project Properties выбрать категорию Conf:, а в ней выбрать пункт с именем используемого программатора. В поле Option categories следует установить Power, и в появившемся списке отметить строку "Power target circuit from...", завершающуюся именем выбранного программатора.

Чтобы выполнить трансляцию программы и программирование микроконтроллера, нажмите на экранную кнопку . Об успешном завершении программирования будет свидетельствовать сообщение "Programming/Verify complete". Отладочная плата превратилась в цифровой термометр.

Загрузить имеющийся HEX-файл программы в установленный на отладочную плату микроконтроллер можно, не запуская MPLAB X IDE, с помощью утилиты MPLAB IPE. Онаустанавливает-ся автоматически вместе со средой и служит для непосредственного программирования микроконтроллера, стирания и чтения его памяти. Запустив MPLAB IPE 3.65 из меню "Пуск" компьютера, в открывшемся окне нужно указать тип используемого микроконтроллера и путь к подлежащему загрузке HEX-файлу. В данном случае - к приложенному к статье файлу Thermo.hex, который должен быть заранее помещён на один из дисков компьютера.

Программа сама опознает подключённый к компьютеру программатор PicKit3 или другой из имеющегося в ней списка. Подключив отладочную плату к программатору, нажмите на экранную кнопку Program. Но если микроконтроллер уже был в употреблении и в его памяти записана какая-либо информация, предварительно нужно её стереть, нажав на экранную кнопку Erase. После успешного завершения программирования на экране компьютера вслед за списком запрограммированныхобластей памяти микроконтроллера появится сообщение "Programming/Verify complete".