Mplab

MPLAB

MPLAB – представляет собой единую бесплатную интегрированную среду разработки для контроллеров производства Microchip.

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

Для того чтобы реализовать столь обширные функций в MPLAB входят следующие модули: • менеджер проектов (Project Manager) для управления различными файлами рабочих групп; • редактор (Editor), в котором авторы создают свои программы и поправляют их; • встроенный отладчик микроконтроллеров PIC16F87X MPLAB ICD; • симулятор MPLAB-SIM, пошагово моделирующий работу программы в микросхеме; • эмуляторы MPLAB-ICE, PICMASTER-CE и PICMASTER для виртуального представления поведения контроллера на аппаратуре разработчика в режиме реального времени; • целый ряд компиляторов (MPLAB C-17, MPLAB С-18, MPASM, MPLINK), преобразующих исходный код, написанный на разных языках программирования (ассемблер, Си); • редактор библиотек MPLIB; • программаторы PRO MATE и PICSTART plus, обеспечивающие перенос программ во внутреннюю память микроконтроллеров.

Также возможно подключение дополнительных модулей, разработанных сторонними специалистами.

Кроме этого MPLAB может рассчитать время работы программы, открыть доступ к переменным и специальным регистрам контроллера, объединить разрозненные файлы в проект.

В программной среде используются разнообразные методики для обнаружения логических несоответствий.

Большое количество вспомогательных окон (сервисных, листинга, исходного кода, регистров памяти), трассировка, присутствие точек остановки помогают с легкостью исправлять ошибки.

Благодаря встроенной системе помощи программа довольно проста в изучении, разумеется, при наличии определенных знаний. А производитель PIC-контроллеров Microchip, разработавший  MPLAB, осуществляет прекрасную поддержку своих продуктов.

В папке, где размещается MPLAB, по пути emplatecode лежат файлы-шаблоны для проектов, разрабатываемых на ассемблере, с которых удобно начинать работу.

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

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

MPLAB доступна на операционных системах Windows, Mac OS и Linux. Программа работоспособна во всех последних версиях ОС Microsoft Windows.

Распространение программы: Freeware (бесплатная)

Официальный сайт MPLAB: http://www.microchip.com/mplabide/

Обсуждение программы на форуме

Источник: http://cxem.net/software/mplab.php

PIC – основы основ | PRO-диод

13.04.2014 | Рубрика: PIC – микроконтроллеры

Цикл статей – PIC начинающим или основы основ

PIC — как много в этом слове… для пиковода

Источник: https://pro-diod.ru/programms/pic-micro/pic-osnovy-osnov.html

Урок 3. Установка MPLAB и PICC

  • Урок 2. Регистры микроконтроллера. Порты ввода/вывода

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

  • Интегрированная среда разработки MPLAB;
  • Компилятор PICC;

MPLAB IDE – это свободная интегрированная среда разработки приложений для микроконтроллеров PIC и dsPIC фирмы Microchip.

Она включает в себя огромный набор необходимых инструментов.

MPLAB IDE представляет собой 32-разрядное приложение для ОС Windows, проста в использовании и включает в себя множество бесплатных программных компонентов для быстрой разработки приложений и отладки.

Сначала необходимо скачать актуальную на сегодняшний день версию MPLAB IDE 8. Скачать ее всегда можно на сайте microchip.com.

После скачивания у Вас должен появиться архив вроде MPLAB_IDE_8_85.zip, который необходимо распаковать, и запустить файл setup.exe

Должно появиться окно:

Нажимаем кнопку Next.

Выбираемпункт“I accept the terms of the license agreement” инажимаемкнопку Next.

Выбираем пункт “Custom” и нажимаем кнопку Next.

Здесь необходимо указать путь, куда нужно установить программу. Выбрать путь можно нажав кнопку Browse… Рекомендую оставить путь по умолчанию, т.е. C:ProgramFilesMicrochip. После выбора пути нажимаем кнопку Next.

В этом окне нужно выбрать компоненты, которые будут установлены. Оставляем все по умолчанию, кроме MPLAB C32 Suite. MPLAB C32 Suite занимает много места на диске и нам он в данном курсе не понадобится. При желании его можно будет установить потом. Нажимаем кнопку Next.

Нажимаем Next.

Аналогично – жмем Next.

Нажимаем кнопку Next, и должен начаться процесс установки. В конце установки появится окно:

Нужно выбрать пункт “Yes, I want to restart my computer now” и нажать кнопку Finish.

