stringtranslate.com

PIC-микроконтроллеры

PIC-микроконтроллеры в корпусах DIP и QFN.
16-битный 28-контактный микроконтроллер PDIP PIC24 рядом с метрической линейкой
Кристалл 8-битного, полностью статического CMOS- микроконтроллера на базе EEPROM / EPROM / ROM PIC12C508 , изготовленного компанией Microchip Technology с использованием 1200- нанометрового процесса .
Кристалл 8-битного микроконтроллера на базе PIC16C505 CMOS ROM , изготовленного Microchip Technology с использованием 1200- нанометрового процесса.

PIC (обычно произносится как [pʰɪk] ) — это семейство микроконтроллеров , созданных компанией Microchip Technology , созданных на основе PIC1650 [1] [2], первоначально разработанного подразделением Microelectronics компании General Instrument . Название PIC первоначально относилось к контроллеру периферийного интерфейса [3] и в настоящее время расширено до «Программируемый интеллектуальный компьютер» . [4] Первые части семейства были доступны в 1976 году; к 2013 году компания поставила более двенадцати миллиардов отдельных деталей, используемых в самых разных встраиваемых системах . [5]

Первоначально PIC предназначался для использования с General Instrument CP1600 , первым коммерчески доступным однокристальным 16-битным микропроцессором . У CP1600 была сложная шина, с которой было трудно взаимодействовать, а PIC был представлен как сопутствующее устройство, предлагающее ПЗУ для хранения программ, ОЗУ для временной обработки данных и простой ЦП для управления передачей. Хотя это давало значительную мощность, маркетинг GI был ограничен, и CP1600 не имел успеха. Когда в 1985 году компания выделила свое подразделение по производству микросхем и образовала Microchip, продажи CP1600 практически прекратились. К этому времени PIC сформировал собственный крупный рынок и стал одним из основных продуктов новой компании.

Ранние модели имели ПЗУ-маску только для хранения кода, но вскоре оно было модернизировано для использования EPROM , а затем EEPROM , что позволило конечным пользователям программировать устройства на своих собственных объектах. Все текущие модели используют флэш-память для хранения программ, а новые модели позволяют 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 популярны как среди промышленных разработчиков, так и среди любителей из-за их низкой стоимости, широкой доступности, большой базы пользователей, обширной коллекции замечаний по применению, наличия недорогих или бесплатных инструментов разработки, последовательного программирования и возможности перепрограммируемой флэш-памяти. .

История

Оригинальная концепция

Различные старые (EPROM) микроконтроллеры PIC

Оригинальный PIC предназначался для использования с новым 16-битным центральным процессором (ЦП) General Instrument CP1600 . Чтобы уместить 16-битные шины данных и адреса в стандартную на тот момент 40-контактную микросхему с двойным входом (DIP), обе шины использовали один и тот же набор из 16 соединительных контактов. Для связи с ЦП устройствам приходилось наблюдать за другими контактами ЦП, чтобы определить, является ли информация на шине адресом или данными. Поскольку одновременно был представлен только один из них, устройствам приходилось наблюдать за шиной, чтобы перейти в адресный режим, проверять, является ли этот адрес частью отображаемого в памяти диапазона ввода/вывода , «фиксировать» этот адрес, а затем ждать, пока режим данных, чтобы включить его, а затем прочитать значение. Кроме того, 1600 использовал несколько внешних контактов для выбора устройства, с которым он пытается связаться, что еще больше усложняло интерфейс.

Поскольку устройства сопряжения с 1600 могут быть сложными, GI также выпустила серию вспомогательных микросхем со всей необходимой встроенной схемой. В их число входили драйверы клавиатуры, интерфейсы кассетной деки для хранения данных и множество подобных систем. Для более сложных систем GI представила 8-битный PIC в 1975 году. Идея заключалась в том, что устройство будет использовать PIC для управления всем взаимодействием с CP1600 главного компьютера, но также использовать собственный внутренний процессор для управления фактическим устройством, которым оно является. подключен к. Например, дисковод гибких дисков может быть реализован с PIC, взаимодействующим с процессором с одной стороны, и контроллером гибких дисков с другой. В соответствии с этой идеей то, что сегодня будет известно как микроконтроллер , PIC включало в себя небольшой объем постоянной памяти (ПЗУ), в которую записывался код контроллера пользовательского устройства, и отдельное оперативное запоминающее устройство (ОЗУ) для хранения данных. буферизация и работа с данными. Они были подключены отдельно, что делало PIC системой Гарвардской архитектуры , в которой код и данные управлялись по разным внутренним каналам.

