PIC (обычно произносится как «pick») - это семейство микроконтроллеров производства Microchip Technology, производных от PIC1650, первоначально разработанного подразделением Microelectronics Division компании General Instrument. Название PIC первоначально называлось Контроллер периферийного интерфейса, а в настоящее время расширяется как Программируемый интеллектуальный компьютер. Первые части семейства были доступны в 1976 году; к 2013 году компания поставила более двенадцати миллиардов отдельных деталей, используемых во многих встраиваемых системах.
Ранние модели PIC имели постоянную память (ROM) или программируемую EPROM для хранения программ, некоторые с возможностью стирания памяти. Все современные модели используют флэш-память для хранения программ, а новые модели позволяют PIC перепрограммировать себя. Память программ и память данных разделены (см. Архитектуру Гарварда ). Память данных бывает 8-битной, 16-битной и, в последних моделях, 32-битной шириной. Программные инструкции различаются по количеству битов в зависимости от семейства PIC и могут иметь длину 12, 14, 16 или 24 бита. Набор команд также различается в зависимости от модели, с более мощными микросхемами, добавляющими инструкции для функций цифровой обработки сигналов.
Аппаратные возможности устройств PIC варьируются от 6-контактных SMD, 8-контактных микросхем DIP до 144-контактных микросхем SMD с дискретными выводами ввода-вывода, модулями АЦП и ЦАП, а также портами связи, такими как UART, I2C, CAN и даже USB. Варианты малой мощности и высокой скорости существуют для многих типов.
Производитель поставляет компьютерное программное обеспечение для разработки, известное как MPLAB X, ассемблеры и компиляторы C / C ++, а также оборудование для программирования / отладчика серий MPLAB и PICKit. Также доступны сторонние инструменты и некоторые инструменты с открытым исходным кодом. Некоторые части имеют возможность внутрисхемного программирования; доступны как недорогие программисты-разработчики, так и высокопроизводительные программисты.
Устройства PIC популярны как среди промышленных разработчиков, так и среди любителей из-за их низкой стоимости, широкой доступности, большой базы пользователей, обширной коллекции заметок по применению, доступности недорогих или бесплатных инструментов разработки, последовательного программирования и возможности перепрограммирования флэш-памяти.
Исходный PIC предназначался для использования с новым 16-разрядным центральным процессором (ЦП) General Instrument CP1600. CP1600 был мощным процессором для своего времени, реализовав большую часть архитектуры набора команд миникомпьютера PDP-11 в корпусе микрокомпьютера.
Хотя большинство людей считало CP1600 хорошим процессором, у него была одна существенная проблема; Чтобы уменьшить количество выводов в его физическом корпусе DIP, он имел мультиплексированные шины адреса и данных: общие выводы адресной шины и шины данных. Для процессоров с отдельными каналами ввода / вывода, таких как Intel 8008, это не было бы проблемой, но 1600 также использовал концепцию ввода / вывода с отображением памяти PDP-11. Это означало, что для связи с устройством требовалось, чтобы устройство отслеживало доступ к ключевым ячейкам памяти в одном машинном цикле, а затем считало данные в следующем. Это сделало ввод-вывод на машине медленнее, поскольку шина чередовалась между режимами адреса и данных, и более затратной в реализации, так как устройствам приходилось фиксировать вводы в течение нескольких циклов.
Чтобы устранить эту слабость 1600, в 1975 году была разработана 8-битная PIC. Идея заключалась в том, что в системе должен был быть один или несколько недорогих PIC, выполняющих фактический ввод-вывод с устройствами, а затем отправляющих эти данные. к процессору. PIC использовал простой микрокод, хранящийся в ПЗУ, для выполнения своих задач.
В 1985 году General Instrument продала свое подразделение микроэлектроники, и новые владельцы отменили почти все, что к тому времени было в основном устаревшим. PIC, однако, был модернизирован внутренним EPROM для создания программируемого контроллера каналов. В то же время Plessey в Великобритании выпустил процессоры NMOS под номерами PIC1650 и PIC1655, основанные на дизайне GI, с использованием тех же наборов инструкций, либо с программируемой маской пользователя, либо с версиями, предварительно запрограммированными для устройств автоматического набора номера и интерфейсов клавиатуры.
В 1998 году Microchip представила PIC 16F84, флэш-программируемую и стираемую версию своего успешного последовательного программируемого PIC16C84. В 2001 году Microchip представила больше программируемых Flash-устройств, а полное производство началось в 2002 году [1].
Сегодня доступно огромное количество PIC с различными встроенными периферийными устройствами ( модули последовательной связи, UART, ядра управления двигателем и т. Д.) И программной памятью от 256 до 64 КБ слов и более («слово» - это одна инструкция на языке ассемблера., различной длиной от 8 до 16 бит, в зависимости от конкретного ПОС микро семьи).
PIC и PICmicro теперь являются зарегистрированными товарными знаками Microchip Technology. Обычно считается, что PIC расшифровывается как Peripheral Interface Controller, хотя первоначальное сокращение General Instruments для начальных устройств PIC1640 и PIC1650 было « Программируемый контроллер интерфейса ». Аббревиатуру быстро заменили на « Программируемый интеллектуальный компьютер ».
Microchip 16C84 ( PIC16x84 ), представленный в 1993 году, был первым процессором Microchip со встроенной памятью EEPROM.
К 2013 году Microchip поставляла более одного миллиарда микроконтроллеров PIC ежегодно.
Микрочипы PIC разработаны с использованием гарвардской архитектуры и предлагаются в различных семействах устройств. Семейства базового и среднего уровня используют 8-разрядную память данных, а семейства высокого класса используют 16-разрядную память данных. Последняя серия, PIC32MZ, представляет собой 32-битный микроконтроллер на базе MIPS. Командные слова имеют размер 12-бит (PIC10 и PIC12), 14-бит (PIC16) и 24-бит (PIC24 и dsPIC). Бинарные представления машинных инструкций различаются в зависимости от семейства и показаны в списках инструкций PIC.
Внутри этих семейств устройства могут быть обозначены как PICnnCxxx (CMOS) или PICnnFxxx (Flash). Устройства «C» обычно классифицируются как «Не подходящие для новых разработок» (Microchip активно не продвигает их). Программная память устройств "C" по-разному описывается как OTP, ROM или EEPROM. По состоянию на октябрь 2016 года единственным продуктом OTP, классифицированным как «В производстве», является pic16HV540. Устройства «C» с кварцевыми окошками (для стирания) вообще больше не доступны.
Эти устройства имеют 12-битную кодовую память, 32-байтовый регистровый файл и крошечный двухуровневый стек вызовов. Они представлены серией PIC10, а также некоторыми устройствами PIC12 и PIC16. Базовые устройства доступны в корпусах от 6 до 40 контактов.
Обычно первые 7–9 байтов регистрового файла являются регистрами специального назначения, а оставшиеся байты - ОЗУ общего назначения. Указатели реализуются с использованием пары регистров: после записи адреса в FSR (регистр выбора файла) регистр INDF (косвенный f) становится псевдонимом для адресуемого регистра. Если реализовано ОЗУ с банками, номер банка выбирается старшими 3 битами FSR. Это влияет на номера регистров 16–31; регистры 0–15 являются глобальными, и на них не влияют биты выбора банка.
Из-за очень ограниченного пространства регистров (5 битов) 4 редко читаемых регистра не имели адресов, а записывались специальными инструкциями ( OPTION
и TRIS
).
Адресное пространство ПЗУ составляет 512 слов (по 12 бит каждое), которое может быть расширено до 2048 слов при помощи банка. CALL
и GOTO
инструкции определяют младшие 9 бит нового местоположения кода; дополнительные старшие биты берутся из регистра состояния. Обратите внимание, что инструкция CALL включает только 8 бит адреса и может указывать адреса только в первой половине каждой страницы из 512 слов. То есть инструкция CALL определяет младшие 9 бит адреса, но только младшие 8 бит этого адреса являются параметром инструкции, в то время как 9-й бит (бит 8) неявно задается как 0 самой инструкцией CALL.
Таблицы поиска реализованы с использованием вычислений GOTO
(присвоение регистру PCL) в таблице RETLW
инструкций. RETLW возвращает, возвращая в регистр W 8-битную константу, которая закодирована в инструкции.
Это «базовое ядро» не поддерживает прерывания ; все операции ввода / вывода должны быть опрошены. Есть несколько «расширенных базовых» вариантов с поддержкой прерываний и четырехуровневым стеком вызовов.
Устройства PIC10F32x имеют 14-битную кодовую память среднего уровня на 256 или 512 слов, 64-байтовый регистровый файл SRAM и 8-уровневый аппаратный стек. Эти устройства доступны в корпусах с 6 выводами SMD и с 8 выводами DIP (два вывода не используются). Доступен только один вход и три контакта ввода / вывода. Доступен сложный набор прерываний. Часы представляют собой внутренний откалиброванный высокочастотный генератор с частотой 16 МГц с возможностью выбора скоростей с помощью программного обеспечения и маломощным источником 31 кГц.
Эти устройства имеют 14-разрядную память кода и улучшенный 8-уровневый стек вызовов. Набор команд очень мало отличается от базовых устройств, но два дополнительных бита кода операции позволяют напрямую адресовать 128 регистров и 2048 слов кода. Есть несколько дополнительных различных инструкций и две дополнительные 8-битные буквальные инструкции сложения и вычитания. Ядро среднего уровня доступно в большинстве устройств с маркировкой PIC12 и PIC16.
Первые 32 байта регистрового пространства выделяются специальным регистрам; остальные 96 байтов используются для ОЗУ общего назначения. Если используется ОЗУ с банками, старшие 16 регистров (0x70–0x7F) являются глобальными, как и некоторые из наиболее важных регистров специального назначения, включая регистр STATUS, в котором хранятся биты выбора банка ОЗУ. (Другими глобальными регистрами являются FSR и INDF, младшие 8 бит программного счетчика PCL, старший регистр предварительной загрузки ПК PCLATH и главный регистр управления прерываниями INTCON.)
Регистр PCLATH предоставляет биты адреса команды высокого порядка, когда 8 битов, предоставленных записью в регистр PCL, или 11 битов, предоставленных инструкцией GOTO
или CALL
, недостаточны для адресации доступного пространства ПЗУ.
Серия 17 так и не стала популярной и была заменена архитектурой PIC18 (однако см. Клоны ниже). Серия 17 не рекомендуется для новых разработок, и доступность может быть ограничена для пользователей.
Усовершенствования по сравнению с более ранними ядрами - это 16-разрядные коды операций (позволяющие использовать множество новых инструкций) и 16-уровневый глубокий стек вызовов. Устройства PIC17 выпускались в корпусах от 40 до 68 контактов.
17-я серия представила ряд важных новых функций:
Существенным ограничением было то, что пространство ОЗУ было ограничено 256 байтами (26 байтов регистров специальных функций и 232 байта ОЗУ общего назначения) с неудобным переключением банков в моделях, которые поддерживали больше.
В 2000 году Microchip представила архитектуру PIC18. В отличие от 17-й серии, она оказалась очень популярной, и в настоящее время в производстве находится большое количество вариантов устройств. В отличие от более ранних устройств, которые чаще всего программировались на ассемблере, C стал преобладающим языком разработки.
Серия 18 наследует большинство функций и инструкций серии 17, но при этом добавляет ряд важных новых функций:
Пространство RAM составляет 12 бит, адресуется с помощью 4-битного регистра выбора банка и 8-битного смещения в каждой инструкции. Дополнительный бит «доступа» в каждой инструкции выбирает между банком 0 ( a = 0) и банком, выбранным BSR ( a = 1).
Также доступен одноуровневый стек для регистров STATUS, WREG и BSR. Они сохраняются при каждом прерывании и могут быть восстановлены при возврате. Если прерывания запрещены, их также можно использовать при вызове / возврате подпрограммы, установив бит s (добавив к инструкции ", FAST").
Функция автоматического увеличения / уменьшения была улучшена за счет удаления управляющих битов и добавления четырех новых косвенных регистров для каждого FSR. В зависимости от того, к какому косвенному регистру файла осуществляется доступ, можно выполнить постдекремент, постинкремент или прединкремент FSR; или сформируйте эффективный адрес, добавив W к FSR.
В более продвинутых устройствах PIC18 доступен «расширенный режим», который делает адресацию еще более удобной для скомпилированного кода:
Устройства PIC18 все еще разрабатываются (2017 г.) и оснащены CIP (Core Independent Peripherals).
В 2001 году Microchip представила серию микросхем dsPIC, массовое производство которой началось в конце 2004 года. Это первые изначально 16-битные микроконтроллеры Microchip. Устройства PIC24 представляют собой микроконтроллеры общего назначения. Устройства dsPIC дополнительно включают в себя возможности цифровой обработки сигналов.
Хотя все еще похожи на более ранние архитектуры PIC, есть значительные улучшения:
Некоторые особенности:
dsPIC могут быть запрограммированы на C с использованием компилятора Microchip XC16 (ранее называвшегося C30), который является вариантом GCC.
ПЗУ с инструкциями имеет ширину 24 бита. Программное обеспечение может обращаться к ПЗУ в 16-битных словах, где четные слова содержат 16 младших разрядов каждой инструкции, а нечетные слова - 8 старших разрядов. Старшая половина нечетных слов читается как ноль. Программный счетчик имеет ширину 23 бита, но младший бит всегда равен 0, поэтому имеется 22 изменяемых бита.
Инструкции бывают двух основных типов, причем наиболее важные операции (добавление, xor, сдвиги и т. Д.) Допускают обе формы.
Первый подобен классическим инструкциям PIC, с операцией между заданным регистром f (то есть первыми 8 КБ ОЗУ) и одним аккумулятором W0, с выбором бита выбора места назначения, который обновляется с результатом. (Регистры W отображены в память. Таким образом, операндом f может быть любой регистр W.)
Вторая форма более традиционна и позволяет использовать три операнда, которые могут быть любым из регистров по 16 Вт. Пункт назначения и один из источников также поддерживают режимы адресации, позволяя операнду находиться в памяти, на которую указывает регистр W.
В ноябре 2007 года Microchip представила PIC32MX семейство 32-разрядных микроконтроллеров, на основе MIPS32 М4 Ядра. Устройство может быть запрограммировано с помощью компилятора Microchip MPLAB C для микроконтроллеров PIC32, варианта компилятора GCC. Первые 18 производимых в настоящее время моделей (PIC32MX3xx и PIC32MX4xx) совместимы по выводам и используют те же периферийные устройства, что и семейство (16-разрядных) устройств PIC24FxxGA0xx, что позволяет использовать общие библиотеки, программное обеспечение и аппаратные средства. Сегодня, начиная с 28 выводов в небольших корпусах QFN и заканчивая высокопроизводительными устройствами с Ethernet, CAN и USB OTG, доступен полный спектр 32-разрядных микроконтроллеров среднего уровня.
Архитектура PIC32 привнесла в портфолио Microchip ряд новых функций, в том числе:
В ноябре 2013 года Microchip представила серию микроконтроллеров PIC32MZ на базе ядра MIPS M14K. Серия PIC32MZ включает:
В 2015 году Microchip выпустила семейство PIC32MZ EF, использующее обновленный процессор MIPS M5150 Warrior M-класса.
В 2017 году Microchip представила семейство PIC32MZ DA, включающее встроенный графический контроллер, графический процессор и 32 МБ DDR2 DRAM.
В июне 2016 года Microchip представила семейство PIC32MM, специализирующееся на маломощных и недорогих приложениях. PIC32MM имеет независимые от ядра периферийные устройства, спящий режим до 500 нА и корпусы 4 x 4 мм. В PIC32MM микроконтроллеры используют MIPS Technologies М4, 32-битный в MIPS32 процессор. Они предназначены для очень низкого энергопотребления и ограничены до 25 МГц. Их ключевое преимущество - поддержка 16-битных инструкций MIPS, что значительно сокращает размер программы (около 40%).
Microchip представила семейство PIC32MK в 2017 году, специализирующееся на управлении двигателями, промышленном управлении, промышленном Интернете вещей (IIoT) и многоканальных приложениях CAN.
Архитектура PIC характеризуется множеством атрибутов:
Нет различия между пространством памяти и пространством регистров, потому что ОЗУ выполняет работу как памяти, так и регистров, а ОЗУ обычно называют просто файлом регистров или просто регистрами.
У PIC есть набор регистров, которые функционируют как ОЗУ общего назначения. Специальные регистры управления аппаратными ресурсами на кристалле также отображаются в пространстве данных. Адресуемость памяти зависит от серии устройства, и все типы устройств PIC имеют некоторый банковский механизм для расширения адресации на дополнительную память (но в некоторых моделях устройств реализован только один банк). Более поздние серии устройств содержат инструкции перемещения, которые могут охватывать все адресное пространство, независимо от выбранного банка. В более ранних устройствах любое перемещение регистра должно осуществляться через аккумулятор.
Для реализации косвенной адресации используются «регистр выбора файла» (FSR) и «косвенный регистр» (INDF). Номер регистра записывается в FSR, после чего чтение или запись в INDF фактически будет происходить из или в регистр, на который указывает FSR. Более поздние устройства расширили эту концепцию, добавив пост- и пре-инкремент / декремент для большей эффективности при доступе к последовательно сохраненным данным. Это также позволяет рассматривать FSR почти как указатель стека (SP).
Внешняя память данных не адресуется напрямую, за исключением некоторых устройств PIC18 с большим количеством выводов. Однако общие порты ввода-вывода могут использоваться для реализации параллельной шины или последовательного интерфейса для доступа к внешней памяти и другим периферийным устройствам (с использованием подпрограмм) с оговоркой, что такой программный доступ к памяти (конечно) намного медленнее, чем доступ к родная память PIC MCU.
Кодовое пространство обычно реализуется как встроенное ПЗУ, СППЗУ или флэш-ПЗУ. Как правило, нет возможности хранить код во внешней памяти из-за отсутствия интерфейса внешней памяти. Исключением являются PIC17 и выберите устройства PIC18 с большим количеством выводов.
Все PIC обрабатывают (и адресуют) данные 8-битными порциями. Однако единица адресуемости кодового пространства обычно не такая же, как и для пространства данных. Например, PIC в базовом (PIC12) и среднем (PIC16) семействах имеют программную память, адресуемую в том же размере, что и ширина команды, то есть 12 или 14 битов соответственно. Напротив, в серии PIC18 память программ адресуется с 8-битными приращениями (байтами), что отличается от ширины инструкции в 16 бит.
Для ясности, объем памяти программ обычно указывается в количестве (однословных) инструкций, а не в байтах.
У PIC есть стек вызовов оборудования, который используется для сохранения адресов возврата. Аппаратный стек недоступен программно на более ранних устройствах, но это изменилось с устройствами серии 18.
Аппаратная поддержка стека параметров общего назначения отсутствовала в ранних сериях, но она значительно улучшилась в 18-й серии, сделав архитектуру 18-й серии более удобной для компиляторов языков высокого уровня.
Инструкции PIC варьируются от примерно 35 инструкций для PIC низкого уровня до более 80 инструкций для PIC высокого класса. Набор команд включает инструкции для выполнения множества операций непосредственно с регистрами, сумматором и литеральной константой или сумматором и регистром, а также для условного выполнения и ветвления программы.
Некоторые операции, такие как установка битов и проверка, могут выполняться в любом пронумерованном регистре, но арифметические операции с двумя операндами всегда включают W (аккумулятор), записывая результат обратно либо в W, либо в другой регистр операнда. Чтобы загрузить константу, необходимо загрузить ее в W, прежде чем ее можно будет переместить в другой регистр. На более старых ядрах все перемещения регистров должны были проходить через W, но это изменилось на ядрах «высокого класса».
Ядра PIC имеют инструкции пропуска, которые используются для условного выполнения и ветвления. Инструкции пропуска: «пропустить, если бит установлен» и «пропустить, если бит не установлен». Поскольку ядра до PIC18 имели только инструкции безусловного перехода, условные переходы реализованы с помощью условного перехода (с противоположным условием), за которым следует безусловный переход. Пропуски также полезны для условного выполнения любой немедленной последующей инструкции. Можно пропустить инструкции пропуска. Например, последовательность инструкций «пропустить, если A; пропустить, если B; C» выполнит C, если A истинно или если B ложно.
В 18-й серии реализованы теневые регистры, регистры, которые сохраняют несколько важных регистров во время прерывания, обеспечивая аппаратную поддержку для автоматического сохранения состояния процессора при обслуживании прерываний.
В общем, инструкции PIC делятся на пять классов:
movlw
(переместить литерал в WREG), andlw
(И литерал с WREG). Одна особенная инструкция PIC - retlw
немедленно загрузить в WREG и вернуться, которая используется с вычисленными ветвями для создания таблиц поиска.addwf reg,w
addwf reg,f
goto
и call
.sleep
переход в режим пониженного энергопотребления.Архитектурные решения направлены на максимальное увеличение соотношения скорости и стоимости. Архитектура PIC была одной из первых скалярных схем ЦП и до сих пор остается одной из самых простых и дешевых. Гарвардская архитектура, в которой инструкции и данные поступают из отдельных источников, значительно упрощает синхронизацию и проектирование микросхем, что способствует увеличению тактовой частоты, цены и энергопотребления.
Набор инструкций PIC подходит для реализации таблиц быстрого поиска в программном пространстве. Такой поиск занимает одну инструкцию и два цикла инструкций. Таким образом можно смоделировать многие функции. Оптимизация обеспечивается относительно большим программным пространством PIC (например, 4096 × 14-битных слов на 16F690) и конструкцией набора команд, который допускает встроенные константы. Например, цель инструкции ветвления может быть проиндексирована с помощью W и выполнить команду «RETLW», которая выполняет то, что названо - возврат с литералом в W.
Задержка прерывания постоянна на трех тактах команд. Внешние прерывания должны быть синхронизированы с четырехтактным командным циклом, в противном случае может возникнуть дрожание в один командный цикл. Внутренние прерывания уже синхронизированы. Постоянная задержка прерывания позволяет PIC достигать управляемых прерываниями временных последовательностей с низким уровнем дрожания. Примером этого является генератор импульсов синхронизации видео. Это больше не верно для новейших моделей PIC, потому что они имеют задержку синхронного прерывания в три или четыре цикла.
Следующие ограничения стека были устранены в серии PIC18, но по-прежнему применяются к более ранним ядрам:
С выгружаемой программной памятью следует беспокоиться о двух размерах страниц: один для CALL и GOTO, а другой для вычисленного GOTO (обычно используется для поиска в таблице). Например, на PIC16 CALL и GOTO имеют 11 бит адресации, поэтому размер страницы составляет 2048 командных слов. Для вычисленных GOTO, которые вы добавляете в PCL, размер страницы составляет 256 командных слов. В обоих случаях старшие биты адреса предоставляются регистром PCLATH. Этот регистр необходимо менять каждый раз при передаче управления между страницами. PCLATH также должен сохраняться любым обработчиком прерывания.
Хотя доступно несколько коммерческих компиляторов, в 2008 году Microchip выпустила собственные компиляторы C, C18 и C30, для линейки процессоров 18F 24F и 30 / 33F.
По состоянию на 2013 год, Microchip предлагает свою серию XC компиляторов, для использования с MPLAB X. Microchip постепенно откажется от своих старых компиляторов, таких как C18, и рекомендует использовать свои компиляторы серии XC для новых проектов.
Набор команд RISC кода на языке ассемблера PIC может затруднить понимание общей последовательности операций. Разумное использование простых макросов может повысить удобочитаемость языка ассемблера PIC. Например, исходный ассемблер Parallax PIC («SPASM») имеет макросы, которые скрывают W и делают PIC похожим на двухадресную машину. В нем есть макрокоманды, такие как mov b, a
(переместить данные с адреса a на адрес b) и add b, a
(добавить данные с адреса a к данным на адресе b). Он также скрывает инструкции пропуска, предоставляя макрокоманды ветвления с тремя операндами, например cjne a, b, dest
(сравните a с b и перейдите к dest, если они не равны).
Устройства PIC обычно имеют:
Внутри серии по-прежнему существует множество вариантов устройств в зависимости от того, какие аппаратные ресурсы использует чип:
Первое поколение PIC с памятью EPROM почти полностью заменено микросхемами с флэш-памятью. Аналогичным образом, исходный 12-битный набор команд PIC1650 и его прямых потомков был заменен 14-битным и 16-битным наборами команд. Microchip по-прежнему продает OTP (одноразово программируемые) и оконные (УФ-стираемые) версии некоторых своих PIC на базе EPROM для устаревшей поддержки или объемных заказов. На веб-сайте Microchip перечислены PIC, которые электрически не стираются, как OTP. Можно заказать версии этих чипов с УФ-стиранием и окном.
Буква F в номере детали PICMicro обычно указывает на то, что PICmicro использует флэш-память и может быть стерта электронным способом. И наоборот, C обычно означает, что его можно стереть, только подвергнув кристалл воздействию ультрафиолетового света (что возможно только при использовании оконного стиля упаковки). Исключением из этого правила является PIC16C84, который использует EEPROM и поэтому электрически стирается.
Буква L в названии указывает на то, что деталь будет работать при более низком напряжении, часто с ограничениями по частоте. Детали, разработанные специально для работы с низким напряжением, в пределах строгого диапазона 3–3,6 В, помечены буквой J в номере детали. Эти компоненты также обладают уникальной толерантностью к вводу-выводу, поскольку они принимают до 5 В. в качестве входов.
Microchip предоставляет бесплатный пакет IDE под названием MPLAB X, который включает ассемблер, компоновщик, программный симулятор и отладчик. Они также продают компиляторы C для PIC10, PIC12, PIC16, PIC18, PIC24, PIC32 и dsPIC, которые полностью интегрируются с MPLAB X. Также доступны бесплатные версии компиляторов C со всеми функциями. Но для бесплатных версий оптимизация будет отключена через 60 дней.
Некоторые сторонние компании разрабатывают компиляторы языка C для PIC, многие из которых интегрируются в MPLAB и / или имеют собственную IDE. Полнофункциональный компилятор языка PICBASIC для программирования микроконтроллеров PIC доступен от meLabs, Inc. Mikroelektronika предлагает компиляторы PIC на языках программирования C, BASIC и Pascal.
Существует графический язык программирования Flowcode, способный программировать 8- и 16-битные устройства PIC и генерировать PIC-совместимый код C. Он существует во многих версиях, от бесплатной демонстрации до более полной профессиональной версии.
Proteus Design Suite может имитировать многие популярные 8 и 16-битных PIC устройств вместе с другими схемами, что связано с ПОС на схеме. Смоделируемую программу можно разработать в самом Proteus, MPLAB или любом другом средстве разработки.
Устройства, называемые « программистами », традиционно используются для ввода программного кода в целевой PIC. Большинство PIC, которые в настоящее время продает Microchip, имеют возможности ICSP (последовательное программирование в цепи) и / или LVP (программирование низкого напряжения), что позволяет программировать PIC, пока он находится в целевой цепи.
Microchip предлагает программаторы / отладчики серий MPLAB и PICKit. MPLAB ICD4 и MPLAB REAL ICE - нынешние программисты и отладчики для профессионального проектирования, а PICKit 3 - это недорогая линейка программаторов / отладчиков для любителей и студентов.
Многие PIC на базе флеш-памяти более высокого уровня могут также самопрограммироваться (записывать в свою собственную программную память), этот процесс известен как загрузочная загрузка. Демонстрационные платы доступны с небольшим заводским загрузчиком, запрограммированным на заводе, который можно использовать для загрузки пользовательских программ через интерфейс, такой как RS-232 или USB, что устраняет необходимость в программаторе.
В качестве альтернативы доступна прошивка загрузчика, которую пользователь может загрузить на PIC с помощью ICSP. После программирования загрузчика на PIC, пользователь может перепрограммировать устройство, используя RS232 или USB, в сочетании со специализированным компьютерным программным обеспечением.
Преимуществами загрузчика перед ICSP являются более высокая скорость программирования, немедленное выполнение программы после программирования и возможность как отладки, так и программирования с использованием одного и того же кабеля.
Существует множество программистов для микроконтроллеров PIC, от чрезвычайно простых конструкций, которые полагаются на ICSP для прямой загрузки кода с главного компьютера, до интеллектуальных программистов, которые могут проверить устройство при нескольких напряжениях питания. Многие из этих сложных программистов сами используют предварительно запрограммированный PIC для отправки команд программирования на PIC, который должен быть запрограммирован. Интеллектуальный программист необходим для программирования более ранних моделей PIC (в основном типа EPROM), которые не поддерживают внутрисхемное программирование.
Сторонние программисты варьируются от планов по созданию собственных устройств до комплектов для самостоятельной сборки и полностью протестированных готовых устройств. Некоторые из них представляют собой простые конструкции, требующие, чтобы ПК выполнял сигнализацию программирования низкого уровня (они обычно подключаются к последовательному или параллельному порту и состоят из нескольких простых компонентов), в то время как другие имеют встроенную логику программирования (обычно они используют последовательный порт ). или USB-соединение, обычно быстрее и часто строятся с использованием самих PIC для управления).
Все новые устройства PIC имеют интерфейс ICD (внутрисхемной отладки), встроенный в ядро ЦП, что позволяет выполнять интерактивную отладку программы в сочетании с MPLAB IDE. Отладчики MPLAB ICD и MPLAB REAL ICE могут связываться с этим интерфейсом, используя интерфейс ICSP.
Однако эта система отладки имеет свою цену, а именно ограниченное количество точек останова (1 на старых устройствах, 3 на новых устройствах), потеря некоторых операций ввода-вывода (за исключением некоторых 44-контактных PIC для поверхностного монтажа, которые имеют выделенные линии для отладки). и потеря некоторых встроенных функций.
Некоторые устройства не имеют встроенной поддержки отладки из-за стоимости или отсутствия контактов. Некоторые более крупные микросхемы также не имеют модуля отладки. Для отладки этих устройств требуется специальная версия микросхемы -ICD, установленная на дочерней плате, которая предоставляет выделенные порты. Некоторые из этих отладочных микросхем могут работать как несколько типов микросхем за счет использования выбираемых перемычек на дочерней плате. Это позволяет заменить в целом идентичные архитектуры, не содержащие все периферийные устройства на кристалле, на один кристалл -ICD. Например: 12F690-ICD будет функционировать как одна из шести различных частей, каждая из которых имеет одно, некоторые или все пять периферийных устройств на кристалле.
Microchip предлагает три полноценных эмулятора : MPLAB ICE2000 (параллельный интерфейс, доступен преобразователь USB); более новый MPLAB ICE4000 (подключение USB 2.0); и совсем недавно REAL ICE (соединение USB 2.0). Все такие инструменты обычно используются вместе с MPLAB IDE для интерактивной отладки исходного кода кода, выполняемого на целевом компьютере.
В проектах PIC могут использоваться операционные системы реального времени, такие как FreeRTOS, AVIX RTOS, uRTOS, Salvo RTOS или другие аналогичные библиотеки для планирования задач и определения приоритетов.
Открытый исходный код Сергея Вакуленко адаптирует 2.11BSD к архитектуре PIC32 под названием RetroBSD. Таким образом, микроконтроллер получает знакомую Unix-подобную операционную систему, включая встроенную среду разработки, в пределах ограничений встроенного оборудования.
Parallax произвел серию микроконтроллеров, подобных PICmicro, известных как Parallax SX. В настоящее время снят с производства. Разработанные так, чтобы быть архитектурно подобными микроконтроллерам PIC, используемым в исходных версиях BASIC Stamp, микроконтроллеры SX заменили PIC в нескольких последующих версиях этого продукта.
SX от Parallax - это 8-битные микроконтроллеры RISC, использующие 12-битное командное слово, которые работают быстро на частоте 75 МГц (75 MIPS). Они включают до 4096 12-битных слов флэш-памяти и до 262 байтов оперативной памяти, восьмибитный счетчик и другую вспомогательную логику. Существуют программные библиотечные модули для эмуляции интерфейсов I²C и SPI, UART, генераторов частоты, счетчиков измерений, а также ШИМ и сигма-дельта аналого- цифровых преобразователей. Другие интерфейсы относительно легко написать, а существующие модули можно модифицировать для получения новых функций.
Российский ПКК Миландр производит микроконтроллеры, использующие архитектуру PIC17 как серию 1886 года. Программная память состоит из флэш-памяти объемом до 64 Кбайт в 1886ВЕ2U ( русский язык : 1886ВЕ2У) или 8кбайт EEPROM в 1886VE5U ( 1886ВЕ5У). Модели 1886ВЕ5У ( 1886ВЕ5У) - 1886VE7U ( 1886ВЕ7У) предназначены для военного температурного диапазона от -60 ° C до +125 ° C. Аппаратные интерфейсы в различных частях включают USB, CAN, I2C, SPI, а также аналого-цифровые и цифро-аналоговые преобразователи. 1886ВЭ3У ( 1886ВЕ3У) содержит аппаратный ускоритель для криптографических функций по ГОСТ 28147-89. Есть даже радиационно- стойкие микросхемы с обозначениями 1886ВЕ8У ( 1886ВЕ8У) и 1886VE10U ( 1886ВЕ10У).
Корпорация ELAN Microelectronics на Тайване производит линейку микроконтроллеров на основе архитектуры PIC16 с 13-битными инструкциями и меньшим (6-битным) адресным пространством RAM.
Holtek Semiconductor производит большое количество очень дешевых микроконтроллеров (всего 8,5 цента в количестве) с 14-битным набором команд, поразительно похожим на PIC16.
Многие сверхдешевые микроконтроллеры OTP от азиатских производителей, используемые в недорогой бытовой электронике, основаны на архитектуре PIC или модифицированной форме. Большинство клонов нацелены только на базовые части (PIC16C5x / PIC12C50x). Microchip безуспешно пыталась подать в суд на некоторых производителей, когда копирование было особенно вопиющим.