После перезагрузки компьютера должно/может появиться окно:

Просто закрываем его. Все, на этом установка MPLAB закончена.

https://www.youtube.com/watch?v=P4CKlUionBo

Однако этого не достаточно. Для написания программ на языке Си нам нужно установить хорошо зарекомендовавший себя компилятор PICC. Данный компилятор подходит для микроконтроллеров семейства PIC10/12/16. Для микроконтроллеров семейства PIC18 понадобится устанавливать еще PICC-18.

Сначала нужно скачать компилятор. Заходим на сайт http://htsoft.com/ и нажимаем ссылку PIC10/12/16 MCUs. Внизу страницы будут ссылки на различные версии компилятора. Нужно скачать по ссылке HI-TECH C Compiler for PIC10/12/16 MCUs (PRO/Standard/LITE) Update v9.83.

Возможно, потребуется зарегистрироваться на сайте microchip.com для того чтобы скачать компилятор. Данный компилятор не является бесплатным, поэтому Вы можете воспользоваться им бесплатно только 45 дней. Для начала нам этого достаточно.

Ниже я приведу ссылку на архив с зарегистрированным компилятором, который я Вам рекомендую установить.

Итак, после закачки у Вас должен появиться picc_9_.83_win.exe. Запускаем его.

Нажимаем кнопку Next.

Выбираем пункт “Activate in PRO mode 45 day evalution” – это позволит Вам пользоваться данным компилятором 45 дней в полнофункциональном режиме. Нажимаем кнопку Next.

Ставим галочку “I accept the terms of the license agreement” и нажимаем Next.

Далее должно появиться сообщение, говорящее о том, что компилятор активирован (на 45 дней).

Жмем ОК.

Здесь предлагается выбрать директорию, куда нужно установить компилятор. Оставляем все по умолчанию и нажимаем Next.

Здесь можно выбрать язык для сообщений. Я оставил English. Нажимаем Next.

Дальше идет процесс установки:

Все! Установка закончена. Нажимаем Finish.

Теперь необходимо убедиться, что компилятор установился и интегрирован в среду MPLAB. Для этого запускаем программу MPLAB. Заходим в меню Project->ProjectWizard и нажимаем Далее. Выбираем Device –> PIC12F675 и снова нажимаем Далее. Должно появиться следующее окно:

В списке Active Toolsuite проверяем наличие компилятора HI-TECH Universal ToolSuite. Если его там нет, значит Вы что-то сделали неправильно при установке. Попытайтесь переустановить компилятор.

Если у Вас по каким-то причинам не вышло скачать компилятор на сайте htsoft.com, можете скачать его здесь picc_9_.83_win.exe.

Мануал на PICC 9.83 можно скачать здесь или здесь.

Рекомендую скачать активированную версия компилятора PICC 9.50.

После того, как закончится закачка, у Вас должен появиться архив picc_v9.50_full.zip. Распаковываем его и копируем папки PICC и PICC-18 в папку, куда был установлен PICC Universal ToolSuite, т.е. в папку c:Program FilesHI-TECH Software.

Затем нужно запустить файл PICC9.50PL2_REG.reg в папке c:Program FilesHI-TECH SoftwarePICC9.50
esources
и нажать Да – таким образом происходит активация компилятора.

Дальше заходим в папку c:ProgramFilesHI-TECHSoftwarePICC9.50bin и запускаем программу MPLABConfig.exe.

Эта программа нужна для того, чтобы компилятор добавился в список Active Toolsuite в MPLAB. 

Нажимаем Install.

Нажимаете Finish. Все, теперь Вы готовы приступить к написанию программ для PIC– микроконтроллеров!

Ну вот, пожалуй, на этом и заканчивается наш урок. В следующих уроках рассмотрим установку программы Proteus 7 Professional, попробуем создать первый проект в MPLAB и смоделируем работу микроконтроллера в Proteus.

  • Урок 4. Установка САПР Proteus 7 Professional

Источник: http://hamlab.net/mcu/training/tools.html

Программирование микроконтроллеров PIC. Часть 1. Необходимые инструменты и программы. Основы MPLAB

Итак, вы решили научиться программировать pic-контроллеры. Для начала поговорим о том, что вам для работы с этими контроллерами понадобится.

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

Следовательно нужно какое-то устройство, которое будет записывать (на сленге обычно говорят заливать или прошивать) программу в контроллер. Такое устройство называется программатор.