Теоретически комбинация 1600 ЦП и контроллеров устройств PIC обеспечивала очень высокопроизводительную систему управления устройствами, аналогичную по мощности и производительности контроллерам каналов, которые можно увидеть на мейнфреймах . Например, в примере с контроллером гибких дисков один PIC может управлять дисководом, обеспечивать разумную степень буферизации для повышения производительности, а затем передавать данные на главный компьютер и обратно с помощью прямого доступа к памяти (DMA) или с помощью относительно простого кода на языке процессор. Обратной стороной этого подхода была стоимость; хотя PIC не был необходим для низкоскоростных устройств, таких как клавиатура, для многих задач потребовался бы один или несколько PIC для создания полноценной системы.

Несмотря на то, что концепция дизайна имела ряд привлекательных особенностей, General Instrument никогда не продвигала 1600 на рынке, предпочитая иметь дело только с крупными клиентами и игнорируя рынок бюджетных инструментов. Это привело к очень небольшому распространению системы: Intellivision стала единственной действительно широко используемой системой, насчитывающей около трех миллионов единиц. Когда в 1985 году GI выделила свое подразделение по производству микросхем и сформировала Microchip Technology , производство CP1600 прекратилось. Однако к этому времени у PIC образовался большой рынок клиентов, использующих его для самых разных ролей, и PIC стал одним из основных продуктов новой компании.

После 1600 г.

В 1985 году General Instrument продала свое подразделение микроэлектроники , и новые владельцы отказались от почти всего, что к тому времени по большей части устарело. Однако PIC был модернизирован внутренней СППЗУ для создания программируемого контроллера каналов . В то же время Plessey в Великобритании выпустила процессоры NMOS под номерами PIC1650 и PIC1655 на основе конструкции GI, использующие одни и те же наборы команд, либо программируемые по маске пользователя, либо версии, предварительно запрограммированные для автодозвона и клавиатурных интерфейсов. [6]

В 1998 году компания Microchip представила PIC 16F84, программируемую и стираемую версию своего успешного последовательного программируемого PIC16C84. В 2001 году Microchip представила больше устройств с программированием флэш-памяти, полное производство которых началось в 2002 году. [7]

Сегодня доступно огромное разнообразие PIC с различной встроенной периферией ( модулями последовательной связи , UART , ядрами управления двигателями и т. д.) и программной памятью от 256 слов до 64 тыс. слов и более («слово» — это одна инструкция языка ассемблера). , длина которого варьируется от 8 до 16 бит , в зависимости от конкретного семейства PIC micro).

PIC и PICmicro теперь являются зарегистрированными торговыми марками Microchip Technology. Обычно считается, что PIC означает « контроллер периферийного интерфейса» , хотя первоначальная аббревиатура General Instruments для первоначальных устройств PIC1640 и PIC1650 была « программируемый контроллер интерфейса ». [3] Аббревиатура была быстро заменена на « Программируемый интеллектуальный компьютер ». [4]

Microchip 16C84 ( PIC16x84 ), представленный в 1993 году, был первым [8] процессором Microchip со встроенной памятью EEPROM.

К 2013 году Microchip поставляла более одного миллиарда микроконтроллеров PIC ежегодно. [5] [ сомнительно ]

Семейства устройств

Микрочипы 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. Устройства категории «С» с кварцевыми окнами (для защиты от УФ-излучения) больше не выпускаются.

PIC10 и PIC12

Эти устройства имеют 12-битную кодовую память, 32-байтовый регистровый файл и крошечный двухуровневый стек вызовов. Они представлены серией PIC10, а также некоторыми устройствами PIC12 и PIC16. Базовые устройства доступны в корпусах с числом контактов от 6 до 40 контактов.

