Компания microchip представила новое семейство 8-битных микроконтроллеров pic16(l)f161x

Микроконтроллеры PIC. Вводная.

Что-то никто не хочет написать про микроконтроллеры фирмы Microchip, вот и решил я запилить статейку — может кому пригодится.

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

В номенклатуре Microchip Technology Inc. представлен широкий спектр 8-и, 16-и и 32-битных микроконтроллеров и цифровых сигнальных контроллеров под маркой PIC. Номенклатура насчитывает более 500 различных контроллеров со всевозможными вариациями периферии, памяти, количеством выводов, производительностью, диапазонами питания и температуры…

Оставив на будущее самостоятельное изучение 16/32-х битные и DS микроконтроллеры (МК) посмотрим поближе 8-ми битную линейку, которая, в свою очередь, состоит из 3-х семейств с различающейся архитектурой:

  • базового — Baseline, инструкции 12-ти битные, 35 команд;
  • среднего — Mid-Range и Enhanced Mid-Range, инструкции 14-ти битные, 35/49 команд;
  • старшего — PIC18, инструкции 16-ти битные, 83 команды.

Наглядно они представлены на нагло стыжженой картинке с их сайта. Там же имеется сводная табличка по основным характеристикам.

Так уж случилось, что наиболее популярными и часто встречающимися в любительских разработках МК являются PIC16x84(A) и PIC16x628, относящиеся к семейству Mid-Range, поэтому считаю их лучшими кандидатами для рассмотрения. К тому же 16F84 — единственное что есть у меня из PIC’ов.
Информация для сравнения легко находится на всё том же офф. сайте, а подробности, как всегда, в технической документации типа datasheet (ДШ).
Отдельно стоит упомянуть, что тип памяти программ может быть различным и определяется буквами в наименовании:

  • С — EPROM;
  • CR — ROM;
  • F — FLASH.

Подходящим вариантом для издевательств(конечно если вы не собираетесь пускать изделие в серию) я считаю флеш память, которая, кстати выдерживает до 1000 циклов стирания/записи (по ДШ, в реальности возможно и больше).

Так, с тем, что же будем изучать — разобрались. Дальше проще. Основные характеристики семейства:
RISC-ядро, гарвардская архитектура

  • тактовая частота до 20 МГц;
  • количество команд (инструкций) — 35;
  • все команды выполняются за один машинный цикл (4 такта), кроме команд ветвления;
  • адресуемая память команд — 8К слов (слово = 14 бит);
  • оперативная память — до 368 байт;
  • прямая, косвенная и относительная адресация для данных и инструкций;
  • аппаратный стек на 8 уровней;
  • поддержка прерываний.


Специальные возможности микроконтроллера смотрим в ДШ, обычно это варианты тактирования, программирования, виды подтяжек, наличие всяких собак, энергосбережений, защит кода и сбросов по появлению/падению питания, в общем всяческие «фичи». Там же смотрим сколько у нас памяти и какая есть периферия. Например, для PIC16F84 имеем:

  • Память программ — 1K слов FLASH;
  • Память данных ОЗУ — 68 байт;
  • Память данных ЭСППЗУ — 64 байт;
  • 13 линий ввода/вывода с индивидуальным контролем направления
  • Сильноточные схемы для непосредственного управления светодиодными индикаторами (макс. ток 25/20мА)
  • Timer0: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем

Не густо, правда? Вот 628-й уже поинтереснее, посмотрите сами что в нём есть (типа домашнее задание, чтоб не скучали). Сказ о периферии нужно писать отдельно, в одну статью точно всё не влезет, так что пока могу лишь отослать. Куда? Да всё туда же — ДШ вам в руки.

А теперь подробнее о ядре семейства, смотрим схему и пытаемся понять что тут за что отвечает:

Тактовый генератор вырабатывает все необходимые сигналы для синхронизации процессов, происходящих в МК. Исполнение команды, находящейся в регистре инструкций, происходит за 4 такта генератора:

  • Q1: декодирование очередной инструкции;
  • Q2: чтение данных (при необходимости);
  • Q3: обработка данных;
  • Q4: запись данных (при необходимости).

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