Подробнее о программаторах и заливке программы мы поговорим позднее, в последней части нашей эпопеи (когда уже будет что заливать), а пока давайте по-порядку — как нам эту программу написать.

Программа для контроллера — это, как я уже сказал, набор машинных кодов, записанный в файле с расширением «hex» (здесь можно почитать про формат *.hex), который и нужно заливать в контроллер с помощью программатора. Никакого другого языка контроллер не понимает.

Следовательно, нужна специальная программа, которая будет переводить текст программы, написанный на каком-либо языке программирования, в машинные коды.

Наиболее удобными в этом плане являются интегрированные среды разработки (IDE — integrated development environment), поскольку они могут не только осуществлять перевод текста программы в машинный код, но и производить симуляцию её работы.

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

IDE, как и программаторов, существует много.

Лично я пользуюсь MPLAB и вам рекомендую, по той простой причине, что MPLAB — это IDE от самого производителя PIC-контроллеров — фирмы Microchip, поэтому имеет отличную поддержку (в том числе на русском языке, что особенно приятно).

С официального сайта Microchip можно скачать и сам этот пакет, и подробное описание по работе с ним. Если не нашли или ломает искать — ссылки для скачивания здесь, правда это уже не самая свежая версия.

В описании на русском языке про всё рассказано: от установки и настройки до удаления.

В большинстве случаев вся установка заключается в том, чтобы запустить setup и ответить на пару вопросов, типа куда ставить драйверы и тому подобное, от себя лишь добавлю, что во избежание глюков ставить пакет надо в такую папку, чтобы в пути были только английские буквы (а не в какую-нибудь, типа C:ПрограммыPICMPLAB). Вообще, кириллицу в путях к файлам или в названиях файлов лучше не использовать, иначе возможны глюки.

MPLAB позволяет писать программы на двух языках: СИ и Ассемблер. Интернет просто ломится от разборок СИ-шников и ассемблерщиков, которые с пеной у рта доказывают друг другу, какой язык лучше. Я отношу себя к ассемблерщикам, поэтому, естественно, расскажу почему лучше именно Ассемблер.

Ассемблер представляет собой набор элементарных команд, выполняемых контроллером. Каждая команда трактуется в машинный код совершенно однозначно, а результат её выполнения и время выполнения всегда одинаковы. То есть, если вы имеете листинг на ассемблере, то вы можете совершенно точно сказать, что делает контроллер в каждый момент времени и каким именно образом достигается нужный результат.

Программа на языке СИ (да и вообще на любом языке высокого уровня) — это уже набор команд не контроллера, а соответствующего языка.

При компиляции каждая такая команда заменяется набором команд для контроллера, но каким именно набором команд она заменяется, — этого вы уже не знаете, это знает только разработчик языка программирования.

Соответственно, невозможно понять, каким именно образом контроллер выполняет желаемое действие.

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

В данном случае можно провести следующую аналогию: вы хотите поговорить с китайцем, но вам говорят: “Китайский слишком сложный язык, но есть один дядя в Болгарии, который 20 лет жил в Китае и отлично его выучил.

А болгарский язык с русским очень похожи и русскому человеку он интуитивно понятен, так что выучите болгарский, а уж дядя переведёт.”

В случае с ассемблером, вы изучаете сам контроллер и правила, по которым надо разговаривать с контроллером. При этом контроллер имеет всего-то несколько десятков команд, которые умещаются на одном листке и их легко можно окинуть одним взглядом.

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

Что нужно сделать в MPLAB, чтобы получить желанную прошивку? Как я уже сказал — подробности читайте в руководстве к IDE MPLAB, оно на русском и там всё понятно (если не понятно — идём на форум), я же только кратко перечислю самое основное и дам некоторые рекомендации.

Итак, мы установили MPLAB, хотим написать в нём программу для контроллера и получить готовую прошивку.

Сначала нужно создать проект. Для каждого проекта рекомендую заводить отдельную папку, потому что, во-первых, в проект может входить несколько файлов, а, во-вторых, сам MPLAB создаст ещё несколько вспомогательных файлов (*.lst, *.

err, *.cod, *.bkx). Если несколько проектов будут в одной папке, то легко можно запутаться какие файлы к какому проекту относятся.

Короче, создаём для проекта новую папку, потом запускаем MPLAB и выбираем меню Project -> New Project…

В появившемся окошке, в проводнике справа, выбираем нашу папку, в левой части (в поле под надписью File Name) пишем название будущего проекта, например my1.pjt (не забываем указать расширение), и жмём ОК.

