Начало работы с микроконтроллерами PIC: руководство для начинающих


В 1980 году компания Intel разработала первый микроконтроллер (8051) с гарвардской архитектурой 8051, и с тех пор микроконтроллеры произвели настоящую революцию в электронике. И в настоящее время мы располагаем целым набором эффективных и сравнительно дешевых микроконтроллеров: AVR, PIC, ARM и др. Данные микроконтроллеры просты в освоении и поддерживают широкий набор современных интерфейсов связи: USB, I2C, SPI, CAN и т.д. Отдельную микро революцию в этой сфере произвели такие платы как Arduino и Raspberry Pi, при этом Raspberry Pi представляет собой не просто микроконтроллер, а целый компьютер внутри.

Данным материалом мы начнем на нашем сайте цикл обучающих статей по микроконтроллерам PIC, которые являются отличным выбором для начинающих освоение микроконтроллерной техники.

Внешний вид компонентов, необходимых для начала работы с микроконтроллерами PIC

В этой статье мы рассмотрим общее устройство микроконтроллеров PIC и программное обеспечение, с помощью которого можно работать с данными микроконтроллерами. Видео в конце данной статьи расскажет вам об установке и настройке таких программ как MPLABX, XC8, Proteus. Также будет рассмотрена быстрая распаковка программатора PICkit 3.

Архитектура микроконтроллеров PIC

Микроконтроллер PIC впервые был представлен компанией Microchip Technologies в 1993 году. Первоначально эти микроконтроллеры были разработаны как часть компьютеров PDP (Programmed Data Processor), и все периферийные устройства подключались к данному компьютеру с использованием данного микроконтроллера PIC. Отсюда микроконтроллеры PIC и получили свое название – Peripheral Interface Controller (контроллер периферийного интерфейса). Позже компания Microchip разработала множество микросхем серии PIC, которые могут быть использованы для практически любых небольших приложений, таких, к примеру, как освещение, и вплоть до достаточно "продвинутых" устройств.

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

Микроконтроллер PIC16F877A состоит из встроенного процессора, портов ввода-вывода, нескольких типов памяти, аналого-цифрового преобразователя (АЦП), таймеров/счетчиков, системы прерываний, портов последовательной связи, генератора и модуля CCP, что делает его удобным для применения в большинстве проектов встраиваемой электроники. Структурная схема архитектуры микроконтроллера PIC приведена на следующем рисунке.

Архитектура микроконтроллеров PIC

Центральный процессор (Central Processing Unit, CPU)

Центральный процессор в микроконтроллерах PIC предназначен для выполнения арифметических и логических операций и операций чтения/записи в память. Также он выполняет функции координатора между оперативной памятью (RAM) и другими периферийными устройствами микроконтроллера.

Центральный процессор состоит из следующих основных компонентов:

  • арифметико-логическое устройство (АЛУ), выполняющее арифметические и логические операции;
  • блок памяти (Memory unit, MU), хранит инструкции (команды) после их выполнения;
  • блок управления, выполняет роль коммуникационной шины между центральным процессором и другими периферийными устройствами микроконтроллера.

Оперативное запоминающее устройство (Random Access Memory, RAM)

Оперативное запоминающее устройство (ОЗУ) – это один из компонентов, который оказывает существенное влияние на скорость работы микроконтроллера. Оно состоит из набора регистров, каждый из которых выполняет свои определенные функции. Данные регистры могут быть классифицированы по двум основным признакам:

  • регистры общего назначения (General Purpose Register, GPR);
  • специальные регистры (Special Function Register, SFR).

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

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

Виды памяти в микроконтроллерах PIC

Постоянное запоминающее устройство (Read Only Memory, ROM)

Постоянное запоминающее устройство (ПЗУ) – это место, в котором хранится наша программа. Оно определяет максимальный размер нашей программы, по этой причине его также называют памятью программ (program memory). Для записи ПЗУ доступно только во время программирования микроконтроллера PIC, во время выполнения программы оно представляет собой память, доступную только для чтения (read only memory).

Электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ, EEPROM)

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

Флэш память (Flash Memory)

Флэш память представляет собой еще один вид программируемой памяти, доступной только для чтения (Programmable Read Only Memory, PROM), в которую мы можем записывать, считывать и стирать программу тысячу раз.

Порты ввода/вывода

В микроконтроллере PIC16F877A есть пять портов: Port A, Port B, Port C, Port D и Port E. Из этих пяти портов только Port A является 16-битным, а PORT E – 3-битным. Остальные 3 порта являются 8-битными.

Контакты данных портов могут использоваться для ввода и вывода данных, в зависимости от конфигурации регистра TRIS. Кроме функций ввода/вывода контакты портов могут выполнять специальные функции: формирование ШИМ сигнала, обработка прерываний, связь по интерфейсу SPI и др.

Шина

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