Вычисления в МК производятся арифметико-логическим устройством (АЛУ), которое, в свою очередь при работе взаимодействует с регистрами. Основной регистр, используемый в вычислениях называется аккумулятором или рабочим регистром, обозначается W и не отображается на адресное пространство. Остальные регистры образуют память данных и делятся на 2 группы:

  • регистры специального назначения (SFR) — используются для управления ядром и периферией;
  • регистры общего назначения (GPR) — по сути просто оперативная память, доступная программисту.

Вот и подошли вплотную к организации памяти. Смотрим карту памяти, и…

… о, ужас! Вся оперативная память, называемая тут, как мы уже знаем, регистрами, оказывается разделена на блоки по 128 байт, называемые банками, между которыми как-то надо ещё и переключаться. Мало того, не только оперативка, но и регистры конфигурации (это которые SFR) также разбросаны по банкам. Беспредел полнейший! Но что поделаешь… Смотрим дальше и видим, что некоторые SFR всё-же дублируются (есть в нескольких или во всех банках). Сопоставляя вышесказанное можно предположить, что они относятся к настройкам ядра. Проверяем по ДШ:

  • STATUS — содержит флаги состояния АЛУ, флаги причины сброса, биты переключения банков памяти.

[7] IRP — бит выбора банка при косвенной адресации 0 — 0,1 (0x000-0x0FF); 1 — 2,3 (0x100-0x1FF);
[6-5] RP1:RP0 — биты выбора банка при непосредственной адресации;
[4] -TO — флаг переполнения сторожевого таймера
[3] -PD — флаг включения питания
[2] Z — флаг нулевого результата
[1] DC — флаг десятичного переноса/заёма
[0] C — флаг переноса/заёма

Ага, то что надо нашлось. Что ещё есть?
Обратиться к любому регистру можно используя прямую или косвенную адресацию, помним? Во втором случае используются 2 специальных регистра:

  • FSR — указатель адреса в памяти данных, используемый при косвенной адресации;
  • INDF — регистр, через который осуществляется обращение к памяти при косвенной адресации;

Счётчик команд:

  • PCL — младшая часть 13-ти битного счётчика команд PC;
  • PCLATH — буферный регистр для загрузки PCH (старшей части счётика)

Оппа! Старший, младший… что-то кажется такое уже было? Лезем подтверждать свои догадки — ага, всё правильно, и у программной памяти тоже хитрая разбивка — на 4 страницы по 2К слов:

Для адресации 2К необходимо 11 бит, из них младшие 8 доступны как PCL, а старшие 3, вместе с двумя битами номера страницы образуют PCH, недоступный напрямую, однако он изменяется автоматически при модификациях PCL:

  • при записи в регистр PCL — PCH целиком загружается из PCLATH;
  • при выполнении команды перехода — из PCLATH загружается только номер страницы, остальное из опкода;
  • при возврате по стеку — PCH и PCL загружаются из стека.

Стек служит для запоминания адресов возврата при вызове подпрограмм или прерываний и последующего возвращения по сохранённому адресу, имеет разрядность 14 бит (сохраняет весь PC) и ограничен глубиной в 8 уровней, что необходимо учитывать при активном использовании вложенных подпрограмм.

Вот и всё касательно ядра. Остальное считается периферией, основные модули, присутствующие во всех МК это порты ввода/вывода, прерывания и таймеры, но это уже совсем другая тема.

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

Без внимания остались также вопросы системы команд, программирования, прошивки, отладки, мигания светодиодом, etc…

Ссылки:
www.microchip.com
microchip.com.ru
www.microchip.ru
Активно пользовал «справочник по среднему семейству микроконтроллеров PIC-micro» — перевод оригинальной технической документации DS33023A с microchip.ru, а также даташиты (в оригинале).

з.ы. опыт работы с пиками — один раз зашил готовую прошивку. в эмулях когда-то ковырялся, а тут пару дней ДШ читал, да вам писал. Первая моя статья, так что любая критика приветствуется. Знаю, что тут обитают те, кто работал с этими МК, не стесняйтесь дополнять, поправлять, я мог что-то упустить или в чём-то ошибиться.
Если интересно, то в свободное время попробую написать продолжение, дальше по сути нужно писать про софт, программатор, систему команд и периферию, в таком порядке.
Всем дочитавшим до конца — спасибо!

Микроконтроллеры PIC для начинающих

На современном рынке есть ряд семейств и серий микроконтроллеров от разных производителей, среди них можно выделить 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-битные:

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 штук;

4 аналоговых входа;

На входах PORTB есть подтягивающие резисторы;

Два 8-битных таймера и один 16-битный;