Обычно первые 7–9 байтов файла регистров представляют собой регистры специального назначения, а остальные байты представляют собой ОЗУ общего назначения. Указатели реализуются с использованием пары регистров: после записи адреса в FSR (регистр выбора файла) регистр INDF (косвенный f) становится псевдонимом адресованного регистра. Если реализовано банковское ОЗУ, номер банка выбирается по старшим 3 битам FSR. Это влияет на номера регистров 16–31; Регистры 0–15 являются глобальными и на них не влияют биты выбора банка.

Из-за очень ограниченного регистрового пространства (5 бит) 4 редко читаемым регистрам не были назначены адреса, а записаны специальными инструкциями ( OPTIONи TRIS).

Адресное пространство ПЗУ равно 512 и может указывать адреса только в первой половине каждой страницы из 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 кГц.

PIC16

Микрочип PIC16C58A
PIC16LF870 в разъеме SOIC

Эти устройства оснащены 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, недостаточны для адресации доступного пространства ПЗУ.

PIC17

Серия PIC17 так и не стала популярной и была заменена архитектурой PIC18 (однако см. клоны ниже). Серия PIC17 не рекомендуется для новых разработок, и ее доступность может быть ограничена для пользователей.

Улучшениями по сравнению с более ранними ядрами являются 16-битные коды операций (позволяющие использовать множество новых инструкций) и 16-уровневый стек вызовов. Устройства PIC17 выпускались в корпусах от 40 до 68 контактов.

Серия PIC17 представила ряд важных новых функций: [9]

Существенным ограничением было то, что пространство ОЗУ было ограничено 256 байтами (26 байтов регистров специальных функций и 232 байта ОЗУ общего назначения), с неудобным переключением банков в моделях, которые поддерживали больше.

PIC18

В 2000 году Microchip представила архитектуру PIC18. В отличие от серии PIC17, она оказалась очень популярной, и в настоящее время производится большое количество вариантов устройств. В отличие от более ранних устройств, которые чаще всего программировались на языке ассемблера , преобладающим языком разработки стал C. [10]

Серия PIC18 унаследовала большинство функций и инструкций серии PIC17, добавив при этом ряд важных новых функций:

Пространство ОЗУ составляет 12 бит, адресация которого осуществляется с помощью 4-битного регистра выбора банка (BSR) и 8-битного смещения в каждой инструкции. Дополнительный бит «доступа» в каждой инструкции выбирает между банком 0 ( a =0) и банком, выбранным BSR ( a =1).

Для регистров STATUS, WREG и BSR также доступен одноуровневый стек. Они сохраняются при каждом прерывании и могут быть восстановлены при возврате. Если прерывания отключены, их также можно использовать при вызове/возврате подпрограммы, установив бит s (добавив к инструкции «, FAST»).

Функция автоматического увеличения/уменьшения была улучшена за счет удаления управляющих битов и добавления четырех новых косвенных регистров на каждый FSR. В зависимости от того, к какому косвенному файловому регистру осуществляется доступ, можно выполнять постдекремент, постинкремент или предварительный инкремент FSR; или сформируйте эффективный адрес, добавив W к FSR.

В более продвинутых устройствах PIC18 доступен «расширенный режим», который делает адресацию еще более удобной для скомпилированного кода:

Устройства PIC18 все еще разрабатываются (2021 г.) и оснащены CIP (Core Independent Peripherals).

PIC24 и dsPIC

В 2001 году Microchip представила серию микросхем dsPIC [11] , которая поступила в массовое производство в конце 2004 года. Это первые 16-битные микроконтроллеры Microchip. Устройства PIC24 спроектированы как микроконтроллеры общего назначения. Устройства dsPIC дополнительно включают в себя возможности цифровой обработки сигналов .

Несмотря на то, что они по-прежнему похожи на более ранние архитектуры PIC, имеются значительные улучшения: [12]

Некоторые особенности:

dsPIC можно программировать на языке C с использованием компилятора Microchip XC16 (ранее называвшегося C30), который является вариантом GCC .