Появляется окно с названием Edit Project. Это менеджер проекта, в котором указываются параметры проекта (какие файлы и библиотеки нужно подключить к проекту, какой будет использоваться камень, будет ли использоваться симуляция и многое другое). Находим поле ввода с названием Development Mode. Справа от этого поля есть кнопочка Change… Нажимаем.

Открывается окошко с названием Development Mode, в котором мы видим кучу вкладок. На вкладке Tools ставим галочку рядом с MPLAB SIM Simulator (грех для отладки симулятором не пользоваться), в поле ввода Processor выбираем контроллер, с которым мы будем работать.

На вкладке Clock указываем какая у нас будет частота генератора. Жмём ОК. На ошибку и предупреждение не обращаем внимания, это просто нам говорят, что пока не могут создать .

hex (ну правильно, у нас пока и программы нет) и что при изменении настроек надо заново перекомпилировать проект (так мы ещё вообще ни разу не компилировали).

В поле ввода Language Tool Suite выбираем Microchip.

Нажимаем кнопку с названием Add Node… В появившемся окне, в проводнике справа выбираем папку проекта, в поле ввода слева пишем как будет называться файл с текстом программы на ассемблере, например my1.asm (не забываем указывать расширение), и жмём ОК. Всё, теперь мы подключили к проекту файл my1.asm (указали, что текст программы будет в этом файле).

На этом с Edit project заканчиваем, — нажимаем ОК.

Теперь нужно, собственно, создать файл с текстом программы (в менеджере проекта мы просто указали, что текст будет в таком-то файле, но фактически этот файл ещё не создан). Для этого идём в меню File и выбираем пункт New. Откроется окошко редактора с названием Untitled1.

Выбираем меню File -> Save As…, в проводнике справа указываем папку проекта, в поле ввода File Name пишем название файла, которое мы указали в менеджере проекта, то есть в нашем примере это будет my1.asm.

Если всё сделано правильно, то название окошка редактора поменяется с Untitled1 на путьmy1.asm.

Вот и всё! Теперь осталось только набрать в окошке редактора текст программы, скомпилировать проект (меню Project->Build All) и, если в программе нет ошибок (что с первого раза бывает очень редко), то в папке проекта появится готовая прошивка (файл с расширением hex), которую можно заливать в контроллер.

Источник: http://radiohlam.ru/?p=961

PIC18 как программировать на Си в MPLAB

 

  Для микроконтроллеров семейств PIC10, PIC12, PIC16, PIC18, PIC24, dsPIC30, dsPIC33
и PIC32 все действия похожи – только компилятор нужно скачать соответствующий.

  Для микроконтроллеров PIC10, PIC12 и PIC16  в пакете MPLAB поставляется великолепный компилятор CCS – в нём есть готовые библиотеки-драйверы для массы самых популярных у радиолюбителей микросхем и отличные примеры программирования PIC.

1) Скачайте компилятор MPLAB® C Compiler for PIC18 MCUs  – студенческую версию – Student Edition. Он полностью функционален 60 дней, затем появится ограничение на размер кода.

Ограничение можно обойти установив компилятор на виртуальный ПК созданный программами VirtualBox или VirtualPC.

Установите компилятор в папку C:MCC18  
Сделайте резервную копию папок –  C:MCC18example   C:MCC18h  C:MCC18lib

Скачайте документацию: MPLAB C18 C Compiler Getting Started – быстрый старт MPLAB IDE Current Release Notes – описание версии MPLAB C18 C Compiler User's Guide – руководство по компилятору PIC18F Development Tools Product Overview – обзор инструментов MPASM™/MPLINK™ PICmicro® Quick Chart – таблица по ассемблеру и линкеру MPASM/MPLINK User's Guide – руководство по ассемблеру и линкеру 

MPLAB C18 Libraries Documentation – описание библиотек компилятора (в них реализована поддержка переферии МК – PWM, SPI, I2C, UART, USART, работа со строками и математика)

2) Скачайте MPLAB и установите в папку по-умолчанию.
Скачайте MPLAB IDE User's Guide – руководство.

3) Запустите MPLAB и затем “мастер проекта”

На появившейся заставке мастера нажмите “далее” и в следующем
диалоге выберите модель МК который хотите использовать

Жмите “Далее” и во втором шаге укажите компилятор C18

Если компилятора не окажется в списке то найдите его в ручную и укажите.

