Средства программирования PIC-контроллеров. Программирование pic контроллеров - программы - radio-bes - электроника для дома Пик контроллеры для начинающих

Наконец-то сегодня нашлось время познакомить вас с ещё одним семейством микроконтроллеров — это микроконтроллеры PIC .

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

Разработчиком данного семейства является компания Microchip , которая также ялвяется очень известной и её продукция востребована по всему миру.

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

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

Например, те контроллеры AVR, с которыми мы до сих пор работаем, являются 8-битными, а контроллеры STM, которые мы изучаем — 32-битными.

Вот и контроллеры PIC также делятся по битности.

Первая линейка — это 8-битные контроллеры PIC. Наименование их моделей начинается с префикса PIC10/PIC12/PIC16.

Данная линейка также делится на 3 семейства.

1. BASELINE — данная архитектура присутствует у контроллеров PIC10. От более мощной серии она отличается количеством выводов (от 6 до 28), дешевизной.

2. MID-RANGE — данную архитектуру имеют ядра микроконтроллеров PIC12/PIC16. Количество выводов в данной серии увеличено (от 6 до 64), стоят они несколько дороже, зато имеют помимо 35 машинных инструкций, поддерживаемых серией BASELINE, ещё 14 дополнительных инструкций (оптимизированных под компилятор языка C). Также у данной серии производительность увеличена на 50%, они имеют более глубокий и улучшенный аппаратный стек, увеличенный объём памяти и некоторые прочие прелести, с которыми мы познакомимся в дальнейшем, так как, скорее всего, мы с данной серии и начнём процесс изучения программирования микроконтроллеров PIC .

3. 8-битовые микроконтроллеры PIC18 — это улучшенная серия контроллеров, здесь на борту много другой периферии, количество выводов от 18 до 100, производительность 16 MIPS, поддержка технологии NanoWatt, наличие программироуемого генератора.

Вторая линейка — это 16-битные контроллеры PIC . Они имеют префикс PIC24F и PIC24H. Это уже более мощные контроллеры. В отличие от первой линейки, машинная команда выполняется уже не за 4 такта генератора, а за 2. Также периферия еще более расширена по разновидностям шин, прямой доступ к памяти DMA (у PIC24H), расширенный набор инструкций. Также есть очень много других особенностей.

Третья линейка — это 32-битные контроллеры. Префикс у них уже PIC32. Частота тактирования таких контроллеров до 120 МГц, а у новой серии MZ — до 200 и даже выше. У меня, например, есть отладочная плата, на которой устрановлен контроллер PIC32MZ2048EFH064, у которого тактовая частота составляет 252 мегагерца. Также здесь ещё более увеличена производительность ядра. Данное семейство построено на ядре MIPS32®, которое также кроме высокой производительности отличается ещё и низким потреблением энергии.

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

Также, как и рассмотренные, а также рассматриваемые нами контроллеры AVR и STM32, контроллеры PIC работают приблизительно по той же схеме. Сочиняется программа, собирается в машинный код, понятный арифметическо-логическому устройству контроллера, загружается (прошивается или заливается) в контроллер и затем обеспечивает работу по определённому алгоритму. Основной интерфейс, используемый для прошивки данных контроллеров — это ICSP , предназначенный для внутрисхемного программирования. Подробнее с ним мы познакомимся, когда будем прошивать данные контроллеры.

Давайте немного разберёмся с организацией памяти в контроллерах PIC. Так как мы начнём изучение семейства PIC с более простых 8-битных (принцип от простого — к сложному ведь не отменял никто), то и организацию памяти мы посмотрим у данной серии.

Сначала посомтрим блок-схему контроллера на примере МК PIC16F84A (нажмите на картинку для увеличения изображения)

В левом верхнем углу сразу бросается в глаза модуль памяти FLASH, в которой обычно хранится программа контроллера (прошивка). А в правом верхнем углу мы видим память EEPROM, которая уже исользуется для хранения данных. Эти два вида памяти являются энергонезависимыми и после отклчения и сброса контроллера не стираются. Но данная память не является быстрой, поэтому код при старте программы распределяется уже в память RAM (ОЗУ), которая уже является быстродействующей и предназначена для функционирования контроллера при работе. Поэтому данную память мы уже рассмотрим несколько поподробнее.