ПЗУ инструкций имеет ширину 24 бита. Программное обеспечение может обращаться к ПЗУ в 16-битных словах, где четные слова содержат младшие 16 бит каждой инструкции, а нечетные слова содержат старшие 8 бит. Старшая половина нечетных слов читается как ноль. Счетчик программ имеет ширину 23 бита, но младший бит всегда равен 0, поэтому имеется 22 изменяемых бита.

Инструкции бывают двух основных разновидностей, причем наиболее важные операции (сложение, xor, сдвиг и т. д.) допускают обе формы:

Линия на базе PIC32M MIPS

PIC32MX

В ноябре 2007 года компания Microchip представила семейство 32-битных микроконтроллеров PIC32MX, основанных на процессоре MIPS32 M4K Core . [13] Устройство можно запрограммировать с помощью компилятора C Microchip MPLAB для микроконтроллеров PIC32 [ постоянная мертвая связь ] , варианта компилятора GCC. Первые 18 моделей, выпускаемых в настоящее время (PIC32MX3xx и PIC32MX4xx), совместимы по выводам и имеют тот же набор периферийных устройств, что и семейство PIC24FxxGA0xx (16-разрядных) устройств, что позволяет использовать общие библиотеки, программные и аппаратные средства. Сегодня доступен полный ассортимент 32-битных микроконтроллеров среднего класса, начиная с 28-контактных в небольших корпусах QFN и заканчивая высокопроизводительными устройствами с Ethernet, CAN и USB OTG.

Архитектура PIC32 привнесла в портфолио Microchip ряд новых функций, в том числе:

ПИК32МЗ

В ноябре 2013 года компания Microchip представила серию микроконтроллеров PIC32MZ, основанных на ядре MIPS M14K. В серию PIC32MZ входят: [15] [16]

В 2015 году компания Microchip выпустила семейство PIC32MZ EF с использованием обновленного процессора MIPS M5150 Warrior M-класса. [17] [18]

В 2017 году компания Microchip представила семейство PIC32MZ DA со встроенным графическим контроллером, графическим процессором и 32 МБ DDR2 DRAM. [19] [20]

ПИК32ММ

В июне 2016 года Microchip представила семейство PIC32MM, специализирующееся на маломощных и недорогих приложениях. [21] PIC32MM имеет независимые от ядра периферийные устройства, режимы ожидания до 500 нА и корпуса размером 4 x 4 мм. [22] В микроконтроллерах PIC32MM используется MIPS Technologies M4K, 32-битный процессор MIPS32 . Они предназначены для очень низкого энергопотребления и ограничены частотой 25 МГц. Их ключевым преимуществом является поддержка 16-битных инструкций MIPS, что делает размер программы намного компактнее (около 40%).

ПИК32МК

Компания Microchip представила семейство PIC32MK в 2017 году, специализирующееся на управлении двигателями, промышленном управлении, промышленном Интернете вещей (IIoT) и многоканальных приложениях CAN. [23]

Основная архитектура

Архитектура PIC характеризуется множеством атрибутов:

Нет никакого различия между пространством памяти и пространством регистров, поскольку ОЗУ выполняет функции как памяти, так и регистров, и ОЗУ обычно называют просто файлом регистров или просто регистрами.

Пространство данных (ОЗУ)

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

Для реализации косвенной адресации используются «регистр выбора файла» (FSR) и «косвенный регистр» (INDF). Номер регистра записывается в FSR, после чего операции чтения или записи в INDF фактически будут осуществляться из регистра или в регистр, на который указывает FSR. Более поздние устройства расширили эту концепцию с помощью пост- и предварительного инкремента/декремента для большей эффективности доступа к последовательно хранящимся данным. Это также позволяет рассматривать FSR почти как указатель стека (SP).

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

Кодовое пространство

Пространство кода обычно реализуется как встроенное ПЗУ , СППЗУ или флэш-ПЗУ . В общем случае хранение кода во внешней памяти не предусмотрено из-за отсутствия интерфейса внешней памяти. Исключением являются PIC17 и некоторые устройства PIC18 с большим количеством контактов. [25]

Размер слова