Жмите “Далее” и в следующем шаге-окне нажмите “Browse” и создайте папку
для проекта – например такую :    

Откройте созданную папку и дайте название проекту и “Сохранить”

Должно получится вот так

Жмите “Далее”.

Electronic Banner Exchange (ElBE)

В этом окне можно было бы вставить файлы в проект, например файлы с исходными
текстами программы или библиотеки – но у нас их нет, потому просто жмите “Далее”

Работа мастера завершена – вот отчет

 

Нажмите “Готово”.

Вот что теперь в папке проекта

4) В MPLAB создайте новый файл – меню “File” > “New” и
сохраните его “File” > “Saveas” под именем   main.c

Теперь нужно набрать в этом окне текст первой программы

или скопировать и вставить в окно. Должно получиться вот так :

Кликните “дискетку” чтобы сохранить текст в файле.

Теперь нужно добавить main.c в проект.

Вот так

5) Нужно выбрать инструмент в котором будет происходить проверка работы программы – это может быть реальное устройство с выбранным МК подключенное через интерфейс типа ICD2 к ПК , может быть супер симулятор PROTEUS – он позволяет симулировать работу не только МК PIC но целого электронного устройства с несколькими МК и даже разных производителей в одной схеме.

Мы будем использовать симулятор MPLAB – выберите его

Симулятор нужно настроить  – меню: “Debugger” > “Settings”

Здесь указывается частота тактирования микроконтроллера – 20 МГц в нашем примере.

Перейдите на закладку “Uart1 IO” и сделайте такие установки

Выход “Output” мы направим в “Window” – т.е. на экран, а можно было сохранять в файл. Если указать “Input File” то при симуляции его содержимое будет отправляться в UART МК. Нажмите “Применить” и “ОК”.

6)  Выполните компиляцию проекта

В результате должно появится 2 новых окна

Закройте окно c018i.c

Самое важное сейчас – это сообщение об успешной компиляции “BUILD SUCCEEDEDOutput” выводятся все сообщения о ходе работа инструментов пакета MPLAB – вы видите сейчас в нём подробности процесса компиляции.  Если бы при компиляции возникли ошибки или предупреждения то они тоже выводились бы в это окно. 

Уменьшите окно вывода и разместите его удобно на экране, затем переключитесь на закладку “SIM Uart1” – сюда будет выводится информация из UART  PIC18F452 при симуляции.

А в папке проекта появились новые файлы :

main.hex  – это файл “прошивка” для загрузки в реальный МК

main.cof  – это файл с информацией для отладки в симуляторах по исходному
тексту программы на Си, например в PROTEUS – это очень удобно.

PIC и статьи на русском

7) Щелкните два раза мышкой на сером фоне, чуть левее строки 

Появится красный кружок – это “ТОЧКА ОСТАНОВА” ( BreakPoint ) – перед выполнением строки кода перед которой стоит “ТО” симулятор остановится и будет ждать вашей команды.

8) Включите секундомер – меню “Debugger” > “StopWatch” – он позволяет точно измерять временные промежутки при симуляции. 

9) Симуляцию запустите кнопкой “Пуск” – голубой треугольник в панели управления

Программа начнет выполняться и остановится на точке останова.
Приветствие появилось в окне вывода 

Секундомер показывает что с запуска МК прошло 836,8 мкС это 4184 машинных цикла для микроконтроллеров PIC18 – у них один машинный цикл это 4 периода тактового сигнала.

10) Нажмите еще раз кнопку “Пуск” – цикл будет выполнен еще раз и в окне секундомера появится число 4186 – значит на выполнение цикла тратится 2 машинных цикла PIC18F452 или 8 периодов частоты 20 МГц.  

Теперь вы знаете как создать проект и простейшую программу для PIC18.
Надеюсь скоро добавить следующие обучающие материалы.

Как сделать простейший программатор для PIC18 и как его запрограммировать
вы можете найти в низу странички для начинающих электронщиков.

Источник: http://mcc18.narod.ru/

MPLAB Harmony: писать программы для PIC32 стало проще

Журнал РАДИОЛОЦМАН, февраль 2014

Михаил Русских

Приводится описание программной структуры MPLAB Harmony, рассматривается установка плагинов и подключение модулей к проекту, описывается структура проекта в соответствии с концепцией MPLAB Harmony

Компания Microchip давно известна на отечественном рынке микроконтроллеров. Ее 8-разрядные устройства серии PIC16 и PIC18 до сих пор ценятся разработчиками. Microchip также производит качественные 16-разрядные микроконтроллеры серий dsPIC30, dsPIC33 и PIC24, используемые в схемах управления двигателями и в малых мультимедийных системах.