Оперативная память контроллера PIC делится на память программ и память данных.

Вот так организована память программ у контроллера PIC16F84A

Микроконтроллеры данной серии имеют счётчик команд, способный адресовать 8К x 14 слов памяти программ и 14-разрядную шину данных памяти программ. Вся память программ разделена на 4 страницы по 2 килослов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh). Ну это общая информация, поэтому у тех контроллеров, у которых память небольшая перемещение между данными страницами приведёт к циклической адресации. Поэтому размер памяти того контроллера, который мы хотим программировать, мы обязаны знать твёрдо. В общем случае память программ состоит из счётчика команд, стека нескольких уровней, память для хранения векторов прерываний, а также внутренней памяти программ.

Также немного познакомимся с организации оперативной памяти, отведённой под хранение данных.

Память данных разделяется на регистры общего назначения и регистры специального назначения. Посмотрим, как организована память данных контроллера PIC16F84A

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

Регистры общего назначения (GPR) — это ячейки памяти, которые имеют только адреса и предназначены они для хранения любых данных.

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

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

Соответственно, у каждого контроллера кроме памяти существует много чего ещё интересного, в том числе порты ввода-вывода. Наши контроллеры PIC — также не исключение. Посмотрим назначение ножек контроллера PIC16F84A

У данного контроллера два порта — порт A и порт B. Из порта A наружу выведены 5 ножек — RA0-RA4, а из порта B — все 8 ножек RB0-RB7.

Также ножки портов могут иметь и другое назначение в зависимости от того, как мы их сконфигурируем. Наример ножка 6 или RB0 может в любой момент превратиться в ножку для захвата внешних прерываний, а ножка 3 или RA4 — стать ножкой для тактирования таймера от внешнего генератора.

Тактирование МК PIC также может осуществляться как от внешнего генератора, так и от кварцевого резонатора, от внутреннего резистора, а также существует ещё несколько вариантов, которые поддерживают не все контроллеры данного семейства. На практике как правило используется тактирование от кварцевого резонатора. Скорее всего, мы также последуем данной традиции в наших дальнейших занятиях.

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

Смотреть ВИДЕОУРОК (нажмите на картинку)

Post Views: 9 304

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

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

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

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

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

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), которую можно заливать в контроллер.

  1. Часть 1. Необходимые инструменты и программы. Основы MPLAB
Недавно решил собрать устройство на микроконтроллере фирмы PIC, но по не известным причинам у меня отказал программатор Extra-PIC . Скорее всего, сгорела микросхема МАХ232 , такое уже было один раз. Недолго думая, нашел в Интернете простенькую схему программатора, заточенного под IC-Prog и работающую через СОМ порт.
Плату необходимо отзеркалить при печати. Иначе панельки придется паять со стороны дорожек.


Далее просверлил отверстия и начал паять детали. Самой большой проблемой были стабилитроны. Стабилитроны стал искать на плате от ЭЛТ-монитора. Подписаны на плате они как ZD (Zener Diode). Естественно маркировка у них непонятная и неизвестно где и как искать. Чтобы определить, на сколько вольт стабилитрон можно собрать простую схемку.


Вольтметр достаточно точно покажет, на сколько вольт стабилитрон. Таким нехитрым способом нашел приблизительные по номиналу стабилитроны. Вместо 5,6В установил 6,2В, вместо 12,6В поставил 2 стабилитрона последовательно 6,2+6,2=12,4В .


Транзистор можно поставить КТ315 . У себя поставил С945 . Диоды тоже любые, я выпаял все 3 шт. из диодного моста той-же платы от монитора. Номинал конденсаторов также не критичен, но их поставил по номиналу.

Немного про красные пятачкИ у панелек. Эти ноги вообще не паяются у панелек. Полностью готовый девайс выглядит так:


Панельки решил не все паять, т.к. мне нужно было прошить только PIC16F628А . После того как спаял нужно настроить программу. Прошивать мы будем IC-Prog. Скачиваем программу , распаковываем из архива, все файлы должны быть обязательно в одной папке!

