Микроконтроллеры

Улучшенное ядро микроконтроллеров серии PIC16

Микроконтроллеры серии PIC16 одно время находились на вершине популярности. Хорошо отработанное ядро, высокая надежность и простота освоения делали эти микросхемы востребованными среди самого широкого круга любителей и специалистов. Но техника не стоит на месте и с началом массового распространения ARM-микроконтроллеров, старые 8-ми битные системы начали сдавать позиции. При этом многие преимущества все равно остались за ними и компании-производители, пытаясь сохранить позиции, постоянно совершенствуют свои изделия. Коснулось это и серии PIC16.

Микроконтроллеры фирмы Microchip стали дверью в мир программируемой электроники для многих тысяч разработчиков. Долгое время самой востребованной считалась серия PIC16F, построенная на базе ядра так называемого среднего семейства Midrange. 8-ми разрядное ядро с 14-ти разрядной шиной команд, обеспечивало выполнение инструкций за 4 такта. 35 простых команд, позволяли управлять широким набором периферийных устройств, среди которых использовались таймеры, модули АЦП и ЦАП, блоки ШИМ и захвата сигналов, интерфейсы UART, SPI и I2C. Объем памяти программ зависел от модели контроллера и мог варьироваться от 1 до 8 К слов. В составе семейства выпускались микросхемы с количеством выводов от 14 до 64 в корпусах DIP, SOIC, SSOP, DFN, QFN.

С целью сохранения позиций Microchip произвел улучшение схемы процессора и изменение норм технологического процесса. Результатом стало ядро улучшенного среднего семейства Enhanced Mid-Range и микросхемы на его основе. Если не брать в расчет маркировку, то серия PIC16F получила фактически новое ядро, сильно приближенное по возможностям к моделям PIC18.

Структурная схема улучшенного ядра PIC16
Структурная схема улучшенного ядра PIC16

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

  • ADDWFC – сложение содержимого произвольного регистра, аккумулятора и флага переноса.
  • SUBWFB – вычитание из содержимого произвольного регистра значения находящегося в аккумуляторе и инвертированного флага переноса.
  • LSLF – логический сдвиг регистра влево через бит переноса. Младший бит устанавливается равным 0.
  • LSRF – логический сдвиг регистра вправо через бит переноса. Старший бит устанавливается равным 0.
  • MOVLB – Загрузка 5-ти разрядной константы в BSR (Выбор банка памяти)
  • MOVLP – загрузка 7-ми разрядной константы в PCLATH
  • BRA – Сложение содержимого программного счетчика и девятиразрядной константы.
  • BRW - Сложение содержимого программного счетчика и регистра аккумулятора.
  • CALLW – вызов подпрограммы. Младшая часть адреса перехода находится в аккумуляторе, старшая в PCLATH.
  • ADDFSR – сложение константы с содержимым одного из регистра косвенной адресации
  • MOVIW – загрузка содержимого одного из регистров c косвенной адресацией INDF в аккумулятор с предварительным или последующим инкрементом или декрементом регистра указателя FSR
  • MOVWI - загрузка содержимого аккумулятора в один из регистров косвенной адресации INDF с предварительным или последующим инкрементом или декрементом регистра указателя FSR
  • RESETпрограммный сброс микроконтроллера
  • OPTION – загрузка регистра OPTION_REG в аккумулятор.
  • TRIS – загрузка содержимого регистра аккумулятора в TRISx

Большинство новых инструкций нацелено на упрощение организации внутрипрограммных переходов и работу с косвенной адресацией, что очень положительно сказывается при компиляции программ с языков высокого уровня. Наряду с дополнительными командами изменилась с 8 до 16 слов глубина стека, в который теперь добавлен контроль переполнения и опустошения, со сбросом процессора в случае возникновения аварийной ситуации. Увеличились доступные области памяти. Максимальный размер памяти программ теперь может составлять 32К слов, ОЗУ – 4кБ. Изменилась система косвенной адресации, для чего в состав ядра введен еще второй регистр FSR. Теперь для косвенного доступа открыто не только ОЗУ, но и память программ. Для работы с последней появился режим самопрограммирования. Улучшена и система обработки прерываний, главным новшеством которой  стало автоматическое сохранение контекста в теневые регистры, что не требует внимания со стороны программиста и уменьшает программный код.

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

По заявлению инженеров Microchip, указанные новшества повысили производительность микросхем на 50% по сравнению со старым вариантом. Затронули изменения и периферийные модули. Кроме существенно переработанных традиционных блоков, в составе новых микроконтроллеров появились такие необычные устройства, как настраиваемые логические ячейки (CLC), генераторы сигналов, программируемые переключатели и операционные усилители. Благодаря новым модулям значительно расширилась область использования PIC16. Но, не смотря на все нововведения, старым 8-ми битным процессорам все сложнее конкурировать с 32-разрядными собратьями. Это даже вызывает некоторую грусть, так как, в общем-то, неплохие микроконтроллеры могут скоро исчезнуть с рынка. На сегодняшний день за них голосуют только простота освоения и наличие удобных корпусов. Во всем остальном, даже по цене, они уже полностью проигрывают старшим собратьям.

 

You have no rights to post comments