В сегменте 32-разрядных устройств эта компания поначалу была на лидирующих позициях, представив в 2007 году микроконтроллеры семейства PIC32MX с тактовой частотой до 80 МГц и производительностью до 120 млн. итераций основного цикла в секунду (DMIPS).

Но выбранное ядро MIPS32, хотя и обладало значительной вычислительной мощностью, все же не было столь популярным, как Cortex-M3, которым оснащались устройства конкурентов, таких как Atmel и STmicroelectronics.

Более того, впоследствии конкуренты стали использовать ядро Cortex-M4, благодаря чему их продукция значительно выиграла в производительности. Например, микроконтроллеры серии STM32F42x компании STmicroelectronics могут работать на частоте до 180 МГц и выполнять до 225 DMIPS.

Популярности ядру Cortex также добавляет то, что единые среды разработки, например, Keil и CooCox, поддерживают множество устройств с данным ядром, а стандарт программного интерфейса CMSIS (Cortex Microcontroller Software Interface Standard) делает программирование максимально удобным и быстрым.

Но Microchip вновь стремится выйти в лидеры, в связи с чем в конце 2013 года она выпустила микроконтроллеры семейства PIC32MZ, работающие на частоте до 200 МГц и обладающие производительностью 330 DMIPS. Этот рывок был бы не таким значительным, если бы компания не представила базовую программную структуру MPLAB Harmony, речь о которой пойдет в данной статье.

MPLAB Harmony, по сути, является фреймворком, включающим в себя программные модули, которые выступают в роли строительных блоков при создании приложения. Используя MPLAB Harmony, разработчик может включить в свой проект библиотеки и программные драйверы как компании Microchip, так и сторонних производителей.

Кроме того, фреймворк поддерживает такие операционные системы реального времени, как FreeRTOS и OPENRTOS. Блочная структура позволяет осуществить принцип «разделяй и властвуй» при программировании своего приложения.

Это значит, что библиотеки и модули не используют какие-либо глобальные переменные и не делят между собой одни и те же регистры. Таким образом, каждый модуль может распоряжаться только своими ресурсами, что напоминает принцип инкапсуляции, принятый в объектно-ориентированном программировании.

Если одному модулю нужно использовать ресурсы другого, то он вызовет интерфейсную функцию этого модуля. Это упрощает взаимодействие между модулями и позволяет избежать конфликтов внутри программы.

Модули в MPLAB Harmony делятся на четыре категории: библиотеки периферии, драйверы устройств, системные службы и промежуточное программное обеспечение (middleware).

Библиотеки периферии (PLIB) обеспечивают низкоуровневый интерфейс с периферийными модулями, позволяя программисту не задумываться о том, что происходит на уровне регистров, чем, в свою очередь, облегчают написание драйверов для других моделей микроконтроллеров семейства PIC32.

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

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

Middleware-модули необходимы для организации работы периферийных блоков со сложными протоколами, например, стеков TCP/IP, USB, интерфейса работы с графикой. За тем, чтобы драйверы или middleware-модули не конфликтовали между собой из-за каких-либо общих ресурсов, следят системные службы. Например, если стеки интерфейсов TCP/IP и USB при отсчете времени для своих периодических задач должны использовать один и тот же таймер, то во избежание конфликта отслеживание обращений к этому таймеру нужно поручить системной службе.

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

Каждый модуль реализован по принципу конечного автомата. У него обязательно должна быть функция инициализации и одна или несколько функций выполнения задач. Инициализация происходит практически сразу же в функции main() после включения или перезагрузки микроконтроллера.

В бесконечном цикле, то есть во время стандартной работы микроконтроллера, модулем последовательно выполняются задачи в соответствии со структурой конечного автомата. Благодаря такому подходу могут одновременно работать несколько модулей и само приложение, выполняя операции поочередно.

Таким образом, реализуется принцип многозадачности.

Установка плагинов MPLAB Harmony

Установка MPLAB Harmony [1] происходит быстро и не вызывает затруднений. После установки в среде разработки MPLAB X [2] следует добавить рекомендуемые плагины. В главном меню MPLAB X во вкладке Tools нужно выбрать Plugins.