1) Если вы пользуетесь Windows NT, 2000 или XP, то правой кнопкой щёлкните на файле icprog.exe. "Свойства " >> вкладка "Совместимость " >> Установите "галочку" на "Запустить программу в режиме совместимости с: " >>
выберите "Windows 2000".

2) Запускаем программу. Если она уже на русском - ничего не нужно, переходите к шагу 3 .

Если программа на английском, то жмите "Settings " >> "Options " >> вкладку "Language " >> установите язык "Russian " и нажмите "Ok".
Согласитесь с утверждением "You need to restart IC-Prog now " (нажмите "Ok "). Оболочка программатора перезапустится.

3) Теперь нужно настроить программатор. Кликайте "Настройки " >> "Программатор ". Проверьте установки, выберите используемый вами COM-порт, нажмите "Ok ".


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

4) Только для пользователей Windows NT, 2000 или XP. Нажмите "Настройки " >> "Опции " >> выберите вкладку "Общие " >> установите "галочку" на пункте "Вкл. NT/2000/XP драйвер " >> Нажмите "Ok " >> если драйвер до этого не был устновлен на вашей системе, в появившемся окне "Confirm " нажмите "Ok" . Драйвер установится, и оболочка программатора перезапустится.

5) Нажмите снова "Настройки " >> "Опции " >> выберите вкладку "I2C " >> установите "галочки" на пунктах: "Включить MCLR как VCC " и "Включить запись блоками ". Нажмите "Ok ".

6) "Настройки " >> "Опции " >> выберите вкладку "Программирование " >> снимите "галочку" с пункта: "Проверка после программирования " и установите "галочку" на пункте "Проверка при программировании ". Нажмите "Ok ".


Готово, теперь программа полностью готова к работе с программатором. Подключаем наш программатор к СОМ порту, выбираем наш микроконтроллер в программе, открываем прошивку и программируем любые МК серии PIC. Удачи всем в работе с программатором и контроллерами!

PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты.

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

Компания Microchip распространяет MPLAB - бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink - графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

Характеристики миниатюрного PIC контроллера PIC12F629
Интегрированная среда разработки MPLAB IDE
Подключение Matlab/Simulink к MPLAB
Подключение программатора PIC-KIT3

Характеристики миниатюрного PIC-контроллера

Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания .

Архитектура: RISC
Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
Потребление:
- <1,0 мА @ 5,5В, 4МГц
- 20 мкА (тип) @ 32 кГц, 2,0В
- <1,0 мкА (тип) в режиме SLEEP@2,0В
Рассеиваемая мощность: 0,8Вт
Многофункциональные каналы ввода/вывода: 6/5
Максимальный выходной ток портов GPIO: 125мА
Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
Разрядность контроллера: 8
Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
ОЗУ память данных: 64
EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
Аппаратные регистры специального назначения: 16
Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
Аппаратный стек: 8 уровней
Таймер/счетчик ТМR0: 8-разрядный с предделителем
Таймер/счетчик ТМR1: 16-разрядный с предделителем

Дополнительные особенности:
Сброс по включению питания (POR)
Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
Сброс по снижению напряжения питания (BOD)
Сторожевой таймер WDT
Мультиплексируемый вывод -MCLR
Система прерываний по изменению уровня сигнала на входах
Индивидуально программируемые для каждого входа подтягивающие резисторы
Программируемая защита входа
Режим пониженного энергопотребления SLEEP
Выбор режима работы тактового генератора
Внутрисхемное программирование ICSP с использованием двух выводов
Четыре пользовательские ID ячейки

Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.

КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.

Интегрированная среда разработки MPLAB IDE

MPLAB IDE - бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.

Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».

Создание проекта

Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги .

1. Вызов менеджера проекта.

2. Выбор типа PIC микроконтроллера.


3. Выбор компилятора, например, Microchip MPASM для ассемблера.


4. Выбор пути к каталогу проекта (клавиша Browse...) и ввод имени проекта.

5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.

6. Завершение создания проекта (клавиша Finish).

В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.


Рис. 1 . Интерфейс среды MPLAB v8.92 и шаблон проекта.

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

Создание программы в MPLAB можно выполнить в следующей последовательности.

1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.

