Введение
PIC-контроллеры наиболее популярны в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по управлению системой. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через различные порты ввода-вывода.
Миниатюрные PIC-контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «приём – обработка – передача данных» и несложных регуляторов систем автоматического управления.
Компания Microchip распространяет MPLAB – бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в PIC-микроконтроллеры через программаторы.
MPLAB может взаимодействовать с MATLAB Simulink, что позволяет разрабатывать программы для PIC-контроллеров в Simulink – среде графического моделирования и анализа динамических систем.
В данной статье рассматриваются средства программирования PIC-контроллеров MPLAB и MATLAB Simulink, а также программатор Olimex PIC-KIT3.
Характеристики миниатюрного PIC-контроллера
Семейство РIС12ххх содержит контроллеры в миниатюрном 8-выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC-архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.
Для примера, в таблице 1 даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым энергопотреблением и широким диапазоном питания [1].

Дополнительно стоит отметить следующие особенности контроллера PIC12F629:
- возможность сброса по включению питания (POR);
- наличие таймера сброса (PWRT) и таймера ожидания запуска генератора (OST);
- возможность сброса по снижению напряжения питания (BOD);
- наличие сторожевого таймера WDT;
- наличие мультиплексируемого вывода (–MCLR);
- наличие системы прерываний по изменению уровня сигнала на входах;
- индивидуально программируемые для каждого входа подтягивающие резисторы;
- программируемая защита входа;
- поддержка режима пониженного энергопотребления (SLEEP);
- возможность выбора режима работы тактового генератора;
- внутрисхемное программирование ICSP с использованием двух выводов;
- четыре пользовательские ID-ячейки.
КМОП-технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход. Остальные выводы можно сконфигурировать для работы как на вход, так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.
Интегрированная среда разработки MPLAB IDE
MPLAB IDE – бесплатная интегрированная среда разработки ПО для PIC-микроконтроллеров, которая включает средства для создания, редактирования, отладки, трансляции и компоновки программ, а также записи машинного кода в микроконтроллеры через программаторы.
Бесплатные версии MPLAB (включая MPLAB 8.92) можно скачать на сайте компании Microchip [2].
Создание проекта
Процесс создания проекта программы PIC-контроллера в среде MPLAB включает следующие шаги [3].
- Вызов менеджера проекта: Project > Project Wizard.
- Выбор типа PIC-микроконтроллера, например, Device > PIC12F629.
- Выбор компилятора, например, Microchip MPASM Toolsuite для ассемблера.
- Выбор пути к каталогу проекта (клавиша Browse...) и ввод имени проекта.
- Подключение файлов к проекту в окне Project Wizard > Step Four (можно не выполнять, а сделать позже, внутри активного проекта, клавиша Next открывает следующее окно).
- Завершение создания проекта (клавиша Finish).
- В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на рисунке 1.
Создание файла программы
Программу можно создать при помощи любого текстового редактора. В MPLAB имеется встроенный редактор, который обеспечивает ряд преимуществ. Например, оперативный лексический анализ исходного текста, в результате которого в тексте цветом выделяются зарезервированные слова, константы, комментарии, имена, определённые пользователем.
Создание программы в MPLAB можно выполнить в следующей последовательности.
- Открыть редактор программ: File > New. Изначально программе присвоено имя Untitled.
- Набрать или скопировать программу, например, на ассемблере.
- Сохранить программу под другим именем (File > Save As), например, FirstPrMPLAB.asm.
Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (см. рис. 2) используются следующие обозначения:
- директива LIST – назначение типа контроллера;
- директива __CONFIG – установка значений битов конфигурации контроллера;
- директива equ – присвоение числового значения;
- директива org 0 – начало выполнения программы с адреса 0;
- команда bsf – устанавливает бит указанного регистра в 1;
- команда bcf – сбрасывает бит указанного регистра в 0;
- команда movlw – записывает константу в регистр W;
- команда movwf – копирует содержимое регистра W в указанный регистр;
- команда goto – обеспечивает переход без условия на строку с меткой;
- директива end – конец программы.
Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера зависит от настроек слова конфигурации. Настройки можно установить в директиве __CONFIG программы непосредственно или через меню MPLAB: Configure > Configuration Bits. Параметры директивы __CONFIG контроллера PIC12F629 перечислены в таблице 2.

Добавление программы к проекту
Для откладки и компиляции файл программы необходимо вставить в проект. Пример добавления программы к проекту показан на рисунке 3. Сохранить материалы проекта можно командой File > Save Workspace.