Затем необходимо перейти в каталог с установленной MPLAB Harmony, в нем зайти в директорию /utilities/configurator и выбрать файл com-microchip-harmonyconfigurator.nbm. Этот файл позволяет подключить конфигуратор, благодаря которому пользователь сможет в среде MPLAB X с помощью графического интерфейса добавлять к своему проекту различные модули Harmony.

Помимо этого плагина, Microchip также рекомендует подключить файл с документацией com-microchip-harmony_help.nbm, находящийся в папке [каталог MPLAB Harmony]/doc. После выбора этих файлов во вкладке Downloaded окна Plugins (Рисунок 1) нужно нажать Install для установки этих плагинов.

В результате во вкладке Tools главного меню должен появиться пункт MPLAB Harmony Configurator.

 Рисунок 1. Установка плагинов MPLAB Harmony.

Подключение модулей MPLAB Harmony

Добавление модулей к проекту с помощью MPLAB Harmony Configurator также не сопряжено с какими-либо сложностями. Подключать модули можно как к имеющимся проектам, уже содержащим свои файлы с исходным кодом, так и к только что созданному пустому проекту.

Во втором случае MPLAB Harmony может создать для проекта шаблон, включающий в себя файл main.c. Процедура подключения состоит из четырех шагов. Сначала нужно указать корневой каталог MPLAB Harmony, в котором должен присутствовать файл manifest.xml. В этом файле имеется вся информация о программных модулях текущей версии MPLAB Harmony.

Далее требуется выбрать необходимые для проекта модули. По умолчанию отмечены только пункты Required Files в Peripheral Library Headers->Peripheral Library Module и configurations->PIC32. Они позволят присоединить к проекту шаблонные заголовочные и конфигурационные файлы.

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

Например, при подключении простых драйверов для UART или АЦП никаких дополнительных настроек не потребуется, все необходимые значения будут находиться в файлах system_config.h и system_init.c.

А при выборе серьезного middleware-модуля, например, стека USB или TCP/IP, пользователь сможет настроить дополнительные параметры, связанные с этим модулем (Рисунок 2). На последнем шаге пользователю будет предложен выбор: включить шаблон приложения MPLAB Harmony в свой проект или нет.

Включать его следует при создании проекта с нуля, тогда к нему будут добавлены файлы, соответствующие концепции построения приложения с помощью MPLAB Harmony. К этим файлам относится и main.c, поэтому в случае уже имеющегося приложения этот файл будет перезаписан, что может привести к потере части программы.

Также следует отметить, что при использовании библиотек MPLAB Harmony в проекте должны быть прописаны пути к заголовочным файлам используемых модулей. Сделать это можно, выбрав в главном меню File->Project Properties. В появившемся окне в разделе General посредством кнопки add нужно добавить пути [каталог MPLAB Harmony]/framework и [каталог MPLAB Harmony]/bin/framework/Peripheral. Также нужно прописать путь к файлу system_config.h, который желательно поместить в папку своего проекта.

Рисунок 2. Настройка стека TCP/IP с помощью MPLAB Harmony Configurator.

Структура проекта

Проект, созданный с помощью MPLAB Harmony, имеет достаточно четкую и продуманную структуру (Рисунок 3). Основными разделами, в которых содержатся интересующие нас файлы, являются Source files (файлы с исходным кодом) и Header files (заголовочные файлы).

Дерево каталогов внутри этих разделов должно быть одинаковым, поэтому уделим внимание файлам с исходным кодом, содержащимся в Source files. В каталоге app имеются файлы main.c и app.c. Хотя сложные проекты могут содержать здесь также дополнительные файлы. Концепция MPLAB Harmony предполагает, что файл main.

c должен быть максимально простым, поэтому его код (Листинг 1) образует только базовый каркас программы. Как уже можно судить по названию, в этом файле реализована обязательная в языке C функция main().

В ней сначала вызывается функция SYS_Initialize(), целью которой является инициализация каждого используемого в приложении модуля. Поскольку работа модулей основывается на автоматном подходе, эта функция должна перевести автомат каждого модуля в начальное состояние.

После инициализации программа сразу переходит в бесконечный цикл, из которого при нормальной работе программа никогда не должна выйти. Последние две строчки сигнализируют о возникновении нештатной ситуации и завершают работу программы возвратом из функции main(). Внутри бесконечного цикла вызывается функция SYS_Tasks().

Она поочередно обращается к каждому модулю, что позволяет функционировать системе в целом. Следует отметить, что некоторые модули могут работать по прерываниям, поэтому они могут не вызываться функцией SYS_Tasks().