Все PIC обрабатывают (и адресуют) данные 8-битными фрагментами. Однако единица адресации кодового пространства обычно не совпадает с единицей адресации пространства данных. Например, PIC в базовом (PIC12) и среднем (PIC16) семействах имеют программную память, адресуемую с тем же размером слова, что и ширина инструкции, т.е. 12 или 14 бит соответственно. Напротив, в серии PIC18 память программ адресуется с шагом 8 бит (байт), что отличается от ширины инструкции в 16 бит.

Для ясности: объем памяти программы обычно указывается в количестве инструкций (одно слово), а не в байтах.

Стеки

PIC имеют аппаратный стек вызовов , который используется для сохранения адресов возврата. Аппаратный стек недоступен программно на более ранних устройствах, но с появлением устройств серии PIC18 ситуация изменилась.

Аппаратная поддержка стека параметров общего назначения отсутствовала в ранних сериях, но в серии PIC18 она значительно улучшилась, что сделало архитектуру серии PIC18 более дружественной к компиляторам языков высокого уровня.

Набор инструкций

Наборы инструкций PIC варьируются от примерно 35 инструкций для PIC младшего класса до более 80 инструкций для PIC высокого класса. Набор команд включает в себя инструкции для выполнения различных операций непосредственно над регистрами, над аккумулятором и константой или над аккумулятором и регистром , а также для условного выполнения и ветвления программы.

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

Ядра PIC имеют инструкции пропуска, которые используются для условного выполнения и ветвления. Инструкции пропуска: «пропустить, если бит установлен» и «пропустить, если бит не установлен». Поскольку ядра до PIC18 имели только инструкции безусловного перехода, условные переходы реализуются путем условного пропуска (с противоположным условием), за которым следует безусловный переход. Пропуски также полезны для условного выполнения любой немедленной следующей инструкции. Инструкции по пропуску можно пропустить. Например, последовательность команд «пропустить, если A; пропустить, если B; C» выполнит C, если A истинно или B ложно.

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

В целом инструкции PIC делятся на пять классов:

Производительность

Архитектурные решения направлены на максимизацию соотношения скорости и стоимости. Архитектура 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 также должен сохраняться любым обработчиком прерываний. [27]

Разработка компилятора

Хотя доступно несколько коммерческих компиляторов, в 2008 году Microchip выпустила собственные компиляторы C, C18 и C30, для линейки процессоров 18F, 24F и 30/33F.

С 2013 года Microchip предлагает серию компиляторов XC для использования с MPLAB X. В конечном итоге Microchip откажется от своих старых компиляторов, таких как C18, и рекомендует использовать компиляторы серии XC для новых разработок. [28]

Набор инструкций 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 в названии указывает, что деталь будет работать при более низком напряжении, часто с наложенными ограничениями по частоте. [29] Детали, предназначенные специально для работы при низком напряжении в строгом диапазоне 3–3,6 В, отмечены буквой J в номере детали. Эти детали также обладают уникальной устойчивостью к вводу/выводу, поскольку они принимают входное напряжение до 5 В. [29]

Инструменты разработки

Microchip предоставляет бесплатный пакет IDE под названием MPLAB X , который включает в себя ассемблер, компоновщик, симулятор программного обеспечения и отладчик. Они также продают компиляторы C для PIC10, PIC12, PIC16, PIC18, PIC24, PIC32 и dsPIC, которые легко интегрируются с MPLAB X. Также доступны бесплатные версии компиляторов C со всеми функциями. Но в бесплатных версиях оптимизация будет отключена через 60 дней. [30]

Несколько сторонних разработчиков разрабатывают компиляторы языка C для PIC, многие из которых интегрируются с MPLAB и/или имеют собственную IDE. Полнофункциональный компилятор языка PICBASIC для программирования микроконтроллеров PIC доступен в компании meLabs, Inc. Компания «Микроэлектроника» предлагает компиляторы PIC для языков программирования C, BASIC и Pascal.

Существует графический язык программирования Flowcode , способный программировать 8- и 16-битные устройства PIC и генерировать PIC-совместимый код C. Он существует в многочисленных версиях: от бесплатной демонстрации до более полной профессиональной версии.