2. Набрать или скопировать программу, например, на ассемблере.


Рис. 2 . Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.

Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.

Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).

Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.

Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (Рис. 2) используются следующие обозначения.

Директива LIST - назначение типа контроллера
Директива __CONFIG - установка значений битов конфигурации контроллера
Директива equ - присвоение числового значения
Директива org 0 - начало выполнения программы с адреса 0
Команда bsf - устанавливает бит указанного регистра в 1
Команда bсf - сбрасывает бит указанного регистра в 0
Команда movlw - записывает константу в регистр W
Команда movwf - копирует содержимое регистра W в указанный регистр
Команда goto - обеспечивает переход без условия на строку с меткой
Директива end - конец программы

Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.

Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:

Где:

Бит 2-0 - FOSC2:FOSC0. Выбор тактового генератора
111 - Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 - Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 - Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 - как CLKOUT
100 - Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 - EC генератор. GP4 работает как ввод/вывод. GP5 - как CLKIN
010 - HC генератор. Резонатор подключается к GP4 и GP5
001 - XT генератор. Резонатор подключается к GP4 и GP5
000 - LP генератор. Резонатор подключается к GP4 и GP5

Бит 3 - WDTE: настройка сторожевого таймера (Watchdog Timer)
1 - WDTE включен
0 - WDTE выключен

Сторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.

Бит 4 - PWRTE: Разрешение работы таймера включения питания:
1 - PWRT выключен
0 - PWRT включен

Таймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.

Бит 5 - MCLR: Выбор режима работы вывода GP3/-MCLR
1 - работает как -MCLR
0 - работает как порт ввода-вывода GP3

Бит 6 - BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 - разрешен сброс BOR
0 - запрещен сброс BOR автоматически включается таймер

При разрешении сброса BOR автоматически включается таймер PWRT

Бит 7 - .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включена

При выключения защиты вся память программ стирается

Бит 8 - .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включена

После выключения защиты вся информация будет стерта

Бит 11-9 - Не используются: Читается как ‘1’.

Бит 13-12 - BG1:BG0. Биты калибровки сброса по снижению питания
00 - нижний предел калибровки
11 - верхний предел калибровки


Добавление программы к проекту

Пример добавления программы к проекту показан на (Рис. 3).


Рис. 3 . Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp

Компиляция

Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:

Отладка программы

Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.


Рис. 4 . Подключение к симулятору MPLAB SIM для отладки программы.

После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.


Рис. 5 . Команды отладчика.

Команды отладчика:

Run - Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
Halt - Остановка программы на текущем шаге выполнения.
Animate - Анимация непрерывного выполнения программы.
Step Into - Выполнение по шагам (вызовы Call выполняются за один шаг).
Step Over - Выполнение по шагам включая команды вызовов Call.
Reset - Начальная установка программы. Переход указателя на первую команду.
Breakpoints - Отображение списка точек останова. Обработка списка.

При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.


Рис. 6 . Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).

В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.

Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.

Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются - находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).

Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.


Рис. 7 . Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.

Прошивка микроконтроллера

Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».

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

Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.


Рис. 8 . Выбор программатора для подключения к среде MPLAB.

Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.


Рис. 9 . Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.

Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.

Подключение MATLAB/SIMULINK к MPLAB

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

Пример Simulink программы PIC контроллера показан на Рис. 10.


Рис. 10 . Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.

Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 .


Рис. 11 . Структура средств построения адекватной модели PIC контроллера на языке графического программирования.

Для построения среды разработки необходимы следующие компоненты Matlab:

Simulink
Real-Time Workshop Embedded Coder
Real-Time Workshop

И Cи компилятор компании Microchip:

C30 для контроллеров PIC24, dsPIC30 и PIC33
или C32 для контроллеров серии PIC32

Установка компонентов Matlab

На сайте имеются 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 необходимо :

Скачать dsPIC Toolbox для требуемой версии Matlab.
Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
Запустить Matlab.
Настроить текущий каталог Matlab на папку с распакованным файлом.
Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.

Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).


Рис. 12 . Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.


Рис. 13 . Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:

>>

Установка Си компилятора MPLAB

Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.


Рис. 14 . Версии Си компилятора (слева) и режимы его установки (справа).

Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.

Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:


