На современном рынке есть ряд семейств и серий микроконтроллеров от разных производителей, среди них можно выделить AVR, STM32 и PIC. Каждое из семейств нашло свою сферу применения. В этой статье я расскажу начинающим о микроконтроллерах PIC, а именно, что это такое и что нужно знать для начала работы с ними.
Что такое PIC
PIC – это название серии микроконтроллеров, которые производятся компанией Microchip Technology Inc (США). Название PIC происходит от Peripheral Interface Controller.
Микроконтроллеры PIC имеют RISC-архитектуру. RISC – сокращённый набор команд, используется также в процессорах для мобильных устройств. Есть целый ряд примеров её использования: ARM , Atmel AVR и другие.
Компания Microchip в 2016 году купила Atmel – производителя контроллеров AVR. Поэтому на официальном сайте представлены микроконтроллеры семейства и PIC и AVR.
Семейства
Среди 8-битных микроконтроллеров PIC она состоит из 3-х семейств, которые отличаются архитектурой (разрядностью и набором команд).
Baseline (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx) ;
Mid-range (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx) ;
Enhanced Mid-range (PIC12F1xxx, PIC16F1xxx) ;
High-end или PIC18 (18Fxxxx, 18FxxJxx and 18FxxKxx).
Характеристики, которых приведены в таблице ниже.
Кроме 8 битных микроконтроллеров компания Microchip производит 16-битные:
PIC24F;
DsPIC30/33F для обработки сигналов.
Представители 16-битного семейства работают со скоростью от 16 до 100 MIPS (выполнено миллионов инструкций в секунду). Стоит отметить и особенности:
машинный цикл – 2 такта;
разрядность АЦП – 16 бит;
поддерживают ряд протоколов связи (UART, IrDA, SPI, I2S™, I2C, USB, CAN, LIN and SENT), ШИМ и прочее.
Также есть семейство 32 битных микроконтроллеров – PIC32MX, основные особенности:
работают на частоте до 120 мГц;
выполняют до 150 MIPS;
АЦП: 10-бит, 1 Msps (скорость квантования), до 48 каналов.
С какого PIC начать?
Новичкам стоит начать осваивать микроконтроллеры PIC с 8-битной линейки. Вообще, производитель заявляет о том, что особенностью всего семейства является лёгкая переносимость программ с одного семейства на другое и совпадения цоколевки ряда моделей.
Одним из популярнейших в среде радиолюбителей микроконтроллеров является PIC16f628A. Его технические характеристики такие:
Есть встроенный тактовый генератор. Вы можете настроить для работы с частотой 4 или 8 МГц;
18 пинов, из них 16 – ввод/вывод, а 2 – питание;
Для работы на частотах до 20 МГц можно подключить кварцевый резонатор, но в этом случае на ввод/вывод останется не 16, а 14 ног;
В маркировке есть буква F, это значит, что используется FLASH-память, объёмом в 2048 слов;
14-битные инструкции, 35 штук;
2 компаратора;
4 аналоговых входа;
На входах PORTB есть подтягивающие резисторы;
Два 8-битных таймера и один 16-битный;
Машинный цикл – 4 такта кварцевого резонатора или внутреннего генератора);
224 байта ОЗУ;
128 байт EEPROM;
USART – последовательный порт;
внутренний источник опорного напряжения;
питается от 3.3 до 5 В.
Причинами популярности является низкая цена и возможность тактирования от внутреннего генератора.
Какая цоколевка у 16f628 изображено ниже:
Блочная внутренняя схема этого микроконтроллера изображена ниже.
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
На что следует обратить внимание на схеме в первую очередь?
У этого микроконтроллера есть два порта PORTA и PORTB. Каждый пин, каждого из них может использоваться как вход и выход, а также для подключения периферии или задействования других модулей микроконтроллера.
Рассмотрим эту часть схемы крупно.
Например, порты RB0-RB3 – могут выступать в роли аналоговых. К RA6, RA7 в случае необходимости подключается источник тактирования ( кварцевый резонатор ). Сами же выводы микроконтроллера настраиваются в режим входа/выхода с помощью регистра TRIS.
Для этого есть команды типа:
TRISA = 0; // Все выводы порта А устанавливаются как выходы
TRISB = 0xff; // Все выводы порта B назначаются как входы
TRISA0 = 1; // Так назначается отдельный пин как вход (1) или выход (0)
TRISA5 = 1 ; // здесь 5 вывод порта А – назначен входом
Вообще режимы работы, включение WDT (сторожевого таймера) выбор источника тактирования микроконтроллера и прочее настраивается с помощью регистров специального назначения — SFR, а память и данные хранятся в GFR – простыми словами это статическое ОЗУ.
В официальном Datasheet, на страницах 18-21 вы найдете 4 банка памяти регистров специального назначения SFR и регистров общего назначения GFR. Знание регистров важно, поэтому распечатайте и выучите указанные страницы из Datasheet .
Для удобства ниже приведены эти таблицы в виде картинок (нумерация регистров, как и всё в цифровой электронике начинается с 0, поэтому номер четвертого – 3).
Как подключить и на каком языке программировать?
Чтобы запустить этот микроконтроллер достаточно подать плюс на Vdd и минус на Vss. Если нужен кварцевый резонатор, то он подключается к выводам 16 и 15 (OSC1 и OSC2) микроконтроллера PIC16f628, для других контроллеров с большим или меньшим числом выводов – смотрите в datasheet . Но этот момент нужно указывать при программировании и прошивке.
Кстати о переносимости и совпадении цоколевки – на 16f84A – она аналогична, и на многих других.
Фрагмент схемы с подключенным к pic16f628a внешним резонатором:
Есть два основных языка для программирования микроконтроллеров PIC – это assembler и C, есть и другие, например PICBasic и т.д. Еще можно выделить упрощенный язык программирования JAL (just another language).
Для примера ниже приведена программа для «мигания светодиодом» — своего рода «Hello World» для микроконтроллера PIC на языке C.
В 1 строке подключается библиотека микроконтроллеров PIC, далее подключается библиотека программы задержки.
В функции main(void) в начале устанавливаются начальные параметры, подобно тому как мы это делали в функции Void setup () – в статьях об ардуино . Далее в строках 11-16 объявляется бесконечный цикл while(1), в ходе которого и выполняется программа «мигания светодиодом».
В примере состояние порта постоянно инвертируется, т.е. если он был в «0», то перейдет в «1» и наоборот. На C для PIC есть следующие команды управления команды:
PORTA = 0; // переводит все пины порта А в низкий уровень (лог. 0)
PORTB = 0xff; // переводит все пины порта B в высокий уровень (лог. 1)
RB5 = 1; // На пятом выводе порта B высокий уровень
А так выглядит та же программа, но уже на языке JAL, я перевел на русский язык комментарии от разработчиков встроенных примеров в JALedit (среда разработки).
Возникает соблазн выбрать JAL, и вам он может показаться проще. Безусловно на нём можно реализовать любые проекты, но с точки зрения пользы для вас как для специалиста – это бесполезный язык. Значительно больших результатов вы добьетесь, изучая синтаксис и принципы программирования на языке C (большая часть популярных сейчас языков C-подобны) или на Assembler – это низкоуровневый язык, который заставит вас понимать принцип работы устройства и что происходит в программе в каждый конкретный момент времени.
В чем работать
Если сказать совсем обобщенно для работы с любыми микроконтроллерами нужно:
1. Текстовый редактор.
2. Компилятор.
3. Программа для загрузки прошивки в микроконтроллер.
И я даже читал старые учебники, где автор, работая из-под DOS писал код, компилировал и прошивал его разными средствами. Сейчас же под все популярные операционные системы есть среды для разработки, как узкоспециализированные (для конкретного семейства микроконтроллеров или семейств от одного производителя) так и универсальные (либо содержат все необходимые инструменты, либо они подключаются в виде плагинов).
Например, в цикле статей об Arduino мы рассматривали среду Arduino IDE в ней же мы и код писали и с её помощью «заливали» прошивку в «камень». Для микроконтроллеров PIC есть такие программы, как:
MPASM — используется для разработки на языке Assembler от фирмы Microchip ;
MPLAB — также IDE от Microchip для PIC-контроллеров. Состоит из множества блоков для тестирования, проверки, работы с кодом и компиляции программ и загрузки в микроконтроллер. Также есть версия MPLAB X IDE – отличается большим функционалом и построена на базе платформы NetBeans ;
MikroC — универсальная среда (не только для ПИКов) для разработки. Как видно из названия «заточена» под программирование на C, а также есть такие программы как MikroBasic и MikroPascal, для соответствующих языков ;
JALedit — подходит для языка JAL, о котором мы упоминали выше ;
И ряд других менее известных.
Как прошивать микроконтроллер?
Для PIC-микронотроллеров есть ряд программаторов. Официальным считается PICkit. Их 4 версии. Но можно прошивать и универсальными, например, TL866 (он поддерживает почти всё, что может понадобится начинающему радиолюбителю, при этом очень дешевый).
Также в сети есть ряд различных схем программаторов для ПИКов, как для работы через COM-порт:
Так и через USB (на самом деле тоже com, только через преобразователь на ИМС MAX232).
Заключение
Микроконтроллеры PIC16 подходят для простых проектов, типа простой автоматики, вольтметров, термометров и прочих мелочей. Но это не значит, что нельзя делать на этом семействе сложные и большие проекты, я привел пример того для чего чаще всего их используют. Для общего представления рекомендую посмотреть несколько видео:
В одной статье рассматривать темы о том, как программировать микроконтроллеры, неважно какого семейства, безсмысленно. Поскольку это очень большой объём информации. Для начинающих советую к прочтению:
Катцен С. — PIC-микроконтроллеры. Все что вам необходимо знать;
Кёниг А. — Полное руководство по PIC микроконтроллерам;
Шпак Ю.А. — Программирование на языке С для AVR и PIC микроконтроллеров;
Магда Ю.С. — Микроконтроллеры PIC: архитектура и программирование;
Яценков В.С. — Микроконтроллеры Microchip. Практическое руководство.
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.