Машинный цикл – 4 такта кварцевого резонатора или внутреннего генератора);

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. Текстовый редактор.

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. Практическое руководство.

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Изучить C, механизмы отладки и программирования микроконтроллеров;

Получить опыт работы с реальными проектами, в команде и самостоятельно;

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

Starter box для первых экспериментов в подарок!

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

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

Читайте также  Практические схемы включения интегральных усилителей низкой частоты

Microchip announces PIC16(L)F161X microcontroller

November 20, 2014 — Microchip Technology announced PIC16(L)F161X PIC 8-bit PIC microcontroller (MCU) that support Microchip’s Core Independent Peripherals (CIP). These peripherals are designed to reduce system complexity by eliminating the need for additional code and external components. Hardware-based peripherals offload timing-critical and core-intensive functions from the CPU, allowing it to focus on other critical tasks within the system. The PIC16(L)F161X PIC MCUs offer the Math Accelerator (Math ACC) with Proportional Integral Derivative (PID), offering completely core independent calculations, with the capability to perform 16-bit math and PID operations. The family also includes the Angular Timer (AngTmr), which is a hardware module that calculates the rotational angel in functions, such as motor control, TRIAC control, or Capacitive Discharge Ignition (CDI) systems. Regardless of speed, the AngTmr allows recurring interrupts at a specific rotational or sinusoidal angle without using the core’s computation. The CIPs can be configured to perform a host of given functions that increase execution speeds and decrease software requirements. Offloading these functions frees up the CPU to do other tasks, consumes less program memory, and reduces the overall power consumption of the MCU. In addition to the MATH ACC and AngTmr, the PIC16(L)F161X features several other peripherals designed to ease implementation and add flexibility of various functions. The 24-bit Signal Measurement Timer (SMT) performs high-resolution measurements of digital signal, in hardware, resulting in more precise and accurate measurements. This is ideal for speed control, range finding and RPM indicators. This family also includes the Zero Cross Detect (ZCD) module, which can monitor AC line voltage, and indicate zero crossing activity. Simplifying TRIAC control applications greatly reduces both CPU demand and BOM cost. In combination with the new high-current I/Os (100 mA) and the proven Configurable Logic Cell (CLC) along with I2C, SPI and EUSART for communications, this integration helps speed design, eases implementation and adds flexibility. This family also supports the implementation of safety standards such as Class B and UL 1998 or fail-safe operations by combining the Windowed Watchdog Timer (WWDT) which monitors proper software operation within predefined limits, improving reliability and Cyclic Redundancy Check with Memory Scan (CRC/SCAN) that detects and scans memory for corrupted data. Along with the Hardware Limit Timers (HLT), which detect hardware fault conditions (stall, stop, etc.), engineers can now enable safety and monitoring functions in their applications with minimum to zero involvement of the CPU. Along with all these features, the family offers low-power XLP technology and is provided in small-form-factor packages, ranging from 8-, 14- and 20- pin packages. Development support The PIC16(L)F161X family is supported by Microchip’s standard suite of world-class development tools, including the PICkit 3 (part # PG164130) and MPLAB ICD 3 (part # DV164035). The MPLAB Code Configurator, which is a plug-in for Microchip’s free MPLAB X IDE that provides a graphical method to configure 8-bit systems and peripheral features, and gets you from concept to prototype in minutes by automatically generating efficient and easily modified C code for your application. Availability The PIC12(L)F1612 MCUs are available today for sampling and volume production in 8-pin PDIP, SOIC, and 3 mm x 3 mm DFN and UDFN packages. The PIC16(L)F1613 MCUs are also available in 14-pin PDIP, SOIC, TSSOP, and 4 mm x 4 mm UQFN and QFN packages. The PIC(L)F1614 and PIC(L)F1615 are available now for sampling in 14-pin PDIP, SOIC, TSSOP, and 4 mm x 4 mm UQFN and QFN packages, and volume production is expected in January. The PIC16(L)F1618 and PIC(L)F1619 MCUs are also available today for sampling in 20-pin PDIP, SOIC, TSSOP, and 4 mm x 4 mm UQFN and QFN packages, and volume production is expected in January. The family is supplied in 10,000-unit quantities.

PIC-микроконтроллеры, где могут пригодиться радиолюбителю?

Среди множества семейств микроконтроллеров от разных производителей радиолюбители полюбили два – AVR и PIC. Микроконтроллеры PIC производятся компанией Microchip.

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

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

Пожалуй, среди начинающих очень распространены микроконтроллеры пик младших моделей, а именно семейств:

  • Pic10;
  • Pic12;
  • Pic16.

Эти микроконтроллеры 8-битные, при этом различают две архитектуры:

  1. Baseline с 10-битными инcтрукциями с 35-ю ассемблерными командами.
  2. Mid-range с 14-битными инструкциями и 35 или 49 команд на языке ассемблера в зависимости от конкретной модели.

В разработках радиолюбителей очень часто встречается модель 16f628. Конфигурация этого pic-микроконтроллера следующая, в нём есть:

  • встроенный тактовый генератор может быть настроен на частоту 4 или 8 МГц;
  • 18 ножек – портов, из которых 16 может использоваться для ввода-вывода данных, 2 задействованы под питание;
  • возможность использовать кварцевый резонатор для работы на тактовых частотах до 20 МГц (тогда задействуют еще 2 ноги для него);
  • буква F в маркировке говорит о памяти типа Flash, объёмом на 2048 слов;
  • гарвардская архитектура, с 14-битными инструкциями, всего их 35 штук;
  • длина машинного цикла 4 такта (1 действие выполняется за 4 такта кварцевого резонатор или внутреннего генератора);
  • 224 байта ОЗУ;
  • 128 байт EEPROM;
  • USART – последовательный порт;
  • внутренний источник опорного напряжения;
  • питается от 3.3 до 5 В.

PIC16 имеют низкую цену и достаточно развитую аналоговую периферию, что и обеспечивает их популярность. При этом модели могут выпускаться в корпусах с количеством ножек от 18 до 40. Это позволяет делать более сложные системы, чем возможно на вышеприведенном примере.

Существуют и более мощные модели, например, 16-битные:

  1. PIC24x
  2. DsPIC30/33F – для цифровой обработки сигналов.

Они способны выполнять 16 MIPS (миллионов итераций в секунду), что обеспечивает весьма высокое быстродействие вашей системы при 2 при двухтактном машинном цикле, такая скорость обеспечивается частотой в 32 МГц. 40 MIPS достигается при 80 МГц соответственно.

32-битные микроконтроллеры PIC32MX имеют большую производительность и превосходящий объём памяти, если сравнивать с 16-битными моделями, и работают на частоте в 80 МГц.

Сфера применения PIC-микроконтроллеров

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

Давайте рассмотрим несколько схем с применением микроконтроллеров семейства PIC.

Таймер для управления нагрузкой на PIC16f628

Простейшая автоматика на микроконтроллерах PIC – это стихия 8-битного семейства. Их объём памяти не позволяет делать сложных систем, но отлично подходит для самостоятельного выполнения пары поставленных задач. Так и эта схема трёхканального таймера на Pic16f628, поможет вам управлять нагрузкой любой мощности. Мощность нагрузки зависит только от установленного реле/пускателя/контактора и пропускной способности электросети.

Настраивается прибор с помощью набора из 4-х кнопок SB1-SB4, на HG1 выводятся параметры, это дисплей типа LCD на 2 строки по 16 символов. В схеме используется внешний кварцевый резонатор на 4 МГц, а KV1 – это реле, с питанием катушки в 24 В, вы можете использовать любое реле, лишь бы оно подходило по напряжению катушки к вашему БП. МК питается от 5 В стабилизированного источника.

Вы можете использовать от 1 до 3 каналов в управлении нагрузкой, стоит только продублировать схему, добавив реле к выводам RA3, RA4 микроконтроллера.

Часы-будильник на МК PIC16f628A

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

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

Регулятор мощности паяльника на PIC16f628A

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

Схема довольно простая, в нижней части реализация светодиодной индикации. Главный силовой элемент – тиристор BT139, а MOC3041 – нужен для гальванической развязки МК от сети и управления тиристором с помощью логического уровня в 5 В.

Как прошивать микроконтроллер? С чего начать изучение?

Официальный программатор для семейств PIC – это PICkit V3, является наиболее распространенным. Программный код загружается в чип с помощью ПО, которое есть на диске, он идёт в комплекте с программатором. IDE имеет название MPlab. Является официальной средой разработки от производителя, между прочим, бесплатной. Для изучения устройств есть отличная книга на русском языке «Pic-микроконтроллеры. Полное руководство» автор её Сид Катцен. Кроме этой книги вы найдете огромное количество видео-уроков и текстовых материалов, которые вам помогут.

Применение микроконтроллеров PIC весьма широко, многие радиолюбители собирают металлоискатели и счетчики Гейгера на этих МК.

Читайте также  Генератор-приставка к осциллографу для настройки спутниковых приемников

МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА PIC

Ещё несколько лет назад, для сборки какого-либо цифрового устройства требовался десяток, а то и два логических микросхем типа К155, К561 и другие. Помимо трудностей сборки и настройки, такие устройства обладали слишком большими габаритами и энергопотреблением. Но технологии не стоят на месте, и вот, им на смену пришли микроконтроллеры PIC. Аббревиатура PIC, расшифровывается как Peripheral Interface Controller. Буквальный перевод: периферийный интерфейсный контроллер. Выпускает эти контроллеры американская компания Microchip Technology. Существуют 8, 16 и 32-битные микроконтроллеры под маркой PIC. Они представляют собой микpоконтpоллеpы с RISC аpхитектуpой, встpоенным ЭППЗУ пpогpаммы и ОЗУ данных. Скачать руководство по микроконтроллерам PIC можно здесь . А здесь имеется хорошая книга » Радиолюбительские схемы на PIC контроллерах » — описание десятков схем и конструкций: часы, таймеры, программаторы и многое другое.

Работа 8-ми битных микроконтроллеров основывается на 12-ти разрядной архитектуре слова программ и предоставлены, как наиболее дешевое решение. Среднее семейство представлено микроконтроллерами серий PIC12 и PIC16, и имеет ширину слова программ 14 бит. Микроконтроллеры работают в диапазоне питающих напряжений от 2.0 до 5.5В, имеют встроенную систему прерываний, аппаратный стек, энергонезависимую память данных EEPROM. Набор периферии: USB, SPI, I2С, USART, LCD, АЦП и другие.

В новых микроконтроллерах применена улучшенная архитектура 8-ми битных PIC контроллеров PIC12 и PIC16. При этом увеличен объём памяти программ и данных, улучшен аппаратный стек, имеются дополнительные источники сброса, расширена периферия для создания сенсорных пользовательских интерфейсов, уменьшено время входа в прерывание и размер кода, увеличена производительность на 50 %.

Семейство 16-ти разрядных микроконтроллеров представлены в модификациях PIC24F — производительность ядра [email protected]МГц и PIC24H — [email protected]МГц. Отличаются они технологией изготовления FLASH программной памяти.

Особенности микроконтроллеров PIC24F и PIC24H :

Выполнение команды за 2 такта генератора
Время отклика на прерывание — 5 командных тактов
Доступ к памяти за 1 командный такт
Аппаратный умножитель
Аппаратный делитель 32/16 и 16/16 чисел
Питающие напряжения 2.0…3.6В, один источник питания.
Внутрисхемное и само- программирование
Встроенный генератор с PLL
Расширенная периферия (до 3-х SPI, до 3-х I2C, до 4-х UART с поддержкой IrDA, LIN, CAN и расширенный ECAN, USB OTG)
Модуль измерения времени заряда, для управление ёмкостными сенсорами
Ток портов ввода/вывода около мА
До девяти 16-битных таймеров
До восьми модулей захвата
Энергосберегающие режимы
До двух АЦП с 32 каналами и с конфигурируемой разрядностью
До восьми 16-битных модулей сравнения / генерации ШИМ

Самыми продвинутыми контроллерами являются 32-разрядные PIC32. Их особенности: ядро MIPS32 M4K, частота такта 80 МГц, большинство команд выполняются за 1 такт генератора, производительность 1.53 Dhrystone MIPS/МГц, порты ввода/вывода относятся к основному частотному диапазону, дополнительный частотный диапазон для периферии из основного посредством программно настраиваемого делителя, до 32 кБ SRAM и 512 кБ Flash с кэшем предвыборки, совместимость по выводам и отладочным средствам с 16-битными контроллерами, аппаратный умножитель и делитель с независимым конвейером, оптимизированным по скорости выполнения, набор расширенных инструкций MIPS16e, независимый от основного ядра контроллер USB.

Схемы и устройства на PIC контроллерах можно питать от сети 220 вольт без понижающего трансформатора. Для этого достаточно спаять простую схему бестрансформаторного источника 5В, которая обеспечивает ток нагрузки около 0.1А. Для уменьшения влияния наводок и помех следует неиспользуемые выводы микроконтроллера подключать к шине земли. При разводке печатной платы обязательно установите фильтрующий конденсатор, емкостью 0,1 мкф, между выводами питания. Цепи генератора тактовых импульсов и сброса микроконтроллера делайте покороче. По периметру платы стоит провести шину земли.

В настоящее время семейство микроконтроллеров PIC представлено такими моделями:

ТИП Память,байт ОЗУ,байт Частота,МГц

PIC12C508 512×12 25 4
PIC12C508A 512×12 25 4
PIC12C509 1024×12 41 4
PIC12C509A 1024×12 41 4
PIC12C671 1024×14 127 10
PIC12C672 2048×14 127 10
PIC12CE518 512×12 25 4
PIC12CE519 1024×12 41 4
PIC12CE673 1024×14 127 10
PIC12CE674 1024×14 128 10
PIC12CR509A 1024×12 41 4
PIC12F629 1024 64 20
PIC12F675 1024 64 20
PIC14000 4096×14 192 20
PIC16C432 2048×12 128 20
PIC16C433 2048×12 128 10
PIC16C505 1024×12 72 20
PIC16C52 384×12 25 4
PIC16C54 512×12 25 20
PIC16C54A 512×12 25 20
PIC16C54C 512×12 25 20
PIC16C55 512×12 24 20
PIC16C554 512×14 80 20
PIC16C558 2048×14 128 20
PIC16C55A 512×12 24 20
PIC16C56 1024×12 25 20
PIC16C56A 1024×12 25 20
PIC16C57 2048×12 72 20
PIC16C57C 2048×12 72 20
PIC16C58A 2048×14 73 20
PIC16C58B 2048×12 73 20
PIC16C61 1024×14 36 20
PIC16C620 512×14 80 20
PIC16C620A 512×14 96 20
PIC16C621 1024×14 80 20
PIC16C621A 1024×14 80 20
PIC16C622 2048×14 128 20
PIC16C622A 2048×14 128 20
PIC16C62A 2048×14 128 20
PIC16C62B 2048×14 128 20
PIC16C63 4096×14 192 20
PIC16C63A 4096×14 192 20
PIC16C642 4096×14 176 20
PIC16C64A 2048×14 128 20
PIC16C65A 4096×14 192 20
PIC16C65B 4096×14 192 20
PIC16C66 8192×14 368 20
PIC16C662 4096×14 176 20
PIC16C67 8192×14 368 20
PIC16C71 1024×14 36 20
PIC16C710 512×14 36 20
PIC16C711 1024×14 68 20
PIC16C712 1024×14 128 20
PIC16C715 2048×14 128 20
PIC16C716 2048×14 128 20
PIC16c717 2048×14 256 20
PIC16C72 2048×14 128 20
PIC16C72A 2048×14 128 20
PIC16C73 4096×14 192 20
PIC16C73A 4096×14 192 20
PIC16C73B 4096×14 192 20
PIC16C74 4096×14 192 20
PIC16C745 8192×14 256 24
PIC16C74A 4096×14 192 20
PIC16C74B 4096×14 192 20
PIC16C76 8192×14 368 20
PIC16C765 8192×14 256 24
PIC16C77 8192×14 368 20
PIC16C770 2048×14 256 20
PIC16C771 4096×14 256 20
PIC16C773 2048×14 256 20
PIC16C774 2048×14 256 20
PIC16C781 1024×14 128 20
PIC16C782 2048×14 128 20
PIC16C923 4096×14 176 8
PIC16C924 4096×14 176 8
PIC16C925 4096×14 196 20
PIC16C926 4096×14 336 20
PIC16CE623 512×14 96 20
PIC16CE624 1024×14 96 20
PIC16CE625 2048×14 128 20
PIC16CR54A 512×12 25 20
PIC16CR54b 512×12 25 20
PIC16CR54C 512×12 25 20
PIC16CR56A 2048×14 25 20
PIC16CR57A 4096×14 72 20
PIC16CR57b 2048×12 72 20
PIC16CR57C 2048×12 72 20
PIC16CR58A 2048×12 73 20
PIC16CR58B 2048×12 73 20
PIC16CR62 2048×14 128 20
PIC16CR63 4096×14 192 20
PIC16CR64 4096×14 192 20
PIC16CR65 4096×14 192 20
PIC16CR72 2048×14 128 20
PIC16CR83 512×14 36 10
PIC16CR84 1024×14 68 10
PIC16F627 1024×14 224 20
PIC16F627A 1024 224 20
PIC16F628 2048×14 224 20
PIC16F628A 2048 224 20
PIC16F630 1024 64 20
PIC16F648A 4096 256 20
PIC16F676 1024 64 20
PIC16F72 2048 128 20
PIC16F73 4096×14 192 20
PIC16F74 4096×14 192 20
PIC16F76 8192×14 368 20
PIC16F77 8192×14 368 20
PIC16F818 1024 128 20
PIC16F819 2048 256 20
PIC16F83 512×14 36 10
PIC16F84 1024×14 68 10
PIC16F84A 1024×14 68 10
PIC16F85 1024×14 128 20
PIC16F86 2048×14 128 20
PIC16F87 4096×14 192 20
PIC16F870 2048×14 128 20
PIC16F871 2048×14 128 20
PIC16F872 2048×14 128 20
PIC16F873 4096×14 192 20
PIC16F873A 4096×14 192 20
PIC16F874 4096×14 192 20
PIC16F874A 4096×14 192 20
PIC16F876 8192×14 368 20
PIC16F876A 8192×14 368 20
PIC16F877 8192×14 368 20
PIC16F877A 8192×14 368 20
PIC16F88 4096×14 192 20
PIC16F89 4096×14 192 20
PIC16HV540 512×12 25 20
PIC16LC74B 4096×14 192 16
PIC17C42 2048×16 232 33
PIC17C42A 2048×16 232 33
PIC17C43 4096×16 454 33
PIC17C44 8092×16 454 33
PIC17C752 8192×16 454 33
PIC17C756 16384×16 902 33
PIC17C756a 16384×16 902 33
PIC17C762 8192×16 678 33
PIC17C766 16384×16 902 33
PIC17CR42A 2048×16 232 33
PIC17CR43 2048×16 232 33
PIC17LC752 8192×16 678 16
PIC17LC756A 16384×16 902 16
PIC18C242 8192×16 512 40
PIC18C252 16384×16 1536 40
PIC18C442 8192×16 512 40
PIC18C452 16384×16 1536 40
PIC18C658 16384×16 1536 40
PIC18C801 — 1536 25
PIC18C858 16384×16 1536 40
PIC18F010 1024×16 256 40
PIC18F012 1024×16 256 40
PIC18F020 2048×16 256 40
PIC18F022 2048×16 256 40
PIC18F1220 2048 256 40
PIC18F1230 2048×16 256 40
PIC18F1320 4096 256 40
PIC18F1330 4096×16 256 40
PIC18F2220 2048 512 40
PIC18F232 8192×12 512 40
PIC18F2320 4096 512 40
PIC18F2331 4096×16 512 40
PIC18F242 8192×16 768 40
PIC18F2431 8192×16 768 40
PIC18F2450 8192×16 1024 40
PIC18F248 8192×16 768 40
PIC18F252 16384×16 1536 40
PIC18F2550 16384×16 1024 40
PIC18F258 16384×16 1536 40
PIC18F4220 2048 512 40
PIC18F432 8192×12 512 40
PIC18F4320 4096 512 40
PIC18F4331 4096×16 512 40
PIC18F442 8192×16 768 40
PIC18F4431 8192×16 768 40
PIC18F4450 8192×16 1024 40
PIC18F448 8192×16 768 40
PIC18F452 16384×16 1536 40
PIC18F4550 16384×16 1024 40
PIC18F458 16384×16 1536 40
PIC18F6520 16384×16 2048 40
PIC18F6585 24576 3072 40
PIC18F6620 32768×16 3840 40
PIC18F6680 32768 3072 40
PIC18F6720 65536×16 3840 40
PIC18F8520 16384×16 2048 40
PIC18F8585 24576 3072 40
PIC18F8620 32768×16 3840 40
PIC18F8680 32768 3072 40
PIC18F8720 65536×16 3840 40

Для программирования контроллеров нужны компьютеp, пpогpамматоp, подключаемый к паpаллельному поpту компьютеpа, сама микpосхема контроллер (PIC16F84), макетная плата, 8 светодиодов, источник +5 В и панелька для микpосхемы. Простую и популярную программу PonyProg2000 можно скачать в разделе софт.