Рис. 15 . Каталоги компилятора C30 MPLAB.

Последовательность Simulink программирования для PIC контроллеров

1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB - каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path("c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\",path)
Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:

>>rmpath(" c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\")
4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.


Рис. 16 . Выбор типа контроллера в блоке Master модели.

5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters . В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.


Рис. 17 . Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.


Рис. 18 . Запуск компилятора Simulink модели.

В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).


Рис. 19 . Результаты компиляции модели.

Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:


Управление компиляцией Simulink моделей из среды MPLAB

Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.


4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

Со скриптами модели на языке Си.

6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).


Рис. 20 . Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

Подключение программатора PIC-KIT3

Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).


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

Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).


Рис. 22 . Информация об установленном драйвере программатора PIC-KIT3.

Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.


Рис. 23 . Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К .


Рис. 24 . Выводы PGM PIC контроллеров.

Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

Желтый - Красный - Состояние программатора
Вкл - Выкл - Подключен к USB линии
Вкл - Вкл - Взаимодействие с MPLAB
Мигает - Включен постоянно - Прошивка микроконтроллера

Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use


Рис. 25 . Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.

Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора - считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.


Рис. 26 . Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.


Рис. 27 . Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

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


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

Заключение

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

    Когда делаются схемы, необходимо, чтобы кто-то или что-то контролировало выполнение необходимых действий. Для человека это довольно проблематично, так как приходится использовать значительное количество различных элементов, позволяющих контролировать их работу (транзисторы, резисторы, тиристоры, диоды, конденсаторы и прочие). Но все сложные и большие схемы можно контролировать с помощью контроллеров (микроконтроллеров). Что они собой представляют, будет рассказано на примере семейств РІС. Итак, для чайников? Какая их схема и где они используются.

    Что собой представляет PIC-микроконтроллер

    PIC-контроллер (или микроконтроллер) является средством автоматизации выполнения определённых действий с помощью заранее подготовленной программы. Особенностью представителей этой линейки продукции является легкость в программировании и доступность всех необходимых функций для работы. Обрисовывая его конструкцию, следует заметить, что в его составе присутствует только один кристалл кремния (это характерная особенность всех микроконтроллеров). Кроме него, PIC-контроллер имеет определённое количество ножек. Часть из них могут использоваться как логические входы, часть как выходы, остальные имеют двустороннее применение. Ножки могут быть или цифровыми, или аналоговыми.

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

    Семейства контроллеров

    PIC-контроллер не существует в единичном экземпляре. Компания производитель выпускает значительный ассортимент микроконтроллеров, каждый из которых имеет свои характеристики, возможности и потенциальные цели применения. Количество самих семейств довольно велико и зависит от классифицирующего признака, который берётся как основной. Поэтому стоит сообщить только об основной классификации, в которой есть всего три семейства: 8-, 16- и 32-битные. Они в свою очередь делятся на другие, но поскольку сами семейства не являются темой статьи, то о них и не будет вестись разговор.

    Где применяется

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

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

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

    Минимальное необходимое программное обеспечение - это блокнот. Но всё же в силу свободного распространения можно воспользоваться и предлагаемым от компании-производителя программным средством MPLAB. Точнее, линейкой программных средств (среды разработки, компиляторы) MPLAB. Благодаря политике компании он распространяется бесплатно, но имеет определённые ограничения. Так, при краткосрочной демонстрационной версии можно попробовать со всеми возможностями, но после её окончания функционал программы будет урезан. В полноценной программе присутствует значительный инструментарий, который позволяет легко создавать программы, удобно искать различные проблемные участки и проводить оптимизацию кода. В зависимости от версии может быть прекращена функция оптимизации кода или уменьшено количество контроллеров, поддерживаемых программой. Ради правды стоит сказать, что компания оставляет поддержку исключительно самым популярным представителям.

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

    Создание программы для PIC-контроллера

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

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

    Программирование с помощью программатора

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

    Виды программаторов

    Какой программатор выбрать для записи программы на микроконтроллер? Условно можно выделить три вида: самодельные, от компании-производителя и заводские от других компаний. Использование каждого из них имеет свои особенности.

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

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

    Но останавливает от его приобретения довольно высокая цена.

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

    Схематические особенности

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