Proteus Design Suite способен моделировать многие популярные 8- и 16-битные устройства PIC, а также другие схемы, подключенные к PIC на схеме. Программа для моделирования может быть разработана в самом Proteus, MPLAB или любом другом инструменте разработки. [31]

Программисты устройств

Это программатор 2003 года для семейства микроконтроллеров Microchip «PIC». Он подключается кабелем RS 232 к ПК, совместимому с программным обеспечением для разработки. В 2003 году это устройство стоило 300 канадских долларов (около 200 долларов США на тот момент).

Устройства, называемые « программистами », традиционно используются для переноса программного кода в целевой 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. Например: 16F690-ICD будет функционировать как одна из шести различных частей, каждая из которых не имеет ни одного, некоторых или всех пяти встроенных периферийных устройств. [32]

Внутрисхемные эмуляторы

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-подобную операционную систему, включая встроенную среду разработки, в пределах ограничений встроенного оборудования. [33]

Клоны

Параллакс

Parallax выпустила серию PICmicro-подобных микроконтроллеров, известных как Parallax SX . В настоящее время оно прекращено. Разработанные так, чтобы быть архитектурно похожими на микроконтроллеры PIC, используемые в исходных версиях BASIC Stamp , микроконтроллеры SX заменили PIC в нескольких последующих версиях этого продукта.

SX компании Parallax — это 8-битные RISC-микроконтроллеры, использующие 12-битное командное слово и быстро работающие на частоте 75 МГц (75 MIPS). Они включают в себя до 4096 12-битных слов флэш-памяти и до 262 байт оперативной памяти , восьмибитный счетчик и другую вспомогательную логику. Существуют модули библиотеки программного обеспечения для эмуляции интерфейсов I²C и SPI , UART, генераторов частоты, счетчиков измерений, а также ШИМ- и сигма-дельта аналого-цифровых преобразователей. Другие интерфейсы относительно легко написать, а существующие модули можно модифицировать для получения новых функций.

ПКК Миландр

1886ВЕ2У

Российский ПКК «Миандр» производит микроконтроллеры с использованием архитектуры PIC17 серии 1886 года. [34] [35] [36] [37] Память программ состоит из флэш-памяти объемом до 64 КБ в 1886ВЕ2У ( русский : 1886ВЕ2У ) или до 8 КБ EEPROM в 1886ВЕ5У ( 1886ВЕ5У ). Модели от 1886ВЭ5У ( 1886ВЕ5У ) до 1886ВЭ7У ( 1886ВЕ7У ) рассчитаны на военный температурный диапазон от -60 °C до +125 °C. Аппаратные интерфейсы в различных частях включают USB, CAN, I2C, SPI, а также аналого-цифровые и цифро-аналоговые преобразователи. 1886ВЭ3У ( 1886ВЕ3У ) содержит аппаратный ускоритель криптографических функций по ГОСТ 28147-89 . Существуют даже радиационно-стойкие микросхемы с обозначениями 1886ВЭ8У ( 1886ВЕ8У ) и 1886ВЭ10У ( 1886ВЕ10У ). [38]

ЭЛАН Микроэлектроника

Корпорация ELAN Microelectronics на Тайване производит линейку микроконтроллеров на основе архитектуры PIC16 с 13-битными инструкциями и меньшим (6-битным) адресным пространством ОЗУ. [39]

Холтек Полупроводник

Holtek Semiconductor производит большое количество очень дешевых микроконтроллеров [40] (всего 8,5 центов [ 41] ) с 14-битным набором команд, поразительно похожим на PIC16.

Другие производители в Азии

Многие сверхдешевые микроконтроллеры OTP от азиатских производителей, встречающиеся в недорогой бытовой электронике, основаны на архитектуре PIC или в ее модифицированной форме. Большинство клонов нацелены только на базовые части (PIC16C5x/PIC12C50x). Компания Microchip безуспешно пыталась подать в суд на некоторых производителей, когда копирование было особенно вопиющим, [42] [43] . [44] [45] [ нужен лучший источник ]

Смотрите также