Компиляция
Чтобы создать бинарный файл с расширением .hex для прошивки микроконтроллера, необходимо откомпилировать проект. Запуск компиляции выполняется командой Project > Build All. Результаты компиляции можно увидеть в окне Output (см. рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции BUILD SUCCEEDED. Загрузочный HEX-файл можно найти в рабочем каталоге.
Отладка программы
Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется нажатием Debugger > Select Tool > 4 MPLAB SIM.

После запуска отладчика в окне Output (см. рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Также после запуска становятся активными команды отладчика (см. рис. 4):
- Run – непрерывное выполнение программы до точки останова (Breakpoint), если таковая установлена;
- Halt – остановка программы на текущем шаге выполнения;
- Animate – анимация непрерывного выполнения программы;
- Step Into – выполнение по шагам (вызовы Call выполняются за один шаг);
- Step Over – выполнение по шагам, включая команды вызовов Call;
- Reset – начальная установка программы, переход указателя на первую команду;
- Breakpoints – отображение списка точек останова.
При выполнении программы по шагам на текущий шаг указывает зелёная стрелка (см. рис. 5). Непрерывное выполнение программы останавливается командой Halt или при достижении программой точки останова. Точка останова (символ В в красном кружке) устанавливается или снимается в строке программы двойным щелчком.

В процессе отладки можно наблюдать за состоянием регистров, переменных и памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы и содержимое регистров. После внесения изменений необходимо перекомпилировать программу.
Входные сигналы портов модели микроконтроллера можно задать в разделе Debugger > Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.
Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере. Так, например, отладчик программы (см. рис. 5) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются – находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1.
Программа (см. рис. 5) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5,3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4,6 В, измеренное программатором питание контроллера – 4,75 В.
Прошивка микроконтроллера
Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения будет показана во второй части статьи.
В контроллер PIC12F629 записана заводская калибровочная константа настройки частоты внутреннего тактового генератора. При необходимости её можно прочитать и восстановить средствами MPLAB с использованием программатора.
Команды для работы с программатором и изменения его настроек находятся в меню Programmer. Тип программатора в MPLAB выбирается в меню Programmer > Select Programmer.
Прошивка микроконтроллера через программатор запускается командой Programmer > Program. Сообщение об успешной прошивке показано на рисунке 6.

Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает жёлтый светодиод.
Подключение MATLAB Simulink к MPLAB
В системе моделирования динамических систем Simulink (приложение к MATLAB) на языке графического программирования [4] можно разрабатывать программы для семейства PIC-контроллеров, имеющих АЦП/ЦАП, счётчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.

Пример программы на языке графического программирования для PIC-контроллера, выполненной в среде моделирования динамических систем Simulink, показан на рисунке 7. Модель содержит блоки: АЦП (ADC Input), интерфейс UART, широтно-импульсный преобразователь (PWM) и цифровой порт (Digital Output), описывающие работу узлов контроллера, а также блоки библиотеки Simulink (счётчики, сумматоры и др.), которые после компиляции реализуются программными средствами контроллера.

Взаимодействие средств разработки и компиляции программ для PIC-контроллеров в Simulink показано на рисунке 8 [5].
Для построения среды разработки необходимы следующие компоненты MATLAB:
- Simulink;
- Real-Time Workshop Embedded Coder;
- Real-Time Workshop.
- Также потребуется Cи-компилятор компании Microchip:
- C30 для контроллеров PIC24, dsPIC30 и dsPIC33;
- C32 для контроллеров серии PIC32.
Установка компонентов MATLAB
В интернете [6] имеются Simulink-библиотеки (dsPIC Toolbox) для PIC-контроллеров и версий MATLAB c R2006a по R2012a.
Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу порядка 100 PIC-микроконтроллеров из серий 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink-моделями PIC-контроллеров, имеющими до 7 портов ввода-вывода.
Для установки dsPIC Toolbox (библиотеки блоков PIC-контроллеров для MATLAB Simulink) необходимо сделать следующие действия [7, 8].
- Скачать dsPIC Toolbox для требуемой версии MATLAB.
- Распаковать zip-файл в папке, в которой будут установлены Simulink-блоки.
- Запустить MATLAB.
- Настроить текущий каталог MATLAB на папку с распакованным файлом.
- Открыть файл install_dsPIC_R2012a.m и запустить его клавишей F5.
Библиотеки dsPIC и примеры Simulink-моделей устанавливаются в текущую папку MATLAB. Установленные блоки для моделирования PIC-контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (см. рис. 9).

Для совместной компиляции Simulink-модели средствами MATLAB и MPLAB необходимо прописать в переменной окружения path MATLAB путь с высшим приоритетом к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:
>>path(‘c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\’,path).
Заключение
Во второй части статьи будет рассказано о компиляции программы и её загрузке в микроконтроллер.
Литература
- PIC12F6XX. Однокристальные 8-разрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated. PIC12F629, PIC12F675. М. OOO «Микро-чип». 2002.
- www.microchip.com/mplab/mplab-x-ide.
- Microchip. MPLAB IDE. User’s Guide with MPLAB Editor and MPLAB SIM Simulator. ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_User_Guide_51519c.pdf.
- Dr. Bob Davidov. Портал научно-практических публикаций www.portalnp.ru/author/bobdavidov.
- Embedded Target for 16 bits PIC. www.kerhuel.eu/RTWdsPIC/.
- www.kerhuel.eu/wiki/Download.
- ICSP. Внутрисхемное программирование PIC-контроллеров DOC Rev 1.03 (последнее обновление 19.05.2005). www.5v.ru/icsp.htm.
- MPLAB IDE Help: MATLAB.
- Introduction to Microchip-SIMULINK Blocksets and MATLAB Plug-in for MPLAB® IDE Produced by Murali Manohara Chembarpu. www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en542925.pdf.
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!