Рисунок 3. Структура проекта в соответствии с концепцией MPLAB Harmony.

Листинг 1.

int main ( void ){ /* Инициализация системы */ SYS_Initialize ( NULL ); while ( true ) { /* Выполнение задач */ SYS_Tasks ( ); } /* Нештатная ситуация, завершение программы */ SYS_ASSERT ( false , “Error! Exiting main” ); return ( EXIT_FAILURE );

}

В файле app.c реализуется логика работы самого приложения. Этот файл должен иметь функции APP_Initialize() и APP_Tasks(). Вызываемая из SYS_Initialize(), функция APP_Initialize() обязана непосредственно перевести автомат каждого модуля приложения в начальное состояние, а также может при необходимости выполнить дополнительную инициализацию.

Функция APP_Tasks(), в свою очередь, вызывается из SYS_Tasks(). В ней выполняемые приложением действия делятся на небольшие задачи, которые нужно исполнить максимально быстро. При этом между задачами одного модуля должен быть определенный временной промежуток, за который должны быть выполнены задачи других модулей.

После завершения одной задачи, конечный автомат переходит в следующее состояние для выполнения другой задачи. Автоматный подход здесь реализуется структурой switch-case. Примерный каркас функции APP_Tasks() представлен в Листинге 2.

В нем описан простой автомат, определяющий логику работы модуля и имеющий четыре состояния: APP_STATE_INIT, APP_STATE_WAIT_FOR_READY, APP_STATE_WAIT_FOR_DONE и APP_STATE_IDLE. В первом происходит конечная подготовка модуля к работе, например, открытие порта.

Если эта подготовка проходит успешно, то выполняется переход в состояние APP_STATE_WAIT_FOR_READY, где проверяется, готов ли модуль выполнить свою задачу, например, готов ли порт переслать данные. Если да, то совершается переход в следующее состояние, в противном случае автомат остается в этом состоянии до готовности модуля.

В состоянии APP_STATE_WAIT_FOR_DONE ожидается, когда модуль завершит свою задачу. В случае с портом, это может быть отправка последнего байта. Если модулю больше не нужно выполнять какие-либо задачи, то он может быть переведен в пассивное состояние APP_STATE_IDLE. В этом случае при обращении к функции APP_Tasks() никакие действия внутри нее не выполняются. Если модуль из работы выводить не нужно, то автомат можно переключить во второе состояние. Серьезные проекты могут иметь более сложную автоматную структуру.

Листинг 2.

void APP_Tasks(void){ switch (state) { case APP_STATE_INIT: { /*Конечная подготовка модуля*/ } case APP_STATE_WAIT_FOR_READY: { /*Проверка модуля на готовность выполнения задачи*/ } case APP_STATE_WAIT_FOR_DONE: { /*Ожидание завершения задачи и переход в состояние APP_STATE_IDLE*/ } /* Переход в нерабочее состояние */ case APP_STATE_IDLE: default: break; }}

В каталоге app имеется каталог system_config, в котором также содержится один или несколько подкаталогов, которые отвечают за конфигурацию приложения.

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

Обычно в system_config содержатся следующие файлы: system_config.h, system_init.c, system_tasks.c, system_int.c. В заголовочном файле system_config.h прописываются константы и начальные значения величин, используемых в подключенных модулях. В system_init.c содержится вызываемая из main() функция SYS_Initialize(). В system_tasks.

c, соответственно, имеется функция SYS_Tasks(). Но, как уже ранее упоминалось, работающие по прерываниям модули не вызываются из SYS_Tasks(), вместо этого в файле system_int.c прописаны обработчики прерываний, в которых происходит вызов зависимых от прерывания задач.

Помимо директории app, содержимое файлов которой может и должен менять пользователь, существует еще директория framework. В ней находятся файлы с кодом модулей MPLAB Harmony. В зависимости от сложности проекта она может содержать большое число файлов и подкаталогов. Для нормальной работы приложения пользователь не должен вносить изменения в эти файлы.

Заключение

MPLAB Harmony является отличным помощником при программировании микроконтроллеров семейства PIC32. Благодаря четкой структуре проекта и продуманной концепции добавлять модули и изменять их параметры стало намного проще. Таким образом, компания Microchip создала для своих устройств нечто вроде CMSIS для микроконтроллеров с ядром Cortex, чем упрочила свои позиции на рынке.

Ссылки

Источник: https://www.rlocman.ru/review/article.html?di=151152

Ссылка на основную публикацию
Adblock
detector