Рекомендации

  1. ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 23 марта 2012 г. Проверено 29 июня 2011 г.{{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  2. ^ «Генеалогическое древо PICmicro», Презентация семинара PIC16F «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 2 марта 2012 г. Проверено 2 августа 2011 г.{{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  3. ^ ab "MOS DATA 1976", Справочник General Instrument 1976 г.
  4. ^ ab «Каталог данных 1977 года», Микроэлектроника от General Instrument Corporation, «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 15 августа 2011 г. Проверено 2 августа 2011 г.{{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  5. ^ Аб Лоусон, Эрик (16 мая 2013 г.). «Microchip Technology поставляет 12-миллиардный микроконтроллер PIC® ведущему производителю двигателей, Nidec Corporation». Пресс-релиз компании Microchip. Архивировано из оригинала 21 июля 2013 года . Проверено 21 декабря 2017 г. Microchip поставила этот 12-миллиардный микроконтроллер примерно через 10 месяцев после поставки 11-миллиардного.
  6. ^ Справочник по интегральным схемам спутникового и кабельного телевидения Плесси, май 1986 г.
  7. Данн, Д. (31 августа 2001 г.). «Микрочип предлагает флэш-память по ценам OTP». ЭТаймс .
  8. ^ «Зал славы чипов: микроконтроллер PIC 16C84 Microchip Technology» . IEEE-спектр . 30 июня 2017 года . Проверено 16 сентября 2018 г.
  9. ^ «Технические данные микроконтроллера PIC17C4x» (PDF) . Микрочиповая технология. 1996. DS30412C . Проверено 16 августа 2016 г.
  10. ^ «Микрочипы PIC и C - исходный код и пример кода» . www.microchipc.com . Проверено 7 апреля 2018 г.
  11. ^ «ТЕХНОЛОГИЯ MICROCHIP ДЕБЮТ САМЫХ ПРОИЗВОДИТЕЛЬНЫХ В МИРЕ 16-БИТНЫХ МИКРОКОНТРОЛЛЕРОВ» . Микрочип. 01.10.2001. Архивировано из оригинала 11 июня 2004 г. Проверено 14 декабря 2022 г.
  12. ^ «Обзор семейства PIC24H» (PDF) . Проверено 23 сентября 2007 г.
  13. ^ «MIPS32® M4K® Core - Технологии MIPS - MIPS Everywhere - Технологии MIPS» . Архивировано из оригинала 2 февраля 2009 г. Проверено 21 января 2009 г.
  14. ^ «32-битные микроконтроллеры PIC» . Проверено 13 октября 2010 г.
  15. ^ «32-битные микроконтроллеры — технология микрочипов» . www.microchip.com . Проверено 7 апреля 2018 г.
  16. ^ «32-битные микроконтроллеры Microchip PIC32MZ обладают лучшей в своем классе производительностью: 330 DMIPS и 3,28 CoreMarks™/МГц; плотность кода выше на 30%» . Микрочип. 18 ноября 2013 г. Архивировано из оригинала 21 ноября 2013 г. Проверено 14 декабря 2022 г.
  17. ^ «Добро пожаловать в блог Imagination» . imgtec.com . Проверено 7 апреля 2018 г.
  18. ^ "PIC32MZ EF | Технология микрочипов" .
  19. ^ «Microchip представляет первый в отрасли микроконтроллер со встроенным 2D-графическим процессором и встроенной памятью DDR2 для революционных графических возможностей» . Архивировано из оригинала 20 июля 2017 г. Проверено 9 августа 2023 г.
  20. ^ "Семейство PIC32MZ DA" . Микрочип. Архивировано из оригинала 02 апреля 2018 г. Проверено 14 декабря 2022 г.
  21. ^ «Микрочип выпускает экономичное семейство PIC32 с самым низким энергопотреблением - технология микрочипов» . www.microchip.com . Проверено 7 апреля 2018 г.
  22. ^ «Семейство PIC32MM недорогих 32-разрядных микроконтроллеров с чрезвычайно низким энергопотреблением (XLP)» . Проверено 9 августа 2023 г.
  23. ^ "Семейство PIC32MK" . Микрочип. Архивировано из оригинала 16 марта 2018 г. Проверено 14 декабря 2022 г.
  24. ^ «Паспорт данных PIC16F84A» (PDF) .
  25. ^ Ровнак, Тим (2003). «AN869: Методы взаимодействия с внешней памятью для PIC18F8XXX» (PDF) . Микрочиповая технология. DS00869B . Проверено 24 августа 2009 г.
  26. ^ «Усовершенствованный выбор деталей микрочипа» . Микрочип. Архивировано из оригинала 10 января 2016 г. Проверено 14 декабря 2022 г.
  27. ^ «Замедление 208.80.153.50,10-192-48-43&c=1&t=43197.5553483796». Massmind.org . Проверено 7 апреля 2018 г.
  28. ^ «MPLAB® XC: Решения для компиляторов» . microchip.com . Проверено 7 апреля 2018 г.
  29. ^ ab «Центр дизайна 3В» . Проверено 2 августа 2011 г.
  30. ^ «Компилятор MPLAB XC8 для микроконтроллеров PIC10/12/16/18» .
  31. ^ «Как смоделировать микроконтроллер PIC в Proteus Design Suite 8 — Галерея схем» . 02 августа 2013 г. Проверено 12 июля 2016 г.
  32. ^ Документ о микрочипе № DS51292R.
  33. ^ "старт - RetroBSD" . Retrobsd.org . Проверено 7 апреля 2018 г.
  34. ^ "Миландр K1886VE: ПИК, отправившийся в Россию" . Хижина процессора. 10 марта 2016 г. Проверено 21 июля 2016 г.
  35. ^ "Высокопроизводительные 8-ми разрядные КМОП микроконтроллеры 1886ВЕ1 и 1886ВЕ2. Отличия от ближайшего функционального аналога PIC17C756A" [Высокопроизводительные 8-битные КМОП-микроконтроллеры 1886ВЕ1 и 1886ВЕ2. Список отличий от ближайшего функционального аналога PIC17C756A.] (PDF) (на русском языке). Москва: РПК Миландр. 7 сентября 2006 г. Архивировано из оригинала (PDF) 5 февраля 2017 г. . Проверено 23 октября 2017 г.
  36. ^ «Каталог продукции группы компаний «Миландр» 2017» [Каталог продукции Группы компаний «Миландр» 2017] (PDF) (на русском языке). Москва: РПК Миландр. Архивировано из оригинала (PDF) 27 октября 2017 года . Проверено 18 апреля 2018 г.
  37. ^ "1886ая серия" [серия 1886] (на русском языке) . Проверено 21 июля 2016 г.
  38. ^ «Часть II: Как «открыть» микрочип и что внутри? Z80, Multiclet, MSP430, PIC и другие». ЗептоБарс. 21 февраля 2013 года . Проверено 11 апреля 2017 г.
  39. ^ "義隆電子股份有限公司義隆電子,再創未來!" .
  40. Карлсон, Джей (15 сентября 2017 г.). «Холтек ХТ-66». Удивительный микроконтроллер за 1 доллар . Проверено 8 июля 2019 г.
  41. Офран, Жан-Люк (3 августа 2016 г.). «Какой микроконтроллер самый дешевый? Моя попытка: 8-битный микроконтроллер Holtek HT48R002 продается за 0,085 доллара». Блог CNX Software . Проверено 8 июля 2019 г.
  42. ^ «Microchip Technology подает иск о нарушении авторских прав против MICON Design Technology CO. LTD» (PDF) (пресс-релиз). 29 января 1999 года . Проверено 23 октября 2017 г.
  43. ^ «Microchip Technology подает в суд на Shanghai Haier Integrated Circuit» (PDF) (пресс-релиз). 5 июля 2007 года . Проверено 23 октября 2017 г.
  44. ^ Фуллер, Брайан (1 мая 2013 г.). «Борьба с китайской подделкой? Забудьте об этом». Новости электронного бизнеса .
  45. ^ «Интегрированный чип Haier, выигравший патентную битву против микрочипа США» . Электронные компоненты sb2a0 (блог). 18 мая 2015 года . Проверено 8 июля 2019 г.

дальнейшее чтение

Внешние ссылки