СОДЕРЖАНИЕ Введение ....................................................... Обзор характеристик Cтруктурная схема Схема выводов Tипы корпусов и исполнений Mаркировка при заказе Разводка ножек Назначение ножек Обзор внутренних регистров f0 регистр косвенной адресации RTCC таймер/счетчик Проблемы с таймером Регистр статуса Программные флаги статуса Аппаратные флаги статуса f4 Переключатель банков ОЗУ Регистры портов Организация встроенного EEPROM PC и адресация к EEPROM Стек и возвраты из подпрограмм Организация внутреннего ОЗУ Адресация к ячейкам ОЗУ Обьем ОЗУ разных кристаллов Обзор регистров/портов Схема линии порта Проблемы программирования IO Обзор команд и обозначения Байт ориентированные команды Операции с битами Переходы Замечания и пояснения Условия сброса Внешн. сброс при вкл. питания Watch Dog таймер Генераторы в версиях OTP и UF Генератор на кварцах RC генератор Внешнее возбуждение Регистр OPTION Схема переконфигурации Управление делителем частоты Проблемы с делителем частоты Индивидуалная метка Защита от считывания 1 Вход в "Спячку" 2 Выход из "Спячки" Предельные параметры Комерческое исполнение Для промышленности Для автомобилей Характеристики линий IO Примечания Скоростные характеристики Примечания ..................................................... *** Введение ************************************************************* PIC16C5X производимый Microchip Tecnology относится к семейству КМОП микроконтроллеров с внутренним ПЗУ, которые отличаются низкой стоимостью, высокой производительностью, 8-битовыми операциями с данными. Они основаны на RISC архитектуре и программируются всего через 33 команды, шириной в одно слово ПЗУ. Кратко об особенностях см."Обзор". Все команды выполняются за один цикл (200нс). PIC16C5X имеют характеристики, на порядок превосходящие конкурирующую продукцию но находятся в той же ценовой категории. Расширенные двенадцатибитные команды приводят к сжатию кода до 2:1 по сравнению с 8-битными микроконтроллерами этого же класса. Простота изучения и применения команд экономит время разработчика. PIC16C5X имеют встроенные устройства, присущие большинству прикладных систем, что позволяет снизить стоимость, потребляемую мощность и увеличить надежность конечного устройства. Например, встроенная схема сброса и запуска генератора позволяют избавиться от внешних RC схем. Предлагается четыре типа встроенных генераторов на выбор, включая экономичный LP (Low Power) и дешевый RC генераторы. Экономичный режим SLEEP, Watchdog таймер и устройство защиты кода программы снижают стоимость и увеличивают мощность плюс надежность вашей системы. Микросхемы с ультрафиолетовым стиранием идеальны для процесса отработки программы. Одновременно существуют однократно программируемые (OTP) кристаллы. Здесь разработчик может извлечь полное преимущество из сочетания низкой цены и гибкости OTP версий. Разработка на базе контроллеров PIC16C5X поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором. Существуют все эти средства для IBM PC и совместимых компьютеров. Серия PIC16C5X подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает серию PIC16C5X привлекательной даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры. Устройства серии PIC16C5X имеют большой выбор ПЗУ и ОЗУ разных размеров, разное количество линий ввода/вывода, различные виды возбуждения генераторов, разную скорость, климатику и типы корпусов. Из четырех кристаллов PIC16C5x можно выбрать устройство с подходящими ПЗУ/ОЗУ и конфигурацией ввода/вывода. --------------------------------------------------------------------------- Название ПЗУ ОЗУ* Ввод/Вывод+ Варианты корпусов --------------------------------------------------------------------------- PIC16C54 512*12 32*8 13 18L widowed CERDIP,18L PDIP,18L SOIC,20L S PIC16C55 512*12 32*8 21 28L widowed CERDIP,28L PDIP(600 mil) 28L PDIP(300 mil),28L SOIC (300 mil),28L SS PIC16C56 1K*12 32*8 13 18L widowed CERDIP,18L PDIP,18L SOIC,20L S PIC16C57 2K*12 80*8 21 28L widowed CERDIP,28L PDIP(600 mil) 28L PDIP(300 mil),28L SOIC (300 mil),28L SS --------------------------------------------------------------------------- * включая регистры специального назначения + включая линию RTCC вход счетчика. Устройства с ультрафиолетовым стиранием удобно использовать в прототипных и опытных партиях. Конфигурация генератора ("RC", "XT", "HS", "LP") программируется самим пользователем на UF EPROM. При UF стирании или по умолчанию устанавливается тип "RC". В зависимости от выбранного типа генератора и частоты, рабочее напряжение питания должно быть в том же диапазоне, что будет и в будущем устройстве на OTP кристалле (если OTP предполагается использовать). Тип генератора кристаллах OTP устанавливается на заводе и они тестируются только для этой специальной конфигурации, включая напряжение, частоту и ток потребления, см. Маркировка. Устройства выпускаются с чистым EPROM, что позволяет пользователю самому программировать их. Кроме того, можно отключить Watchdog таймер и/или защитy кода путем программирования битов в специальном EPROM. Также доступны 16 бит для записи кода идентификации (ID). *** Обзор характеристик. ************************************************* - только 33 простых команды; - все команды выполняются за один цикл(200ns), кроме команд перехода- 2 цикла; - рабочая частота 0 Гц ... 20 МГц(200 нс цикл команды) - 12- битовые команды; - 8- битовые данные; - 512 ... 2К х 12 программной памяти на кристалле EPROM; - 25 ... 72 х 8 регистров общего использования; - 7 специальных аппаратных регистров SFR; - двухуровневый аппаратный стек; - прямая, косвенная и относительная адресация данных и команд; ┌───────────────────────┐ │Периферия и Ввод/Вывод │ └───────────────────────┘- - 12 ... 20 линий ввода-вывода с индивидуальной настройкой; - 8 - битный таймер/счетчик RTCC с 8-битным программируемым предварительным делителем; - автоматический сброс при включении; - таймер запуска генератора; - Watchdog таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность; - EPROM бит секретности для защиты кода; - экономичный режим SLEEP; - программируемые EPROM биты для установки режима возбуждения встроенного генератора: - RC генератор : RC - обычный кварцевый резонатор : XT - высокочастотный кварцевый резонатор : HS - экономичный низкочастотный кристалл : LP ┌─────────────────┐ │ КМОП технология │ └─────────────────┘ - экономичная высокоскоростная КМОП EPROM технология; - статический принцип в архитектуре; - широкий диапазон напряжений питания: - коммерческий: 2.5 ... 6.25 В - промышленный: 2.5 ... 6.25 В - автомобильный: 2.5 ... 6.0 В - низкое потребление 20 mA типично для 6В, 20МГц 2 мА типично для 5В, 4МГц 15 мкА типично для 3В, 32КГц 3 мкА типично для SLEEP режима при 3В, 0 ... 70 С *** Cтруктурная схема **************************************************** СТРУКТУРА КРИСТАЛЛОВ PIC16C5x ╔═══════════════════╗ ╔═════════╗ ╔══════════╗ ║ A L U ║ ╔══════════╗ ║ Stack 1 ║ ║ PC ║ ╟─────────┬─────────╢ ║ Register ║ ╟─────────╢▒▒▒▒║ 9-11 bit ║▒▒▒▒║ W reg │ Status ║ ║ File ║ ║ Stack 2 ║ ╚════▄▄════╝ ╚═══▄▄═══▄▄═════════╝ ╚════▄▄════╝ ╚═════════╝ ╔════▀▀════╗ ▒▒ ▒▒ ▒▒ ║ EPROM ║▒▒▒▒▒▒▒▒▒▒ ▒▒ ▒▒ ║512*12 to ║ ▒▒ 8-bit Data Bus ▒▒ ║2048 * 12 ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ╚══════════╝ ▒▒ ▒▒ ▒▒ ╔════════╗ ╔════▀▀═════╗ ╔═══TRISA═════╗ ▒▒▒║ RTCC ║ ║Option Reg.║ RA ╔═══╩══════════╗ ║ ▒▒ ╚═══╤════╝ ╚═══════════╝ ▒▒────╢ Port RA0-RA3 ║▒▒▒▒▒▒ │ ╔═══════════╗ RTCC ║ 4-bit ╠══╝ ▒▒ └────────╢ WDT/RTCC ╟─────▒▒ ╚══════════════╝ ▒▒ ┌──╢ Prescaler ║ pin ╔═══TRISB═════╗ ▒▒ │ ╚═════╤═════╝ RB ╔═══╩══════════╗ ║ ▒▒ │ ╔═════╧═════╗ ▒▒────╢ Port RB0-RB7 ║▒▒▒▒▒▒ ┌──── │──╢ WatchDog ║ ║ 8-bit ╠══╝ ▒▒ │ │ ║ Timer ║ ╚══════════════╝ ▒▒ │ │ ╚═══════════╝ OSC1 ▒▒ │ │ ╔═══════════╗ ┌───▒▒ ╔═══TRISC ════╗ ▒▒ │ └──╢Oscilator ╟─┘ OSC2 RC ╔═══╩══════════╗ ║ ▒▒ │ Sleep ║ Timing & ╟─────▒▒ ▒▒────╢ Port RC0-RC3 ║▒▒▒▒▒▒ │ ─────╢ Control ╟─┐ MCLR ║ 8-bit ║══╝ │ ╚═╤═════════╝ └───▒▒ ╚══════════════╝ │Disable │Osc.Select ╔══╧══════════╧═════════╗ Code Protect ──────╢ Configuration EPROM ║ ╚═══════════════════════╝ Архитектура основана на концепции раздельных шин и областей памяти для данных и команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 12 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. *** Схема выводов ******************************************************** Функциональное назначение выводов см."Обозначения Выводов" или Структуную Схему. Типы корпусов PDIP и др. см. "Корпуса". PDIP, SOIC PDIP, SOIC CERDIP Window CERDIP Window ┌────▄▄────┐ ┌────▄▄────┐ RA2 ▄│1 18│▄RA1 RTCC▄│1 28│▄MCLR RA3 ▄│ │▄RA0 Vdd ▄│ │▄OSC1 RTCC▄│ │▄OSC1 n/c ▄│ │▄OSC2 MCLR▄│ │▄OSC2 Vss ▄│ │▄RC7 Vss ▄│ PIC16C54 │▄Vdd n/c ▄│ │▄RC6 RB0 ▄│ 56 │▄RB7 RA0 ▄│ │▄RC5 RB1 ▄│ │▄RB6 RA1 ▄│ │▄RC4 RB2 ▄│ │▄RB5 RA2 ▄│ PIC16C55 │▄RC3 RB3 ▄│9 10│▄RB4 RA3 ▄│ 57 │▄RC2 └──────────┘ RB0 ▄│ │▄RC1 RB1 ▄│ │▄RC0 RB2 ▄│ │▄RB7 RB3 ▄│ │▄RB6 RB4 ▄│14 15│▄RB5 └──────────┘ SSOP SSOP ┌────▄▄────┐ ┌────▄▄────┐ RA2 ▄│1 20│▄RA1 Vss ▄│1 28│▄MCLR RA3 ▄│ │▄RA0 RTCC ▄│ │▄OSC1 RTCC▄│ │▄OSC1 Vdd ▄│ │▄OSC2 MCLR▄│ │▄OSC2 Vdd ▄│ │▄RC7 Vss ▄│ PIC16C54 │▄Vdd RA0 ▄│ │▄RC6 Vss ▄│ 56 │▄Vdd RA1 ▄│ │▄RC5 RB0 ▄│ │▄RB7 RA2 ▄│ │▄RC4 RB1 ▄│ │▄RB6 RA3 ▄│ PIC16C55 │▄RC3 RB2 ▄│ │▄RB5 RB0 ▄│ 57 │▄RC2 RB3 ▄│10 11│▄RB4 RB1 ▄│ │▄RC1 └──────────┘ RB2 ▄│ │▄RC0 RB3 ▄│ │▄RB7 RB4 ▄│ │▄RB6 Vss ▄│14 15│▄RB5 └──────────┘ *** Tипы корпусов и исполнений ***************************************** Обозначения корпусов для кристаллов PIC16C5x. Тип корпуса указывается в Маркировке при заказе микросхем. Корпуса бывают с 18 и с 28 Выводами. PDIP - Обычный пластмассовый двухрядный корпус. Используется для OTP EPROM версий кристаллов. CERDIP Window - Керамический двухрядный корпус с кварцевым окном. Используется для UF EPROM версий SOIC - Малогабаритный DIP корпус SSOP - Корпус для монтажа на поверхность Исполнения микросхем бывают трех типов: комерческие, для промышлености и для автомобильной электроники. Основное их отличие в температурном диапазоне и рабочем напряжении. Коммерческое исполнение Рабочая температура 0 ... +70 C Рабочее напряжение 3.0 ... 5.5 В Исполнение для промышленности Рабочая температура -40 .... +85 C Рабочее напряжение 3.0 ... 5.5 В Исполнение для автомобилей Рабочая температура-40 ... +125 C Рабочее напряжение 3.0 ... 5.5 В *** Mаркировка при заказе ********************************************** ОБОЗНАЧЕНИЯ МИКРОСХЕМ при ЗАКАЗАХ Обозначение микросхем складывается из следующих полей: <Фирм.номер>-<Тип генератора><Темпер.диапазон>/<Корпус><Примеч> Фирм.номер бывает: PIC16C54 PIC16C55 PIC16C56 PIC16C57 Тип генератора у OTP микросхем: RC, XT, HS, LP у UF версии по умолчанию принят RC, но можно пере- прграммировать Температурный диапазон бывает: - от 0С до +70С I от-40С до +85С E от-40С до +125С Корпус обозначается: P - обычный пластмассовый DIP SO -300 mil SOIC SP -28L PDIP(300 mil) SS -209 mil SSOP для поверхностного монтажа JW - UF CERDIP Window S - в кристаллодержателях ПРИМЕРЫ: PIC16C54-XT/Pxxx XT генератор, коммерческое исполнение в PDIP корпусе, масочное ПЗУ с программой xxx PIC16C55-XTI/SO XT генератор, исполнение для промышленности, SOIC-малый DIP, OTP EPROM PIC16C55-JW Комерческое исполнение UF CERDIP Window PIC17C57-RCI/P RC генератор, исполнение для промышлености, OTP EPROM *** Разводка ножек ******************************************************* Функциональное назначение выводов см."Обозначения Выводов" или Структуную Схему. Типы корпусов PDIP и др. см. "Корпуса". PDIP, SOIC PDIP, SOIC CERDIP Window CERDIP Window ┌────▄▄────┐ ┌────▄▄────┐ RA2 ▄│1 18│▄RA1 RTCC▄│1 28│▄MCLR RA3 ▄│ │▄RA0 Vdd ▄│ │▄OSC1 RTCC▄│ │▄OSC1 n/c ▄│ │▄OSC2 MCLR▄│ │▄OSC2 Vss ▄│ │▄RC7 Vss ▄│ PIC16C54 │▄Vdd n/c ▄│ │▄RC6 RB0 ▄│ 56 │▄RB7 RA0 ▄│ │▄RC5 RB1 ▄│ │▄RB6 RA1 ▄│ │▄RC4 RB2 ▄│ │▄RB5 RA2 ▄│ PIC16C55 │▄RC3 RB3 ▄│9 10│▄RB4 RA3 ▄│ 57 │▄RC2 └──────────┘ RB0 ▄│ │▄RC1 RB1 ▄│ │▄RC0 RB2 ▄│ │▄RB7 RB3 ▄│ │▄RB6 └──────────┘ SSOP SSOP ┌────▄▄────┐ ┌────▄▄────┐ RA2 ▄│1 20│▄RA1 Vss ▄│1 28│▄MCLR RA3 ▄│ │▄RA0 RTCC ▄│ │▄OSC1 RTCC▄│ │▄OSC1 Vdd ▄│ │▄OSC2 MCLR▄│ │▄OSC2 Vdd ▄│ │▄RC7 Vss ▄│ PIC16C54 │▄Vdd RA0 ▄│ │▄RC6 Vss ▄│ 56 │▄Vdd RA1 ▄│ │▄RC5 RB0 ▄│ │▄RB7 RA2 ▄│ │▄RC4 RB1 ▄│ │▄RB6 RA3 ▄│ PIC16C55 │▄RC3 RB2 ▄│ │▄RB5 RB0 ▄│ 57 │▄RC2 RB3 ▄│10 11│▄RB4 RB1 ▄│ │▄RC1 └──────────┘ RB2 ▄│ │▄RC0 RB3 ▄│ │▄RB7 RB4 ▄│ │▄RB6 Vss ▄│14 15│▄RB5 └──────────┘ *** Назначение ножек ************************************************* Обозначения ножек и их функциональное назначение ────────────────────────────────────────────────────────────── RA0 - RA3 Порт A 4- битный квазидвунаправленный порт ввода/вывода ────────────────────────────────────────────────────────────── RB0 - RB7 Порт B 8- битный квазидвунаправленный порт ввода/вывода ────────────────────────────────────────────────────────────── RC0 - RC7 Порт C 8- битный квазидвунаправленный порт ввода/вывода ────────────────────────────────────────────────────────────── RTCC Счетчик Вход через триггер Шмитта. Если не используется, подсоедините к Vss или Vdd, чтобы избежать случайных срабатываний и уменьшить потребление тока ──────────────────────────────────────────────────────────────── /MCLR Сброс Вход через триггер Шмитта. Низкий уровень на этом входе генерирует сигнал сброса для контроллеров PIC16C5X. Нарастание питающего напряжения включает встроенную выдержку на запуск генератора, которая удерживает кристалл в режиме сброса около 18 мс. Этот вход должен быть напрямую, или через резистор, подключен к Vdd. ────────────────────────────────────────────────────────────────── OSC1 Генератор Для типов "XT","HS","LP": вход для (вход) кварцевого или керамического резонатора, или вход внешней тактовой частоты. Для типа "RC": точка подключения внешней RC цепочки. ──────────────────────────────────────────────────────────────────── OSC2 Генератор Для типов "XT","HS","LP": выход кварцевого /CLKOUT (выход) или керамического резонанатора. Не подключайте любую другую нагрузку к этому выходу. Оставьте свободным, если используется внешний тактовый генератор. Для типа "RC": на этом выходе присутствует сигнал "CLKOUT", его частота составляет 1/4 Fosc1. Можно использовать. ───────────────────────────────────────────────────────────────────── Vdd Напряжение питания Vss Общий(земля) N/C Не используется ───────────────────────────────────────────────────────────────────── *** Обзор внутренних регистров *************************************** 8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметическо-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора банка (f4). Непосредственная адресация к константам организуется при помощи специальных команд, которые загружают в рабочий регистр W данные из программной памяти. Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора банка(f4), регистр конфигурации и управления пределителем частоты. Регистры общего назначения используются для хранения переменных пользователя. *** f0 регистр косвенной адресации ************************************** (f0). Переключатель контекста косвенной адресации В кристаллах серии PIC16C5x переключение контекстов не предусмотренно и поэтому (f0) указывает ВСЕГДА только на один регистр -указатель косвенной адресации (f4). Например, при команде ADDWF f0,W ,содержимое регистра, адрес которого хранится в (f4) будет добавляться к содержимому регистра W. Так как в серии PIC16C5x (f0) не является регистром физически, то при чтении из него получите 00H, при записи- ничего не произойдет. ПРИМЕЧАНИЕ. У последующих моделей PIC регистр (f0) позволяет переключать контексты косвенной адресации, нпример при прерываниях. *** RTCC таймер/счетчик ********************************************* (f1). Таймер/счетчик. В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4). Структурная схема содержит элемент "MUX"- это электронный переключатель. ║║ 8-bit Clkout=Fosc/4 ───┬──────────────────────┐ ║║ Data Bus │ ╔═══╗ ╔═══╗ ╔══╧═══╗ ╔════╩╩═════╗ RTCCpin╔═══╗ └──╢MUX╟─┬───╢MUX╟──╢ SYNC ╟──╢ RTCC ║ ▒▒▒────╢XOR╟─────────╢ ║ │ ┌─╢ ║ ║ ║ ╚═══════════╝ ┌─╢ ║ ╚═╤═╝ │ │ ╚═╤═╝ ╚══════╝ │ ╚═══╝ │ │ │ │ RTE RTS │ │ PSA ┌─────────────────────┘ └───────────────────┐ │ ╔═══╗ ╔═══════════════════╗ │ └────╢MUX╟───╢ 8-bit Counter ║ │ ╔══════╗ ┌─╢ ║ ╚═╤═╤═╤═╤═╤═╤═╤═╤═╤═╝ │ ║Watch ║ │ ╚═╤═╝ │ │ │ │ │ │ │ │ │ │ ║ Dog ╟─┤ │ ╔═╧═╧═╧═╧═╧═╧═╧═╧═╧═╗ PS0-PS2 │ ║Timer ║ │ PSA ║ 8-to-1 MUX ╠══════ │ ╚══════╝ │ ╚════════╤══════════╝ │ │ ├─────────────────────┘ │ │ ╔═══╗ │ └────╢MUX╟───── WD └───────────────────────╢ ║ Time Out ╚═╤═╝ PSA Для того, чтобы 8-битовый пределитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи спец."Option" команды. Если пределитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, напр. ClrF1, BSF1,5 ... и т.п.) - очищают его. Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов,- это или внутренний источник или внешний. RTS = 1: Сигналом синхронизации для таймера/счетчика RTCC или для пределителя, если он подключен к RTCC, является сигнал, поступающий на ножку RTCC корпуса. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на ножке RTCC. RTS = 0: Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита "RTE" в регистре Option и сигнал на ножке RTCC не имеют значения. Однако ножку RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления. Пока на таймер/счетчик RTCC поступают синхроимпульсы, (не важно внешние или внутренние, подключен пределитель к RTCC или нет), регистр f1- RTCC инкрементируется и по достижении значения "0FFH" сбрасывается в 0 и продолжает счет. Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр. MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF f1,W. Проблемы с таймером Проблемы могут возникнуть при счете внешних сигналов. Эти сигналы стробируются внутренним сигналом синхронизации, см. схему SYNC. Образуется некоторая задержка между фронтом входного сигнала и моментом инкрементирования RTCC. Cтробирование производится после пределителя. Выход пределителя опрашивается дважды в течение каждого командного цикла, чтобы определить положительный и отрицательный фронты входного сигнала. Поэтому сигнал Psout должен иметь высокий и низкий уровень не менее двух периодов синхронизации. Когда пределитель не используется, Psout повторяет входной сигнал, поэтому требоввания к нему следующие: Trth= RTCC high time >= 2 tosc+20ns Trtl= RTCC low time >= 2 tosc+20ns. Когда пределитель используется, на вход RTCC подается сигнал, поделенный на число, установленное в счетчике делителя. Сигнал после пределителя всегда симметричен. Psout high time = Psout low time = N*Trt/2, где Trt- входной период RTCC, N- значение счетчика делителя (2,4...256). В этом случае требования к входному сигналу можно выразить так: N*Trt/2 >= 2 tosc +20ns или Trt >= (4tosc + 40ns)/N. Когда используется пределитель, низкий и высокий уровень сигнала на его входе должны быть не менее 10 нс. Таким образом общие требования к внешнему сигналу, когда делитель подключен таковы: Trt= RTCC period >= (4tosc + 40ns)/N Trth = RTCC high time >= 10ns Trtl = RTCC low time >= 10ns. Так как выход пределителя синхронизируется внутренним сигналом тактовой частоты, то существует небольшая задержка между появлением фронта внешнего сигнала и временем фактического инкремента RTCC. Эта задержка находится в диапазоне между 3*tosc и 7*tosc. Таким образом измерение интервала между событиями будет выполнено с точностью 4*tosc (+-200нс при кварце 20 МГц). (f3) Регистр статуса. Регистр (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для программ с обьемом памяти превышающим 512 слов (PIC16C56/PIC16C57). (f3) доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3= 000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса можно посмотреть в "Описании команд". Биты 5-6 регистра статуса определяются как биты адреса страниц PA0-PA1 программной памяти(только для PIC16C56/PIC16C57 !!!). Когда исполняются команды GOTO, CALL и команды, когда программный счетчик изменяется, например MOVWF 2, биты адреса страниц PA0-PA1 загружаются в биты программного счетчика A9-A10. Таким образом, прямой адрес, указанный в слове команды, указывает на место внутри определенной страницы памяти. Команда RETLW не изменяет биты выбора страниц. После сигнала "Сброс" биты регистра статуса PA0-PA1 обнуляются. Программные флаги статуса Размещение флагов в регитсре статуса следующее: b7 b6 b5 b4 b3 b2 b1 b0 ┌─────┬─────┬─────┬────┬────┬───┬────┬───┐ f3 = │ PA2 │ PA1 │ PA0 │ TO │ PD │ Z │ DC │ C │ └─────┴─────┴─────┴────┴────┴───┴────┴───┘ ┌───┐ │ C │ - Флаг переноса/заема: └───┘ Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из самого старшего разряда происходит перенос. Вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит всегда загружается из младшего или старшего бита сдвигаемого источника. ;----------------------Пример ;SUBWF Example #1 ; clrf 0x20 ;f(20h)=0 movlf 1 ;wreg=1 subwf 0x20 ;f(20h)=f(20h)-wreg=0-1=FFh ;Carry=0: Результат отрицательный. ;SUBWF Example #2 ; movlw 0xFF movwf 0x20 ;f(20h)=FFh clrw ;wreg=0 subwf 0x20 ;f(20h)=f(20h)-wreg=FFh-0=FFh ;Carry=1: Результат положительный. ┌────┐ │ DC │ - Флаг десятичного переноса/заема: └────┘ Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате операции из четвертого разряда происходит перенос. Механизм установки десятичного бита переноса "DC" тот же самый, отличается тем, что отслеживается перенос из четвертого бита. ┌───┐ │ Z │ - Флаг нулевого результата: └───┘ Устанавливается, если результатом арифметической или логической операции является ноль. ┌────┐ │ PD │ - Power Down ( режим хранения данных) : └────┘ Устанавливается в "1" при включении питания или команде CLRWDT. Сбрасывается в "0" командой SLEEP. ┌────┐ │ TO │ - Time Out. Флаг срабатывания Watchdog таймера: └────┘ Устанавливается в "1" при включению питания и командами CLRWDT, SLEEP. Сбрасывается в "0" по завершению выдержки времени таймера WDT. ┌─────────┐ │ PA0, PA1│ - .......... └─────────┘ Для кристаллов PIC16C54/C55 - это биты общего назначения. Для PIC16C56: PA0 - Бит выбора страницы 0= Страница 0 (000-1FF) 1= Страница 1 (200-3FF) PA1 - Бит общего назначения. Для PIC16C57: PA1,PA0 - оба бита выбора страниц: 00= Страница 0 (000-1FF) 01= Страница 1 (200-3FF) 10= Страница 2 (400-5FF) 11= Страница 3 (600-7FF) ┌──────┐ │ PA2 │ - Бит общего назначения (зарезервировано для будущих └──────┘ разработок) Аппаратные флаги статуса Аппаратные Биты статуса TO (Time Out) и PD (Power Down). По состоянию битов регистра статуса "TO" и "PD" можно определить, чем был вызван "Сброс": - просто включением питания, - срабатыванием таймера watchdog, - выходом из режим а пониженного энергопотребления (Sleep) в результате срабатывания watchdog таймера, - по внешнему сигналу /MCLR. На состояние этих битов могут повлиять только следующие события: ────────────────┬───┬─────┬───────────────────────────────── События │ TO│ PD │ Примечание └───────────────┼───┼─────┼────────────────────────────────── Включение │ 1 │ 1 │ - WDT timeout │ 0 │ Х │ Не воздействует на бит PD Sleep команда │ 1 │ 0 │ - CLRWDT команда │ 1 │ 1 │ - ────────────────┴───┴─────┴────────────────────────────────── Примечание: Событие WDT timeout происходит независимо от состояния TO бита. Sleep команда выполняется независимо от состояния PD бита. Ниже показаны состояния битов TO и PD после "Сброса" ────┬────┬──────────────────────────────────────────────── TO │ PD │ "Сброс" был вызван следующими событиями ────┼────┼──────────────────────────────────────────────── 0 │ 0 │ Выход из SLEEP по завершению задержки Watchdog 0 │ 1 │ Завершение задержки Watchdog ( Не режим SLEEP) 1 │ 0 │ Выход из SLEEP по внешнему сигналу /MCLR 1 │ 1 │ Включение питания X │ X │ "0"-Импульс на входе /MCLR ────┴────┴──────────────────────────────────────────────── Примечание: Биты TO и PD сохраняют текущее состояние до тех пор, пока не произойдет одно из событий перечисленных в таблице. "0"-Импульс низкого уровня на входе кристалла /MCLR не не изменяет состояние битов TO и PD. f4 Переключатель банков ОЗУ (f4). Указатель при косвенной адресации Для PIC16C54/C55/C56: Биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57. Биты 5 и 6 регистра (f4) определяют номер текущего банка данных. ┌────────────────────────────────────────────┐ 00 │ Переключатель косвен. адресации f0 │ 01 │ ───┬─── RTCC f1 │ 02 │ │ PC f2 │ ════╗ 03 │ │ Status f3 │ ║ 04 │ └───── Pointer ═════════════ f4 ════════════╣ 05 │ Port A f5 │ ║ 06 │ Port B f6 │ ║ 07 │ Port C f7 │ ║ 08 │ .. user │ ║ . │ .. │ ════╣ . │ .. │ ║ 0F │ .. user │ ║ ├─────────┬──────────┬──────────┬────────────┤ ║ 10 │ │ │ │ │ ║ 11 │ Bank 0 │ Bank 1 │ Bank 2 │ Bank 3 │ ║ 12 │ │ │ │ │ ════╝ . │ │ │ │ │ . │ .. user │ .. user │ .. user │ .. user │ 1F │ │ │ │ │ └─────────┴──────────┴──────────┴────────────┘ Первые 16 байт каждого банка представляют собой физчески одни и те же регистры. Только, когда бит 4 у (f4) установлен в единицу (указывает на следующие 16 байт),- биты 5 и 6 выбирают один из четырех банков по 16 регистров каждый. Бит 7 регистра (f4) не используется и всегда читается как единица. Регистры портов. Регистры ввода/вывода. ( Порты ). Регистры ввода/вывода могут управляться, как любые другие регистры. Однако, команда "чтение" (например MOVF 6,W) всегда считывает фактический уровень сигнала на ножке порта, независимо от того, определен этот порт как ввод, как вывод или кто-то "навалился" снаружи. После сигнала "Сброс" все порты ввода/вывода устанавливаются на "ввод" (электрически эквивалентно третьему состоянию), а управляющие регистры ввода/вывода (TRISA, TRISB, TRISC) устанавливаются в единицы( конфигурация на ввод). Для того, чтобы конфигурировать некоторые ножки порта на вывод, необходимо установить соответствующие биты в нужном TRIS регистре в "0". Это можно делать командой "TRIS f". (f5). Порт А. Порт А является 4-битовым портом ввода/вывода. Используются только младшие 4 бита (RA0-RA3). Старшие биты 4-7 всегда читаются как нули. (f6). Порт B. Является 8-битовым портом ввода/вывода. (f7). Порт С. Для PIC16C55/C57: 8-битовый порт ввода/вывода. Для PIC16C54/C56: внутренний регистр памяти( не порт) общего назначения. Организация встроенного EEPROM Встроенная программная память (EPROM) имеет ширину слова 12 бит. Прямо адресованы могут быть до 512 слов программной памяти. Программная память большего обьема адресуется постранично, путем выбора одной из четырех доступных страниц, длиной 512 слов каждая. Переключением страниц заведуют биты в статус регистре. Последовательность выполнения программы контроллируется программным счетчиком (PC), который автоматически инкрементируется во время исполнения программы. Управление ходом программы, c поддержкой разных режимов адресации( непосредственная, косвенная, относительная), может осуществляеться следующими командами: проверка бита и перескок (Bit Test and Skip), вызов подпрограммы (Call), безусловный переход (Goto), загрузка вычисленного адреса в программный счетчик. Встроенный двухуровневый стек используется для возврата из вложенных подпрограмм. PC и адресация к EEPROM (f2). Программный счетчик Программный счетчик обеспечивает доступ к 12-битным ячейкам встроенной постоянной памяти (EPROM), длина которой может быть до 2048 ячеек. В зависимости от типа PIC, програмный счетчик (PC) и соответствующий двухуровневый аппаратный стек имеют ширину от 9 до 11 бит. Ширина программного счетчика и стека. ───────────────────┬───────────────┬───────────────┐ │ Ширина PC │ Ширина стека │ ───────────────────┼───────────────┼───────────────┤ PIC16C54/PIC16C55 │ 9 бит │ 9 бит │ PIC16C56 │ 10 бит │ 10 бит │ PIC16C57 │ 11 бит │ 11 бит │ ───────────────────┴───────────────┴───────────────┘ При cбросе, все биты программного счетчика устанавливаются в единицы. В процессе выполнения программы PC автоматически инкрементируется при выполнении каждой команды, если команда сама не изменит его в следующих случаях: 1) при исполнении команды "GOTO" в программный счетчик загружаются младшие 9 бит (PC <8:0>). В случае использования PIC16C56 или PIC16C57, в старшие два бита программного счетчика (PC <10:9>) загружаются биты выбора страниц PA1 и PA0 (биты 6,5 регистра статуса). При помощи GOTO можно переместиться в любое место любой страницы. 2) при исполнении команды "CALL" в программный счетчик загружаются младшие 8 бит, в то время как девятый бит обнуляется. Значение PC, увеличенное на единицу, будет сохранено в стеке. В случае PIC16C56/PIC16C57, в старшие два бита PC (PC <10:9>) загружаются биты выбора страниц PA1,PA0 (биты 6,5 регистра статуса). 3) команда "RETLW" выгружает в программный счетчик содержимое из вершины стека. 4) если программный счетчик задействован в команде (напр. MOVWF 2, ADDWF 2, BSF 2,5), то 8 бит результата исполнения команды будут загружены в младшие 8 бит программного счетчика. Девятый бит PC будет обнулен. В случае PIC16C56/PIC16C57, в старшие биты PC<10,9> будут загружены биты выбора страниц PA1,PA0 (биты 6,5 в регистре статуса). Так как девятый бит программного счетчика обнуляется при исполнении команды CALL или команд, записывающих свой результат в PC, то вызов подпрограмм или осуществление вычисляемого перехода ограничены первой половиной страницы программной памяти, т.е. первые 256 адресов. ПРИМЕЧАНИЕ к выбору страниц.(Относится только к PIC16C56/PIC16C57). ---------- Когда программный счетчик показывает на последний адрес страницы, то после инкрементирования он будет показывать на первый адрес следующей страницы. Однако, биты выбора страниц в регистре cтатуса(f3) не изменятся и следующие по ходу программы команды "GOTO", "CALL", "ADDWF 2" будут возвращать программу на предыдущюю страницу до тех пор, пока не будут программно изменены биты выбора страниц в регистре cтатуса(f3). Например, при исполнении команды "NOP", расположенной по адресу "1FFH" (страница 0), программный счетчик увеличится до "200H" (уже страница 1), но команда "GOTO xxx", расположенная по адресу "200H", вернет программу на адрес "xxx" на странице 0 (т.к. биты выбора страниц в регистре f3 останутся=0). По сигналу "Сброс" устанавливается нулевая страница памяти, а биты программного счетчика устанавливаются в "1", указывая на последний адрес первой страницы. Таким образом, команда "GOTO XXX", записанная по этому адресу, автоматически вызовет продолжение программы с места XXX страницы "0". Стек и возвраты из подпрограмм В кристаллах PIC16C5X используется двухуровневый аппаратный стек. Это означает, что он может хранить одновременно не более двух адресов возврата. Команда "CALL" инкрементирует текущее значение программного счетчика и записывает его в стек на уровень 1. При записи на уровень 1 стека его предыдущее значение автоматически записывается на уровень 2. Если вызывается более двух вложенных подпрограмм, то только два последних адреса возврата будут сохранены. В модификациях PIC16C56/PIC16C57, при исполнении команды "CALL" биты выбора страниц из регистра статуса (f3) загружаются в старшие значащие разряды программного счетчика. Девятый бит всегда обнуляется. Это означает, что подпрограмма всегда должна быть расположена в нижней половине страницы памяти (по адресам 000h...0FFh, 200h...2FFh, 400h...4FFh, 600h...6FFh). Однако, так как стек имеет ту же ширину, что и программный счетчик, то подпрограммы могут вызываться из любого места программы и возврат будет происходить корректно. При исполнении команды "RETLW" в программный счетчик выгружается содержимое стека первого уровня. Одновременно содержимое стека второго уровня копируется в стек первого уровня. Если исполняются более двух команд "RETLW" друг за другом, в стеке обоих уровней будет записано значение второго уровня. Для модификаций PIC16C56/PIC16C57 возврат из подпрограммы всегда будет на ту страницу, из которой подпрограмма была вызвана, несмотря на текущее значение битов выбора страниц в регистре (f3). Обратите внимание, что в W регистр будет загружаться константа, которая предусмотрена в команде "RETLW" ( код возврата у процедуры функции). Это в частности используется для организации таблиц данных в программной памяти. Организация внутреннего ОЗУ 8 - битовая шина данных соединяет два основных функциональных элемента вместе: набор регистров, который может быть длиной до 80 адресуемых 8-битовых регистров (включая порты) и 8-битное арифметическо-логическое устройство. Первые 32 байта ОЗУ адресуются прямо и называются "Банк 0". Если кристалл PICа имеет увеличенную память, то она наращивается банками по 16 байт в каждом. Данные могут адресоваться прямо или косвенно через регистр выбора банка (f4). Непосредственная адресация к константам организуется при помощи специальных команд, которые загружают в рабочий регистр W данные из программной памяти. Все регистры могут быть разделены на две функциональные группы: регистры специальных функций и регистры общего назначения. К регистрам специальных функций относятся: счетчик реального времени или внешних событий (RTCC), программный счетчик (PC), регистр статуса, регистры ввода/вывода, регистр выбора банка(f4), регистр конфигурации и управления пределителем частоты. Регистры общего назначения используются для хранения переменных пользователя. Адресация к ячейкам ОЗУ (f4). Указатель при косвенной адресации Для PIC16C54/C55/C56: Биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57. Биты 5 и 6 регистра (f4) определяют номер текущего банка данных. ┌────────────────────────────────────────────┐ 00 │ Переключатель косвен. адресации f0 │ 01 │ ───┬─── RTCC f1 │ 02 │ │ PC f2 │ ════╗ 03 │ │ Status f3 │ ║ 04 │ └───── Pointer ═════════════ f4 ════════════╣ 05 │ Port A f5 │ ║ 06 │ Port B f6 │ ║ 07 │ Port C f7 │ ║ 08 │ .. user │ ║ . │ .. │ ════╣ . │ .. │ ║ 0F │ .. user │ ║ ├─────────┬──────────┬──────────┬────────────┤ ║ 10 │ │ │ │ │ ║ 11 │ Bank 0 │ Bank 1 │ Bank 2 │ Bank 3 │ ║ 12 │ │ │ │ │ ════╝ . │ │ │ │ │ . │ .. user │ .. user │ .. user │ .. user │ 1F │ │ │ │ │ └─────────┴──────────┴──────────┴────────────┘ Первые 16 байт каждого банка представляют собой физчески одни и те же регистры. Только, когда бит 4 у (f4) установлен в единицу (указывает на следующие 16 байт),- биты 5 и 6 выбирают один из четырех банков по 16 регистров каждый. Бит 7 регистра (f4) не используется и всегда читается как единица. Обьем ОЗУ разных кристаллов Регистры общего назначения для целей пользователя Для PIC16C54/C55/C56: Регистры с адресами f= 08H...1FH являются регистрами общего назначения. Только для PIC16C57: Адреса регистров в PIC16C57 распределены следующим образом: 08h - 0Fh : регистры общего назначения,которые выбираются всегда вне зависимости от номера выбранного банка. 10h - 1Fh : регистры общего назначения, когда выбран банк 0. 20h - 2Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 30h - 3Fh : регистры общего назначения, когда выбран банк 1. 40h - 4Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 50h - 5Fh : регистры общего назначения, когда выбран банк 2. 60h - 6Fh : регистры физически идентичные регистрам f 00h - f 0Fh. 70h - 7Fh : регистры общего назначения, когда выбран банк 3. Обзор регистров/портов Регистры ввода/вывода. ( Порты ). Регистры ввода/вывода могут управляться, как любые другие регистры. Однако, команда "чтение" (например MOVF 6,W) всегда считывает фактический уровень сигнала на ножке порта, независимо от того, определен этот порт как ввод, как вывод или кто-то "навалился" снаружи. После сигнала "Сброс" все порты ввода/вывода устанавливаются на "ввод" (электрически эквивалентно третьему состоянию), а управляющие регистры ввода/вывода (TRISA, TRISB, TRISC) устанавливаются в единицы( конфигурация на ввод). Для того, чтобы конфигурировать некоторые ножки порта на вывод, необходимо установить соответствующие биты в нужном TRIS регистре в "0". Это можно делать командой "TRIS f". (f5). Порт А. Порт А является 4-битовым портом ввода/вывода. Используются только младшие 4 бита (RA0-RA3). Старшие биты 4-7 всегда читаются как нули. (f6). Порт B. Является 8-битовым портом ввода/вывода. (f7). Порт С. Для PIC16C55/C57: 8-битовый порт ввода/вывода. Для PIC16C54/C56: внутренний регистр памяти( не порт) общего назначения. Схема линии порта Защелка для бита данных ┌─────┐ Vdd от шины данных──┤D │ │ │ │ ┌────┐ ┌─┘ Write ───┤C /Q├───┬──┤ ├───┤│ └─────┘ ┌─│──┤XOR │ └─┐ Вывод │ │ └────┘ │ порта Это один из бит TRIS рег│ │ ├────┬───▒▒ ┌─────┐ │ │ │ │ от W рег.───┤D Q├─┘ │ ┌────┐ ┌─┘ │ │ │ └─┤ ├────┤│ │ ───┤C /Q├─────┤AND │ └─┐ │ по команде"TRIS f" └──R──┘ └────┘ │ │ │Reset Vss │ ┌────┐ │ на шину данных─────────────┤ 1 ├────────────┘ │ ├─ Read └────┘ При операциях ввода порты не защелкиваются. Входной сигнал должен присутствовать пока идет процесс чтения (напр. MOVF 6, W). При операциях вывода порты защелкиваются и сохраняют значение до тех пор пока не будут пезаписаны. На рисунке не показаны диоды, которые защищают ножку порта от внешних импульсов большого напряжения. Они ограничивают импульсное напряжение на ножке значениями от Vss - 0,6 до Vdd + 0,6 В. Если статическое напряжение, по каким либо причинам, выйдет за указанные пределы, то возникнут большие статические токи, способные вывести кристалл из строя. Проблемы программирования IO Проблемы при организации двунаправленных портов ----------------------------------------------- Некоторые команды внутренне выполняются как чтение+запись. Например, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. Например, команда BSF для бита 5 регистра f6 (порт В) сначала считает все восемь бит. Затем выполняются действия над битом 5 и новое значение байта целиком записывается в выходные защелки. Если другой бит регистра f6 используется в качестве двунаправленного ввода/вывода (скажем бит 0) и в данный момент он определен как входной, входной сигнал на этой ножке будет считан и записан обратно в выходную защелку этой-же ножки, затирая ее предыдущее состояние. До тех пор пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако, если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным. На ножку, работающую в режиме вывода, не должны "наваливаться" внешние источники токов("монтажное И", "монтажное ИЛИ"). Результирующие большие токи могут повредить кристалл. Причину см. выше Для выводов типа "монтажное ИЛИ" (подразумевается инверсная логика), рекомендуется использовать резисторы, соединенные с плюсом источника питания. Эта ножка должна находиться в третьем состоянии до тех пор, пока не будет выведен ноль. Тогда и внешние устройства смогут устанавливать ноль на этой же ножке. Выводы типа "монтажное И" могут быть реализованы аналогично, только резисторы соединяются с "землей". Ножка должна находиться в третьем состоянии пока не выводится единица. Значения резисторов выбираются пользователем, но не следует превышать выходные токи сверх указанных пределов (см. статические электрические характеристики). Последовательное обращение к портам ввода/вывода. ------------------------------------------------- Запись в порт вывода происходит в конце командного цикла. Но при чтении, данные должны быть стабильны в начале командного цикла. Будьте внимательны в операциях чтения, следующих сразу за записью в тот же порт. Здесь надо учитывать инерционность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения. Работа в условиях помех. ------------------------ Прикладное окружение, имеющее высокий уровень помех( например клавиатура с электростатическим разрядом), может вызвать неконтроллируемое изменение состояния портов и, следовательно, хода программы. Обычно встроенный Watchdog таймер обрабатывает ситуации, связанные с "зацикливанием" программы. Однако, если будет испорчено содержимое управляющего регистра ввода/вывода TRIS, то ножка I/O, используемая как ввод может переключиться в режим вывода. Тогда программа всегда будет считывать одно и то же значение этой ножки. Это может привести, например, к "запиранию" клавиатуры, а Watchdog таймер не выработает сигнал сброса потому, что программный опрос происходит правильно. Здесь рекомендуется регулярно устанавливать все ножки ввода/вывода через определенные промежутки времени ( как входы, так и выходы ). Радикальный выход - обновлять содержимое управляющего регистра ввода/вывода перед каждым чтением или записью в порт. Обзор команд и обозначения Каждая команда PIC16С5х - это 12-битовое слово, которое разделено по смыслу на части: - 1. код операции, -2. поле для одного или более операндов, которые участвуют или нет в этой команде. Система команд PIC16С5х включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления. Для байт-ориентированных команд "f" обозначает собой регистр, с которым производится действия. "f" обозначает один из 32 регистров PICа, который будет использовать команда с учетом текущего номера банка. "d" - бит определяет, куда положить результат. Если "d" =0 результат будет находиться в W регистре, "d"=1 результат будет находиться в "f", упомянутом в команде. Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а "f" -это регистр текущего банка, в котором этот бит расположен. Для команд передачи управления и опреаций с константами, "k" обозначает восьми или девятибитную константу. Все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: -1. исполнение условной команды, -2. проверка условия и переход. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс. Байт ориентированные команды Байт-ориентированные команды. ───────────────────────────────────────────────────── Мнемокод Название Примечания команды ───────────────────────────────────────────────────── ADDWF f,d Сложение W с f 1,2,4 ANDWF f,d Логическое И W и f 2,4 CLRF f Сброс регистра f 4 CLRW - Сброс регистра W - COMF f,d Инверсия регистра f 2,4 DECF f,d Декремент регистра f 2,4 DECFSZ f,d Декремент f, пропустить 2,4 команду, если 0 INCF f,d Инкремент регистра f 2,4 INCFSZ f,d Инкремент f, пропустить 2,4 команду, если 0 IORWF f,d Логическое ИЛИ W и f 2,4 MOVF f,d Пересылка регистра f 2,4 MOVWF f Пересылка W в f 1,4 NOP - Холостая команда - RLF f,d Сдвиг f влево через перенос 2,4 RRF f,d Сдвиг f вправо через перенос 2,4 SUBWF f,d Вычитание W из f 1,2,4 SWAPF f,d Обмен местами тетрад в f 2,4 XORWF f,d Исключающее ИЛИ W и f 2,4 ANDLW k Логическое И константы и W - IORLW k Логическое ИЛИ константы и W - MOVLW k Пересылка константы в W - OPTION Загрузка W в OPTION регистр - TRIS f Загрузка TRIS регистра 3 XORLW k Исключающее ИЛИ константы и W - ───────────────────────────────────────────────────── Операции с битами Бит ориентированные команды ────────────────────────────────────────────────────────── Мнемокод Название Примечания ────────────────────────────────────────────────────────── BCF f,b Сброс бита в регистре f 2,4 BSF f,b Установка бита в регистре f 2,4 BTFSC f,b Пропустить команду, - если бит равен нулю BTFSS f,b Пропустить команду, - если бит равен единице ────────────────────────────────────────────────────────── Переходы Переходы ────────────────────────────────────────────────────────────── Мнемокод Название Примечания ────────────────────────────────────────────────────────────── CALL k Вызов подпрограммы 1 CLRWDT Сброс Watchdog таймера - GOTO k Переход по адресу - RETLW k Возврат из подпрограммы с - загрузкой константы в W SLEEP Переход в режим SLEEP - ────────────────────────────────────────────────────────────── Замечания и пояснения Примечание 1: Девятый бит программного счетчика будет обнулен любой командой, которая осуществляет запись в программный счетчик (f2) (например, CALL,MOVWF 2 и т.д.), кроме команды GOTO. Подробности смотрите в разделе "PC" Примечание 2: Когда модифицируется регистр ввода/вывода ( например MOVF 6, 1 ), значение, используемое для модификации считывается непосредственно с ножек кристалла. Например, если значение защелки вывода для ножки, запрограммированной на вывод равно "1", но внешний сигнал на этом выводе "0" из-за "навала" снаружи, то этот "0" считываться с порта. Примечание 3: Команда "TRIS f" , где f=5,6 или 7 записывает содержимое регистра W в защелки указанного порта. "1" устанавливает линию на ввод и электрически в третье состояние. Примечание 4: Если операндом этой команды является регистр f1 (и, если допустимо, d=1), то делитель, если он подключен к RTCC, будет обнулен. Условия сброса "Сброс" может быть вызван включением питания, подачей сигнала на вводе /MCLR кристалла или при срабатывании Watchdog таймера. Устройство будет находиться в состоянии сброса все время пока действует таймер запуска генератора или сигнал на /MCLR имеет низкий уровень. Во время действия сигнала "Сброс" состояние кристалла следующее: - Генератор работает или готов к запуску ( включение или выход из SLEEP). - Все ножки портов ввода/вывода кристалла устанавливаются в третье состояние, путем установки регистров "TRIS" в "единицы"(означает режим ввода). - Все биты программного счетчика устанавливаются в "единицы" ( в случае PIC16C54/55 программный счетчик равен 1FFh, для PIC16C56 програмный счетчик равен 3FFh, PIC16C57 - программный счетчик равен 7FFh). - Биты регистра "OPTION" устанавливаются в "единицы". - Watchdog таймер и его делитель обнуляются. - Старшие три бита статус-регистра (биты выбора страниц) обнуляются. - только для типа RC генераторов. Сигнал CLKOUT на ножке OSC2 удерживается в "0". Генератор, построенный на кварцевых или керамических резонаторах, требует обязательной задержки после включения питания для обеспечения стабильной генерации. Для этого, встроенный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на /MCLR ножке кристалла достигнет уровня логической единицы. Таким образом, внешняя цепочка RC , связанная с ножкой /MCLR во многих случаях не требуется. Wathdog также использует таймер запуска. Это важно для случаев, где WDT используется для автоматического вывода PIC16C5X из режима SLEEP. В кристаллах с низкой частотой, где требуется более 18 мс для обеспечения стабильной генерации, использования встроенного таймера запуска- недостаточно. Внешн. сброс при вкл. питания Кристаллы PIC16C5X имеет встроенную схему сбоса при включении питания. Чтобы использовать эту схему, надо просто подключить ножку /MCLR к напряжению питания Vdd. Таймер запуска начинает счет выдержки времени только если /MCLR достиг высокого уровня. По истечении этой выдержки ( в среднем 18 мс) процесс внутреннего сброса завершается. Здесь существует проблема, когда Vdd нарастает слишком медленно и выдержка на запуск генератора завершилась, а питание еще не достигло своего минимального значения Vdd(min) работоспособности. Встроенная схема сброса обеспечивает работу если скорость нарастания Vdd при включении не ниже 0.05 В/мс. Необходимо также, чтобы исходный уровень питания был равен 0В. Встроенная схема сброса также не будет работать с низкочастотными кристаллами, которые требуют выдержку на запуск, значительно больше чем 18 мс. В таких случаях рекомендуем использовать внешние RC цепочки для сброса по /MCLR. Ниже приведена такая цепочка │Vdd ├ ▒ R │░ ▒ │░ │ R1 │░ ├────▒▒▒▒▒──────┤/MCLR C│ │░ ═╪═ │░ │ ▀▀▀▀▀ Vss Здесь можно применить диод для быстрого разряда конденсатора при выключении питания. На резисторе R < 40 кОМ не должно падать более 0,2В. Резистор 100 Ом < R1 < 1кОм ограничит ток в ножку /MCLR. Watch Dog таймер Watchdog таймер. Watchdog таймер представляет собой полностью готовый встроенный RC генератор. Он будет работать, даже если основной генератор остановлен, как это бывает при исполнении команды SLEEP. Таймер вырабатывает сигнал сброса. Выработка таких сбросов может быть запрещена путем записи нуля в специальный бит, который расположен вне программной памяти EPROM. Эту операцию производят на этапе прожига микросхем. Выдержка времени WDT. Номинальная выдержка WDT составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, от особенностей типа микросхемы. Если требуются большие задержки, то к WDT может быть подключен делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд. Команды "CLRWDT" и "SLEEP" обнуляют WDT и делитель, если он подключен к WDT. Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала сброс. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит "TO" в регистре статуса (f3). В приложениях с высоким уровнем помех, содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени. Следует учесть, что наихудшей комбинации являются: Vdd=min, температура=max и max коэффициент деления делителя,- приводит к самой большой выдержке времени, она может достигать нескольких секунд. Генераторы в версиях OTP и UF Типы генераторов. В продаже имеются ОТР кристаллы PIC16C5X с четырьмя различными встроенными генераторами. Наоборот, в UF перепрограммируемых кристаллах требуемая схема встроенного генератора задается путем программирования специальных EPROM бит. Кристаллы PIC16... могут также тактироваться и от внешних источников. Генератор на кварцах Кварцевый генератор. PIC16C5X-XT, -HS или -LP требуют подключения кварцевого или керамического резонатора к выводам OSC1 и OSC2. C1 ┌───┤├────┬──────────> OSC1 │ │ │ ───┴──── ┌─────┤ ▒▒▒▒ XTAL │ │ ───┬──── ▀▀▀ │ C2 │ Rs Vss └───┤├────┴───▒▒▒▒───< OSC2 Маркировка следующая: XT - стандартный кварцевый генератор, HS - высокочастотный кварцевый генератор, LP - низкочастотный генератор для экономичных приложений. Резистор Rs может потребоваться для генератора "HS", особенно при частотах ниже 20 МГц для гашения гармоник. Он также может потребоваться в режиме XT с резонатором типа AT strip-cut. Выбор конденсаторов для керамического резонатора. ----------------------------------------------- Тип Частота Конденсатор генератора резонатора С1=С2 ----------------------------------------- 455 КГц 150 - 330 пФ XT 2 МГц 20 - 330 пФ 4 МГц 20 - 330 пФ ----------------------------------------- HS 8 МГц 20 - 200 пФ ----------------------------------------- Выбор конденсатора для кварцевого генератора --------------------------------------------------------- Тип Частота Конденсатор Конденсатор генератора С1 С2 -------------------------------------------------------- LP 32 КГц 15 пФ 15 пФ -------------------------------------------------------- XT 100 КГц 15 - 30 пФ 200 - 300 пФ 200 КГц 15 - 30 пФ 100 - 200 пФ 455 КГц 15 - 30 пФ 15 - 100 пФ 1 МГц 15 - 30 пФ 15 - 30 пФ 2 МГц 15 пФ 15 пФ 4 МГц 15 пФ 15 пФ --------------------------------------------------------- HS 4 МГц 15 пФ 15 пФ 8 МГц 15 пФ 15 пФ 20 МГц 15 пФ 15 пФ --------------------------------------------------------- Более высокая емкость будет увеличивать стабильность генератора, но также будет увеличивать время запуска. Значения приведены для ориентировки. В режимах HS и XT, чтобы избежать гармоник может потребоваться последовательный резистор Rs. RC генератор RC генератор. Когда не предъявляются требования к быстродействию и к точности по времени, ОТР кристалл, например PIC16C5X-RC, позволяет сэкономить деньги и реализовать RC генератор. Vdd │ ▒ Rext │░ ▒ │░ │ │░ ├────────────────────────┤OSC1 Cext │ │░ ═╪═ ClockOut │░ │ Fosc/4 <────┤OSC2 ▀▀▀▀▀ │░ Vss Частота есть функция питающего напряжения, значений резистора Rext, конденсатора Cext и температуры. Кроме того, частота генератора будет незначительно изменяться от партии к партии. На частоту генерации влияет собственная емкость корпуса кристалла, ее влияние заметно для малых значений Cext. Нужно принять во внимание также дрейф R и C элементов. Для значений Rext ниже 2.2 кОМ генератор может работать нестабильно или не заводиться. При очень больших значениях Rext ( напр. 1 МОм) генератор становится чувствительным к помехам, влажности и монтажным утечкам тока. Рекомендуемая величина Rext находится между 5 КОм и 100 КОм. Хотя генератор работоспособен и при отсутствии внешнего конденсатора (Cext = 0), мы рекомендуем использовать емкость более 20 пФ для увеличения стабильности работы. С малой Cext, или вообще без нее, частота генератора сильно зависит от монтажных емкостей. Разброс будет тем больше, чем больше величина R (так как влияние токов утечки на частоту RC генератора сильнее при больших R) и чем меньше величина C (так как в этом случае сильнее проявляется влияние монтажных емкостей). Сигнал с частотой генератора, деленной на 4, присутствует на ножке OSC2/CLKOUT, и может быть использован для целей тестирования или синхронизации других схем. Внешнее возбуждение Cхема подключения внешнего возбуждения. ╔══╗ │░ ▄▀▄▀▄▀▄ >──────╢ 1║────────┤OSC1 ╚══╝ │░ │░ оставьте <───────┤OSC2 свободным │░ Регистр OPTION Регистр конфигурации пределителя и RTCC. Значениями битов в этом регистре (он не имеет адреса!) определяется подключение пределителя к RTCC или WDT), коэфф. его деления, источник счетных импульсов, выбирается фронт сигнала для RTCC. Регистр OPTION предназначен только для записи и имеет ширину 6 бит. Во время исполнения команды "OPTION" содержимое регистра W загружается в этот регистр. По сигналу "Сброс" все биты этого регистра устанавливаются в единицы. b5 b4 b3 b2 b1 b0 ┌─────┬─────┬─────┬─────┬─────┬─────┐ Option= │ RTS │ RTE │ PSA │ PS2 │ PS1 │ PS0 │ ┴─────┴─────┴─────┴─────┴─────┴─────┘ Биты PS2...PS0 настройка пределителя ─────────────────────┬───Коэффициенты деления ───── PS2...PS0 │ RTCC │ WDR ─────────────────────┼───────────────┼────────────── 0 0 0 │ 1 : 2 │ 1 : 1 0 0 1 │ 1 : 4 │ 1 : 2 0 1 0 │ 1 : 8 │ 1 : 4 0 1 1 │ 1 : 16 │ 1 : 8 1 0 0 │ 1 : 32 │ 1 : 16 1 0 1 │ 1 : 64 │ 1 : 32 1 1 0 │ 1 : 128 │ 1 : 64 1 1 1 │ 1 : 256 │ 1 : 128 ─────────────────────┴───────────────┴────────────── PSA- Бит, указывающий, что делитель работает с: 0 - RTCC 1 - WDT RTE- Фронт сигнала RTCC: 0 - инкремент по положительному фронту на ножке RTCC 1 - инкремент по отрицательному фронту на ножке RTCC RTS- Источник сигнала для RTCC: 0 - сигнал от внутреннего генератора 1 - Внешний сигнал на ножке RTCC Схема переконфигурации (f1). Таймер/счетчик. В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4). Структурная схема содержит элемент "MUX"- это электронный переключатель. ║║ 8-bit Clkout=Fosc/4 ───┬──────────────────────┐ ║║ Data Bus │ ╔═══╗ ╔═══╗ ╔══╧═══╗ ╔════╩╩═════╗ RTCCpin╔═══╗ └──╢MUX╟─┬───╢MUX╟──╢ SYNC ╟──╢ RTCC ║ ▒▒▒────╢XOR╟─────────╢ ║ │ ┌─╢ ║ ║ ║ ╚═══════════╝ ┌─╢ ║ ╚═╤═╝ │ │ ╚═╤═╝ ╚══════╝ │ ╚═══╝ │ │ │ │ RTE RTS │ │ PSA ┌─────────────────────┘ └───────────────────┐ │ ╔═══╗ ╔═══════════════════╗ │ └────╢MUX╟───╢ 8-bit Counter ║ │ ╔══════╗ ┌─╢ ║ ╚═╤═╤═╤═╤═╤═╤═╤═╤═╤═╝ │ ║Watch ║ │ ╚═╤═╝ │ │ │ │ │ │ │ │ │ │ ║ Dog ╟─┤ │ ╔═╧═╧═╧═╧═╧═╧═╧═╧═╧═╗ PS0-PS2 │ ║Timer ║ │ PSA ║ 8-to-1 MUX ╠══════ │ ╚══════╝ │ ╚════════╤══════════╝ │ │ ├─────────────────────┘ │ │ ╔═══╗ │ └────╢MUX╟───── WD └───────────────────────╢ ║ Time Out ╚═╤═╝ PSA Для того, чтобы 8-битовый пределитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи спец."Option" команды. Если пределитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, напр. ClrF1, BSF1,5 ... и т.п.) - очищают его. Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов,- это или внутренний источник или внешний. RTS = 1: Сигналом синхронизации для таймера/счетчика RTCC или для пределителя, если он подключен к RTCC, является сигнал, поступающий на ножку RTCC корпуса. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на ножке RTCC. RTS = 0: Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита "RTE" в регистре Option и сигнал на ножке RTCC не имеют значения. Однако ножку RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления. ока на таймер/счетчик RTCC поступают синхроимпульсы, (не важно внешние или нутренние, подключен пределитель к RTCC или нет), регистр f1- RTCC нкрементируется и по достижении значения "0FFH" сбрасывается в 0 и родолжает счет. Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр. MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF f1,W. Делитель. 8 - битный счетчик используется или как пределитель перед RTCC или как делитель частоты после Watchdog таймера. Если делитель подсоединен к RTCC, то он не может быть подключен к watchdog таймеру и наоборот. Биты PSA и PS0 - PS2 в регистре OPTION определяют включение делителя и устанавливают его коэффициент деления. Пределитель может подключаться по-разному.Когда он присоединен к RTCC, все команды производящие запись в RTCC (например, CLRF 1, MOVWF 1, BSF 1,x... и т.д.) будут одновременно обнулять и делитель. Когда делитель подключен к WDT, команда CLRWDT также обнулит делитель вместе с Watchdog таймером. Подключение делителя- прграммно управляемое. Чтобы избежать несанкционированного сигнала "Сброс" во время переключения делителя с RTCC на WDT, надо выполнить определенную последовательность команд. 1. MOVLW B`xx0x0xxx` ;выбрать внутреннюю синхронизацию и новое ;значение для делителя. Если новое значение ;делителя равно 2. OPTION ;`000` или `001`, то надо временно выбрать ;другое значение делителя. 3. CLRF 1 ;обнулить RTCC и делитель. 4. MOVLW B`xxxx1xxx` ;выбрать WDT, не изменяя значения делителя. 5. OPTION 6. CLRWDT ;обнулить WDT и делитель. 7. MOVLW B`xxxx1xxx` ;выбрать новое значение для делителя. 8. OPTION Пункты 1 и 2 требуются, когда к RTCC был подключен внешний источник. Пункты 7 и 8, когда в делитель требуется загрузить величину `000` или `001`. Переключение делителя с WDT на RTCC. ------------------------------------------------- 1. CLRWDT ;обнулить WDT и делитель. 2. MOVLW B`xxxx0xxx` ;выбрать RTCC, новое значение для делителя ;источник сигнала. 3. OPTION Код идентификации Кристаллы PIC16C5X имеют отдельный 16-битный EPROM Эти биты предназначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. К ним нет доступа по программе, они программируются -программатором. Защита кода. Программный код, который записан в EPROM, может быть защищен от считывания при помощи установки бита защиты в ноль. Кроме того, при установленном бите защиты становится невозможным перепрограммировать адреса памяти, начинающиеся с 040h. Но остаются открытыми на перепрограммирование адреса 000h-03fh, код идентификации и биты конфигурации. Имейте в виду, что биты конфигурации и код идентификации может быть прочитан независимо от установки бита защиты кода. Проверка кристалла с установленной защитой. При считывании защищенного кристалла, чтение любого адреса памяти даст результат, похожий на 00000000XXXX(двоичный код), где X- это 0 или 1. Чтобы проверить сохранность памяти в защищенном кристалле, следуйте правилам: 1) запрограммируйте и проверьте работу исправного кристалла. 2) установите защиту кода программы и считайте содержимое программной памяти в файл-эталон. 3) проверяйте любой защищенный кристалл путем сравнения его программ- мной памяти с содержимым этого эталона. Режим пониженного энергопотребления. Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинает счет времени, бит "PD" в регистре статуса (f3) сбрасывается, бит "TO" устанавливается, а встроенный генератор выключается. Порты ввода/вывода сохраняют состояние, которое они имели до входа в режим SLEEP. Для снижения потребляемого тока в этом режиме, ножки на вывод должны иметь такие значения, чтобы не протекал ток между кроисталлом и внешними цепями. Ножки на ввод должны быть соединены внешними резисторами с высоким или низким уровнем, чтобы избежать токов переключения, вызываемых плавающими высокоомными входами. То же и про RTCC. Ножка /MCLR должна быть под напряжением Vihmc. Выход из режима SLEEP. Выход из режима SLEEP осуществляет WDT(если он разрешен) или внешний нулевой импульс на на ножке /MCLR- сброс. В обoих случаях PIC16C5X будет находиться в режиме сброса в течение времени запуска генератора, а затем только начнется выполнение программы. Бит "PD" в регистре статуса (f3), который устанавливается при включении, но обнуляется командой "SLEEP", может быть использован для определения состояния процессора до "просыпания": или процессор был в режиме "SLEEP"(горячий старт), или было просто включено питание (холодный старт). Бит "TO" позволяет определить, чем был вызван выход из режима SLEEP: или внешним сигналом на ножке /MCLR, или срабатыванием WDT. Примечание: Некоторые случаи требуют наличия R/C цепочки на ножке /MCLR для увеличения выдержки на запуск. В этом случае не рекомендуется выход из режима "SLEEP" по срабатыванию WDT потому, что не будет разряжаться внешний конденсатор сброса и выдержка на запуск генератора будет равна обычной длительности. Максимальные значения параметров Выход параметров за данные пределы может привести к повреждению микросхемы. Работа кристалла на предельно допустимых значениях в течение длительного времени повлияет на его надежность. ─────────────────────────────────────────────────────────── Интервал рабочих температур -55 ... +125С Температура хранения -65 ... +150С Напряжение на любой ножке относительно Vss (земли) (исключая Vdd и /MCLR) -0.6 ... +0.6 В Напряжение Vdd относительно Vss 0 ... +7.5 В Напряжение на /MCLR относительно Vss 0 ... + 14 В (Прим.2) Общая рассеиваемая мощность 800 мВт (Прим.1) Макс. вытекающий ток (на землю) 150 мА Макс. втекающий ток (из питания) 50 мА Макс. ток для любой ножки ввода +-500 мкА Макс. втекающий ток (любой контакт Вывода) 25 мА Макс. вытекающий ток (любой контакт Вывода) 20 мА Макс. вытекающий ток для порта Вывода(А, В или С) в целом 40мА " втекающий ток " " " " 50мА ──────────────────────────────────────────────────────────────── Примечания: 1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого корпуса. Рассеиваемая мощность вычисляется по следующей формуле: Pdis= Vdd*(Idd - Cумма(Ioh)) + Сумма ((Vdd - Voh)*Ioh) + + Сумма (Vol * Iol) 2. Понижение напряжения на ножке /MCLR ниже Vss(земля) вызывает большие токи, более 80 мА, и может привести к повреждению этой линии. Поэтому, рекомендуем подавать сигналы на ножку /MCLR через ограничивающий резистор 50-100 Ом. Характеристики постоянного тока: PIC16C5X - RC, XT, LP Коммерческое исполнение. --------------------------------------------------------------------------- Рабочая температура 0 <= Ta <= +70 C,если не указано иначе. Рабочее напряжение 3.0 ... 5.5 В, если не указано иначе --------------------------------------------------------------------------- Символ Мин Типичное Макс Условия (Прим.1) --------------------------------------------------------------------------- Напряжение питания PIC16C5X - XT Vddxt 3.0 - 6.25 В 0 .. 4 МГц PIC16C5X - RC Vddrc 3.0 - 6.25 В 0 .. 4 МГц PIC16C5X - HS Vddhs 4.5 - 5.5 В 0 .. 20 МГц PIC16C5X - LP Vddlp 2.5 - 6.25 В 0 .. 40 КГц --------------------------------------------------------------------------- Напряжение сохранения Vdr - 1,5 - В Устройство в данных в ОЗУ (Прим.3) в режиме SLEEP --------------------------------------------------------------------------- Напряжение на ножке Vdd в момент включения Vpor - Vss - В Смотри раздел питания, гарантирующее СБРОС сброс --------------------------------------------------------------------------- Скорость нарастания Vdd, Svdd 0.05* - - В/мс Смотри раздел гарантирующая сброс СБРОС --------------------------------------------------------------------------- Ток потребления (Прим.2) PIC16C5X - XT Iddxt - 1.8 3.3 мА 4 MГц, Vdd=5.5В PIC16C5X - RC (Прим.5) Iddrc - 1.8 3.3 мA 4 MГц, Vdd=5.5В PIC16C5X - HS Iddhs1 - 4.8 10 мA 10 MГц, Vdd=5.5В Iddhs2 - 9.0 20 мA 20 MГц, Vdd=5.5В PIC16C5X - LP Iddlp - 15 32 мкA 32 KГц, Vdd=3.0В WDT запреще --------------------------------------------------------------------------- Ток потребления в в режиме SLEEP PIC16C5X Ipd1 - 4 12 мкA Vdd=3 В, WDT раз Ipd2 - 0,6 9 мкA Vdd=3 В, WDT зап --------------------------------------------------------------------------- Характеристики постоянного тока: PIC16C5X - RC, XT, LP Исполнение для промышленности. --------------------------------------------------------------------------- Рабочая температура -40 <= Ta <= +85 C,если не указано иначе Рабочее напряжение 3.0 ... 5.5 В, если не указано иначе --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения --------------------------------------------------------------------------- Напряжение питания PIC16C5X - XT Vddxt 3.0 - 6.25 В 0 .. 4 МГц PIC16C5X - RC Vddrc 3.0 - 6.25 В 0 .. 4 МГц PIC16C5X - HS Vddhs 4.5 - 5.5 В 0 .. 20 МГц PIC16C5X - LP Vddlp 2.5 - 6.25 В 0 .. 40 КГц --------------------------------------------------------------------------- Напряжение сохранения Vdr - 1,5 - В Устройство в данных в ОЗУ (Прим.3) в режиме SLEEP --------------------------------------------------------------------------- Напряжение на ножке Vdd, в момент включения Vpor - Vss - В Смотри раздел питания, гарантирующее СБРОС сброс --------------------------------------------------------------------------- Скорость нарастания Vdd, Svdd 0.05* - - В/мс Смотри раздел гарантирующая сброс СБРОС --------------------------------------------------------------------------- Ток потребления (Прим.2) PIC16C5X - XT Iddxt - 1.8 3.3 мА 4 MГц, Vdd=5.5В PIC16C5X - RC (Прим.5) Iddrc - 1.8 3.3 мA 4 MГц, Vdd=5.5В PIC16C5X - HS Iddhs1 - 4.8 10 мA 10 MГц, Vdd=5.5В Iddhs2 - 9.0 20 мA 20 MГц, Vdd=5.5В PIC16C5X - LP Iddlp - 19 40 мкA 32 KГц, Vdd=3.0В WDT запрещен --------------------------------------------------------------------------- Ток потребления в в режиме SLEEP PIC16C5X Ipd1 - 5 14 мкA Vdd=3В, WDT разр Ipd2 - 0,8 12 мкA Vdd=3В, WDT запр --------------------------------------------------------------------------- Характеристики постоянного тока: PIC16C5X - RC, XT, LP Исполнение для автомобилей. --------------------------------------------------------------------------- Рабочая температура-40 <= Ta <= +125 C,если не указано иначе Рабочее напряжение 3.0 ... 5.5 В, если не указано иначе --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения --------------------------------------------------------------------------- Напряжение питания PIC16C5X - XT Vddxt 3.25 - 6.0 В 0 .. 4 МГц PIC16C5X - RC Vddrc 3.25 - 6.0 В 0 .. 4 МГц PIC16C5X - HS Vddhs 4.5 - 5.5 В 0 .. 20 МГц PIC16C5X - LP Vddlp 2.5 - 6.25 В 0 .. 40 КГц --------------------------------------------------------------------------- Напряжение сохранения Vdr - 1,5 - В Устройство в данных в ОЗУ (Прим.3) в режиме SLEEP --------------------------------------------------------------------------- Напряжение на ножке Vdd, в момент включения Vpor - Vss - В Смотри раздел питания, гарантирующее СБРОС сброс --------------------------------------------------------------------------- Скорость нарастания Vdd, Svdd 0.05* - - В/мс Смотри раздел гарантирующая сброс СБРОС --------------------------------------------------------------------------- Ток потребления (Прим.2) PIC16C5X - XT Iddxt - 1.8 3.3 мА 4 MГц, Vdd=5.5В PIC16C5X - RC (Прим.5) Iddrc - 1.8 3.3 мA 4 MГц, Vdd=5.5В PIC16C5X - HS Iddhs1 - 4.8 10 мA 10 MГц, Vdd=5.5В Iddhs2 - 9.0 20 мA 20 MГц, Vdd=5.5В PIC16C5X - LP Iddlp - 25 55 мкA 32 KГц, Vdd=3.25 WDT запреще --------------------------------------------------------------------------- Ток потребления в в режиме SLEEP PIC16C5X Ipd1 - 5 22 мкA 3,25 В, WDT разр Ipd2 - 0,8 18 мкA 3,25 В, WDT запр --------------------------------------------------------------------------- Электрические параметры ножек корпусов --------------------------------------------------------------------------- Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +80 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Напряжение питания - типичное значение --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения -------------------------------------------------------------------------- Нижний уровень входного напряжения Линии I/O Vil Vss - 0.2 Vdd В (Ком/Индус) Линии в третьем состоянии Линии I/O Vil Vss - 0.15 Vdd В (Автомобильный) Линии в третьем состоянии /MCLR(триг Шмитта) Vilmc Vss - 0.15 Vdd В RTCC (триг Шмитта) Vilrt Vss - 0.15 Vdd В OSC1 (триг Шмитта) Vilosc Vss - 0.15 Vdd В PIC16C5X-RC(Прим 5) OSC1 Vilosc Vss - 0.3 Vdd В PIC16C5X-XT,HS,LP --------------------------------------------------------------------------- Верхний уровень входного напряжения Линии I/O Vih 0.45 Vdd - Vdd В Для всех Vdd (Прим 6 Vih 2.0 - Vdd В 4.0< Vdd <=5 В (Пр 6 Vih 0.36 Vdd - Vdd В Vdd > 5.5 В /MCLR(триг Шмитта) Vihmc 0.85 Vdd - Vdd В RTCC (триг Шмитта) Vihrt 0.85 Vdd - Vdd В OSC1 (триг Шмитта) Vihosc 0.85 Vdd - Vdd В PIC16C5X-RC(Прим 5) OSC1 Vihosc 0.7 Vdd - Vdd В PIC16C5X-XT,HS,LP -------------------------------------------------------------------------- Ток утечки входа Для Vdd <= 5.5 В (Примечания 3,4) Линии I/O Iil - 1 0.5 + 1 мкА Vss <= Vpin <=Vdd Линии в третьем состоянии /MCLR Iilmcl - 5 - + 5 мкА Vpin= Vss + 0.25 В /MCLR Iilmch - 0.5 мкА Vpin = Vdd RTCC Iilrt - 3 0.5 + 3 мкА Vss <= Vpin <=Vdd OSC1 Iilosc1 - 3 0.5 + 3 мкА Vss <= Vpin <=Vdd PIC16C5X-XT,HS,LP ------------------------------------------------------------------------- Лог "0" Линии I/O Vol - - 0.6 В Iol=8.7мА, Vdd=4.5В OSC2/CLKOUT Vol - - 0.6 В Iol=1.6мА, Vdd=4.5В PIC16C5X-RC -------------------------------------------------------------------------- Лог "1" Линии I/O Voh Vdd-0.7 - - В Iol=-5.5мА, Vdd=4.5В OSC2/CLKOUT Voh Vdd-0.7 - - В Iol=-1.0мА, Vdd=4.5В PIC16C5X-RC -------------------------------------------------------------------------- Примечание 1: Данные из колонки "Типичное" являются усредненными значениями, полученными при 25С. Эти данные предназначены только для ориентировки разработчика. Примечание 2: Полная рассеиваемая мощность определенное в "Предельно допустимые значения" не болжна быть превышена. Примечание 3: Ток утечки ножки /MCLR зависит от приложенного напряжения. Указанные уровни соответствуют нормальным рабочим условиям. При других входных напряжениях могут получиться токи большей величины. Примечание 4: Отрицательные токи соответствуют вытекающим токам. Примечание 5: Для кристалла PIC16C5XRC ножка OSC1 - это вход триггера Шмитта. Не рекомендуется подавать внешнюю тактовую частоту на кристалл PIC16C5X, когда используется RC режим генератора. Скоростные характеристики: PIC16C5X-RC,XT,HS,LP (Комерческие) PIC16C5X-RC,XT,HS,LP (Индустриальные) PIC16C5X-RC,XT,HS,LP (Автомобильные) --------------------------------------------------------------------------- Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +80 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Рабочее напряжение - типичное значение --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения --------------------------------------------------------------------------- Частота внешнего Foscrc - - 4 МГц RC CLOCKIN (Прим. 2) Foscxt - - 4 МГц XT Foschs1 - - 20 МГц HS (Ком/Ин Foschs2 - - 16 МГц HS (Автом) Fosclp - - 40 КГц LP --------------------------------------------------------------------------- Частота генератора Foscrc - - 4 МГц RC (Прим. 2) Foscxt 0.1 - 4 МГц XT Foschs1 4 - 20 МГц HS (Ком/Ин Foschs2 4 - 16 МГц HS (Автом) Fosclp DC - 40 КГц LP --------------------------------------------------------------------------- цикл команды Tcyrc 1.0 4/Foscrc - мкс RC Tcyxt 1.0 4/Foscxt - мкс XT (Прим. 2) Tcyhs 0.2 4/Foschs - мкс HS Tcylp 100 4/Fosclp - мкс LP --------------------------------------------------------------------------- Параметры внешнего генератора (Прим. 4) Время положительного и отрицательного полупериода CLOCKIN (OSC1) XT тип генератора Tckhlxt 50* - - нс - LP тип генератора Tckhllp 2* - - мкс - HS тип генератора Tckhlhs 20* - - нс - Время нарастания и спада CLOCKIN (OSC1) XT тип генератора Tckrfxt 25* - - нс - LP тип генератора Tckrflp 50* - - нс - HS тип генератора Tckrfhs 25* - - нс - --------------------------------------------------------------------------- Сброс /MCLR длительность Tmclr 100* - - нс - --------------------------------------------------------------------------- Параметры сигнала на входе RTCC, без делителя длительность"1" Trth 0.5 Tcy+20* - - нс Прим.3 длительность"0" Trtl 0.5 Tcy+20* - - нс Прим.3 с делителем длительность"1" Trth 10* - - нс Прим.3 длительность"0" Trtl 10* - - нс Прим.3 период RTCC Trtp Tcy+40/N* - - нс Прим.3 где N значение делителя(2,4..256) --------------------------------------------------------------------------- Выдержка watchdog Twdt 9* 18* 30* мс Vdd=5.0 В Выдержкаа запуска Tost 9* 18* 30* мс Vdd=5.0 В генератора -------------------------------------------------------------------------- Параметры портов Задержка включения относительно CLKOUT Tds 0.25 Tcy+30* - - нс - (не при RC тип) Задержка спада Tdh 0* - - нс - относительно CLKOUT (не при RC тип) Задержка спада Tpd - - 40* нс - относительно CLKOUT (тип RC) -------------------------------------------------------------------------- * Усредненная величина, не подлежит нормированию Примечание 1: Данные из колонки "Типичное" являются усредненными значениями, полученными при 25С. Эти данные предназначены только для ориентировки разработчика. Примечание 2: Время командного цикла (Tcy) составляет четыре периода входной тактовой частоты генератора. Значения основаны на усредненых данных для конкретного типа генераторов при стандартных условиях эксплуатации. Выход за указанные приделы может привести к нестабильной работе генератора и/или повышенному энергопотреблению. Все кристаллы проверяются при работе со значениями из графы "мин" и внешней тактовой частотой, подаваемой на OSC1. Когда используется внешний вход тактовой частоты, тогда значением в графе "Макс" будет бесконечностью для всех типов клисталлов. Примечание 3: См. детальное обьяснения RTCC Примечание 4: Длительность"1" входной тактовой частоты - это время в течение которого значение сигнала равно Vihosc или выше. Длительность"0" входной тактовой частоты - это время в течение которого значение сигнала равно Vilosc или ниже.