Адресная шина используется для передачи адреса памяти от периферийных устройств к центральному процессору. Контакты ввода/вывода (I/O pins) используются для подключения внешних периферийных устройств. Протоколы последовательной связи UART и USART используются для подключения таких устройств как модули GSM, GPS, Bluetooth, инфракрасной связи и др.

Различие в функциях адресной шины и шины данных

Выбор микроконтроллера PIC для наших проектов

Микроконтроллеры PIC от компании Microchip подразделяются на 4 больших семейства. Каждое семейство отличается своим набором компонентов и характеристик.

  1. Первое семейство, PIC10 (10FXXX) – называется Low End.
  2. Второе семейство, PIC12 (PIC12FXXX) – называется Mid-Range.
  3. Третье семейство – это PIC16 (16FXXX).
  4. Четвертое семейство – это PIC 17/18(18FXXX).

Поскольку в дальнейшем мы на нашем сайте будем рассматривать достаточно много проектов на основе микроконтроллеров PIC, то для этих проектов мы решили выбрать достаточно универсальный микроконтроллер, относящийся к семейству 16F – это микроконтроллер PIC16F877A. Он способен работать с такими популярными сейчас интерфейсами как SPI, I2C и UART.

После того как вы выбрали микроконтроллер, первым делом необходимо изучить даташит на него. Из данного даташита можно узнать что микроконтроллер PIC16F877A содержит 3 таймера, два из которых являются 8-битными, а третий – с 16-битным предделителем. Данные таймеры также могут использоваться в качестве счетчиков. Также из даташита можно узнать, что микроконтроллер поддерживает CCP опции (Capture Compare и PWM), которые позволяют ему формировать сигналы ШИМ (широтно-импульсной модуляции) и считывать частоту входных сигналов. Для связи с внешними устройствами он обладает интерфейсами SPI, I2C, PSP и USART.

Микроконтроллер PIC16F877A содержит 8-канальный 10-битный АЦП (аналого-цифровой преобразователь), который позволяет производить преобразование аналоговых значений в цифровые с разрешением 10 бит. Это преобразование можно осуществлять на 8 контактах микроконтроллера. Также в составе микроконтроллера есть два встроенных компаратора, которые позволяют непосредственным образом сравнивать значения поступающих напряжений, без считывания их программным способом.

Память программ микроконтроллера поддерживает до 100 тысяч циклов перезаписи, что позволяет его перепрограммировать 100 тысяч раз. Разъем ICSP™ (In-Circuit Serial Programming™) позволяет нам программировать микроконтроллер с помощью PICKIT3. Отладку работы программы можно производить через разъем ICD (In-Circuit Debug). Также в составе микроконтроллера есть и сторожевой таймер (Watchdog Timer, WDT), который позволяет, при необходимости, производить сброс работы программы.

На следующем рисунке представлена распиновка микроконтроллера PIC16F877A, на которой вы можете увидеть все специальные функции, которые могут выполнять определенные контакты микроконтроллера.

Распиновка микроконтроллера PIC16F877A

Выбор программного обеспечения для наших проектов

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

Для программирования микроконтроллеров PIC нам понадобится интегрированная среда разработки (Integrated Development Environment, IDE), в которой мы непосредственно будем писать программы. Также нам будет необходим компилятор, который преобразовывать нашу программу в HEX файл – формат, который понимает наш микроконтроллер. И, наконец, нам понадобится интегрированная среда программирования (Integrated Programming Environment, IPE), которая будет записывать наш HEX файл в микроконтроллер. В качестве всех этих инструментов мы выберем следующие:

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

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

Подготовка аппаратного обеспечения

Для загрузки кода программы в микроконтроллер PIC мы будем использовать программатор PICkit 3, купить который на Aliexpress можно по следующей ссылке. Данный программатор прост в освоении, относительно дешево стоит и управляется с помощью программы MPLAB IDE (версии v8.20 или выше), установленный на компьютер с Windows. Кроме данного программатора нам также понадобится перфорированная или макетная плата, паяльная станция, непосредственно сам микроконтроллер, кварцевые генераторы, конденсаторы и т.д.

Внешний вид программатора PICkit 3

Видео

(Проголосуй первым!)
Загрузка...
2 871 просмотров

Комментарии

Начало работы с микроконтроллерами PIC: руководство для начинающих — 6 комментариев

  1. Всё понятно, только вот ссылки на оф.сайт не работают - Access Denied по известным причинам. IDE нашелся, а вот XC8 нет..
    Не поделится ли кто работающей ссылкой на компилятор?

    • Да, они не работают из-за санкций, доступ с российских IP адресов к ним заблокирован, к сожалению. Можно попробовать обойти блокировку через VPN или иностранные прокси-серверы. А XC8 разве не удалось больше нигде в сети найти?

  2. Отличный курс. Спасибо. Как раз вернулся к Пикам после долгого "простоя", буду вспоминать.

    • А что побудило вернуться именно к Пикам, а не к другим микроконтроллерам, если не секрет?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *