PIC16C71 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EPROM для программ, 8-битовые данные и 64- байт встоенный аналого-цифровой приобразователь. Отличаются низкой стоимостью и высокой производительностью. Пользователи, которые знакомы с семейством PIC16C5X могут посмотреть подробный список отличий нового от производимых ранее контроллеров. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (200 нс при 20 МГц), кроме команд перехода, которые выполняются за два цикла (400 нс). PIC16C71 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предварительным делителем (фактически 16 - битный таймер), 13 линий двунаправленного ввода/вывода и восьми битный АЦП. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. АЦП имеет четыре канала, схему выборки и хранения, разрешающую способность 8 бит с погрешностью не более одного младшего разряда. Среднее время преобразования 30 мкс, включая время выборки. Серия PIC16C71 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16C71 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры. - только 35 простых команды; - все команды выполняются за один цикл(200ns), кроме команд перехода- 2 цикла; - рабочая частота 0 Гц ... 20 МГц (min 200 нс цикл команды) - 14- битовые команды; - 8- битовые данные; - 36 х 8 регистров общего использования; - 15 специальных аппаратных регистров SFR; - восьмиуровневый аппаратный стек; - прямая, косвенная и относительная адресация данных и команд; - четыре источника прерывания: . внешний вход INT . переполнение таймера RTCC . прерывание при завершении аналого-цифрового преобразования . прерывание при изменении сигналов на линиях порта B ┌───────────────────────┐ │Периферия и Ввод/Вывод │ └───────────────────────┘ - 13 линий ввода-вывода с индивидуальной настройкой; - втекающий/вытекающий ток для управления светодиодами . макс втекающий ток - 25 мА . макс вытекающий ток - 20 мА - 8 - битный таймер/счетчик RTCC с 8-битным программируемым предварительным делителем; - модуль АЦП: . 4 мультиплексируемых аналоговых входа, подсоединенных к одному аналого цифровму преобразователю . схема выборки\хранения . время преобразования - 20 мкс на канал . преобразователь - 8 бит, с погрешностью +-1 LSB . вход для внешнего опорного напряжения Vref (Vref <= Vdd) . диапазон входных аналоговых сигналов от Vss до Vref - автоматический сброс при включении; - таймер включения при сбросе; - таймер запуска генератора; - Watchdog таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность; - EPROM бит секретности для защиты кода; - экономичный режим SLEEP; - выбираемые пользователем биты для установки режима возбуждения встроенного генератора: - RC генератор : RC - обычный кварцевый резонатор : XT - высокочастотный кварцевый резонатор : HS - экономичный низкочастотный кристалл : LP - встроенное устройство самопрограммирования EPROM памяти программ, используются только две ножки. ┌─────────────────┐ │ КМОП технология │ └─────────────────┘ - экономичная высокоскоростная КМОП EPROM технология; - статический принцип в архитектуре; - широкий диапазон напряжений питания и температур: - коммерческий: 3.0 ... 6.0 В, 0...+70С - промышленный: 3.0 ... 6.0 В, -40...+70С - автомобильный: 3.0 ... 6.0 В, -40...+125С - низкое потребление 2 мА типично для 5В, 4МГц 15 мкА типично для 3В, 32КГц 1 мкА типично для SLEEP режима при 3В. СТРУКТУРА КРИСТАЛА PIC16C71 ╔═══════════════════╗ ╔═════════╗ ╔══════════╗ ║ A L U ║ ╔══════════╗ ║ Stack 1 ║ ║ PC ║ ╟─────────┬─────────╢ ║ Register ║ ╟ .... ╢▒▒▒▒║ 13 bit ║▒▒▒▒║ W reg │ Status ║ ║ file ║ ║ Stack 8 ║ ╚════▄▄════╝ ╚═══▄▄═══▄▄═════════╝ ╚════▄▄════╝ ╚═════════╝ ╔════▀▀════╗ ▒▒ ▒▒ ▒▒ ║ EPROM ║▒▒▒▒▒▒▒▒▒▒ ▒▒ ▒▒ ║ prog.MEM ║ ▒▒ 8-bit Data Bus ▒▒ ║1024 * 14 ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ╚══════════╝ ▒▒ ▒▒ ▒▒ ╔════════╗ ╔════▀▀═════╗ ╔═══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 │ ╔════════════════╗ ▒▒ │ │ ╔═══════════╗ ┌───▒▒ │ ║ ║ ▒▒ │ └──╢Oscilator ╟─┘ OSC2 │ ║ ADC ║ ▒▒ │ Sleep ║ Timing & ╟─────▒▒ └─║ 4 analog ║▒▒▒▒▒ │ ─────╢ Control ╟─┐ MCLR ║ chanels ║ │ ╚═╤═════════╝ └───▒▒ ║ ║ │Disable │Osc.Select ╚════════════════╝ ╔══╧══════════╧═════════╗ ╢ Configuration EPROM ║ ╚═══════════════════════╝ Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды.Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. В PIC16C71 программная память объемом 1К х 14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ. Ниже перечислены отличия PIC16C71 от семейства PIC16C5X. ------------------------------------------------------- 1. Длина команды увеличилась до 14 бит. Это позволяет организовать ПЗУ и ОЗУ с увеличенным размером страницы: (2К байта вместо 512 байт) , (128 байт вместо 32 байт) соответственно. 2. Старший регистр программного счетчика (PCLATH) управляет переключением страниц в программной памяти. Биты выбора страниц PA2,PA1,PA0, которые использовались для этого в кристалле PIC16C5X - изъяты из регистра STATUS. 3. Страничная организация памяти и регистр STATUS- модифицированы. 4. Добавлены четыре новые команды: RETURN, RETFIE, ADDLW, SUBLW. В двух командах TRIS и OPTION отпала необходимость, однако они сохраненны для программной совместимости с PIC16C5X. 5. Регистры OPTION и TRIS сделаны адресуемыми по номеру. 6. Добавлена возможность работать по прерыванию. Вектор= 0004h. 7. Величина стека увеличена до восьми уровней. 8. Адрес сброса при включении поменялся на 0000h. 9. Распознаются пять различных типов сбросов (выходов из режима SLEEP). Инициализация регистров изменена. Они устанавливаются по разному, в зависимости от типа сброса. 10. Добавлен выход из режима SLEEP через прерывание. 11. Для более надежного запуска, добавлены следующие аппаратные задержки: таймер запуска (OST) и таймер включения питания (PWRT). Эти таймеры могут быть использованы избирательно, чтобы избежать ненужных задержек, как при включении, так и при выходе из режима SLEEP. 12. Порт B имеет активные нагрузки и прерывание при изменении вх.сигналов. 13. Ножка RTCC совмещена с ножкой порта (RA4). 14. Регистр с адресом 07h (порт C) не существует и не является регистром общего назначения. 15. Регистр FSR (f4), в котором хранится указатель при косвенной адресации стал шириной в восемь бит. 16. Реализован встроенный автомат самопрограммирования. Пользователь может программировать PIC16C71, используя только пять ножек: Vdd, Vss, /MCLR/Vpp, RB6(тактовая частота), RB7(вход/выход данных). Чтобы перевети код, написанный для PIC16C5X в код для PIC16C71 пользователь должен исполнить следующие шаги: 1. Заменить операции по выбору страниц программной памяти (биты PA2, PA1, PA0) командами CALL, GOTO. 2. Пересмотреть все вычисляемые операции переходов( запись в PC или сложение с PC, и т.д.) и удостовериться, что биты страниц устанавливаются корректно и для нового кристалла. 3. Исключить переключение страниц памяти данных. Переопределить переменные и перераспределить память для них. 4. Проверить запись в регистры STATUS, OPTION, FSR, т.к. они несколько изменены. 5. Измените вектор сброса при включении на 0000h. 6. Обратите внимание, что адрес 07h - это несуществующий адрес памяти данных. Обозначения корпусов для кристаллов PIC16C8x. Тип корпуса указывается в Маркировке при заказе микросхем. Корпуса бывают только с 18 Выводами. PDIP - Обычный пластмассовый двухрядный корпус. Используется для OTP EPROM версий кристаллов. SOIC - Малогабаритный DIP корпус для монтажа на поверхность. Исполнения микросхем бывают трех типов: комерческие, для промышлености и для автомобильной электроники. Основное их отличие в температурном диапазоне и рабочем напряжении. Коммерческое исполнение Рабочая температура 0 ... +70 C Рабочее напряжение 3.0 ... 5.5 В Исполнение для промышленности Рабочая температура -40 .... +85 C Рабочее напряжение 3.0 ... 5.5 В Исполнение для автомобилей Рабочая температура-40 ... +125 C Рабочее напряжение 3.0 ... 5.5 В ОБОЗНАЧЕНИЯ МИКРОСХЕМ при ЗАКАЗАХ Обозначение микросхем складывается из следующих полей: <Фирм.номер>-<Частота генератора><Темпер.диапазон>/<Корпус><Примеч> <Фирм.номер бывает>: PIC16C71 - Vdd range 4...6 В PIC16LC71 Vdd range 3...6 В <Частота генератора>: 04 ---> 4 МГц 10 ---> 10 МГц Температурный диапазон бывает: - от 0С до +70С I от-40С до +85С E от-40С до +125С Корпус обозначается: P - обычный пластмассовый DIP SO -300 mil SOIC JW - CERDIP с окном ПРИМЕРЫ: ------------------------ PIC16C71-04/Pxxx 4 mHz, коммерческое исполнение в PDIP корпусе, норм.диапазон Vdd, масочное ПЗУ с программой xxx PIC16LC71-04I/SO 4 mHz, исполнение для промышленности, расширенный диапазон питания, корпус=SOIC PIC16C71-10E/P исполнение для автомобилей, 10 mHz, PDIP, норм. питание Функциональное назначение выводов см."Обозначения Выводов" или Структуную Схему. Типы корпусов PDIP и др. см. "Корпуса". PDIP, SOIC, CERDIP ┌────▄▄────┐ RA2/AIN2 ▄│1 18│▄RA1/AIN1 RA3/AIN3/Vref ▄│ │▄RA0/AIN0 RA4/RTCC▄│ │▄OSC1/CLKIN /MCLR/Vpp▄│ │▄OSC2/CLKOUT Vss ▄│ PIC16C71 │▄Vdd RB0/INT ▄│ │▄RB7 RB1 ▄│ │▄RB6 RB2 ▄│ │▄RB5 RB3 ▄│9 10│▄RB4 └──────────┘ Обозначения ножек и их функциональное назначение ────────────────┬────────────────────────────────────┬ Обозначение │ Нормальный режим │ ────────────────┼────────────────────────────────────┼ RA4/RTCC Вход через триггер Шмитта. Ножка порта ввода/вывода с открытым стоком или вход частоты дл таймера/счетчика RTCC. ────────────────────────────────────────────────────── RA0/AIN0 Двунаправленная линия ввода/вывода. Аналоговый вход канала 0. Как цифровой вход имеет уровни ТТЛ. ────────────────────────────────────────────────────── RA1/AIN1 Двунаправленная линия ввода/вывода. Аналоговый вход канала 1. Как цифровой вход имеет уровни ТТЛ. ────────────────────────────────────────────────────── RA2/AIN2 Двунаправленная линия ввода/вывода. Аналоговый вход канала 2. Как цифровой вход имеет уровни ТТЛ. ────────────────────────────────────────────────────── RA3/AIN3/Vref Двунаправленная линия ввода/вывода. Аналоговый вход канала 3. Как цифровой вход имеет уровни ТТЛ. ────────────────────────────────────────────────────── ────────────────────────────────────────────────────── RB0/INT Двунаправленная линия порта вывода или внешний вход прерывания. Уровни ТТЛ. - ────────────────────────────────────────────────────── RB1 - RB5 Двунаправленные линии ввода/ вывода. Уровни ТТЛ. ────────────────────────────────────────────────────── RB6 Двунаправленные линии ввода/ вывода. Уровни ТТЛ. ────────────────────────────────────────────────────── RB7 Двунаправленные линии ввода/ вывода. Уровни ТТЛ. ────────────────────────────────────────────────────── /MCLR/Vpp Низкий уровень на этом входе генерирует сигнал сброса для контроллера. Активный низкий. Вход через триггер Шмитта. ─ ────────────────────────────────────────────────────── OSC1 Для подключения кварца, RC или вход внешней тактовой частоты. ────────────────────────────────────────────────────── OSC2 Генератор, выход тактовой /CLKOUT частоты в режиме RC генератора, в остальных случаях - для подкл.кварца ────────────────────────────────────────────────────── Vdd Напряжение питания ────────────────────────────────────────────────────── Vss Общий(земля) ────────────────────────────────────────────────────── Максимальные значения электрических параметров Выход параметров за данные пределы может привести к повреждению микросхемы. Работа кристалла на предельно допустимых значениях в течение длительного времени повлияет на его надежность. ─────────────────────────────────────────────────────────── Интервал рабочих температур -55 ... +125С Температура хранения -65 ... +150С Напряжение на любой ножке относительно Vss (земли) (исключая Vdd и /MCLR) -0.6 ... Vdd+0.6 В Напряжение Vdd относительно Vss 0 ... +7.5 В Напряжение на /MCLR относительно Vss 0 ... + 14 В (Прим.2) Общая рассеиваемая мощность 800 мВт (Прим.1) Макс. ток в ножку Vss 150 мА Макс. ток в ножку Vdd 100 мА Макс. ток в любую ножку ввода +- 500 мкА Макс. втекающий ток (любая ножка Вывода) 25 мА Макс. вытекающий ток (любая ножка Вывода) 20 мА Макс. сумарный вытекающий ток для всех ножек порта_А 80мА Макс. сумарный вытекающий ток для всех ножек порта_В 150мА Макс. сумарный втекающий ток для всех ножек порта_А 50мА Макс. сумарный втекающий ток для всех ножек порта_В 100мА ──────────────────────────────────────────────────────────────── Примечания: 1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого корпуса. Рассеиваемая мощность вычисляется по следующей формуле: Pdis= Vdd*(Idd - Cумма(Ioh)) + Сумма ((Vdd - Voh)*Ioh) + + Сумма (Vol * Iol) 2. Понижение напряжения на ножке /MCLR ниже Vss(земля) вызывает большие токи, более 80 мА, и может привести к повреждению этой линии. Поэтому, рекомендуем подавать сигналы на ножку /MCLR через ограничивающий резистор 50-100 Ом. Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр указатель FSR (04h). Page 0 Page 1 ┌────────────────┬─────────────────┐ 00 │Indirect add. │ Indirect add. │ 80 ├────────────────┼─────────────────┤ 01 │ RTCC │ OPTION │ 81 ├────────────────┼─────────────────┤ 02 │ PCL │ PCL │ 82 ├────────────────┼─────────────────┤ 03 │ STATUS │ STATUS │ 83 ├────────────────┼─────────────────┤ 04 │ FSR │ FSR │ 84 ├────────────────┼─────────────────┤ 05 │ PORT A │ TRISA │ 85 ├────────────────┼─────────────────┤ 06 │ POTR B │ TRISB │ 86 ├────────────────┼─────────────────┤ 07 │ ░░░░░░░░░░░░ │ ░░░░░░░░░░░░ │ 87 ├────────────────┼─────────────────┤ 08 │ ADCON0 │ ADCON1 │ 88 ├────────────────┼─────────────────┤ 09 │ ADRES │ ADRES2 │ 89 ├────────────────┼─────────────────┤ 0A │ PCLATH │ PCLATH │ 8A ├────────────────┼─────────────────┤ 0B │ INTCON │ INTCON │ 8B ├────────────────┼─────────────────┤ 0C │ │ │ 8C │ 36 регистров │ │ │ общего <------ то-же │ │ пользования │ │ 2F │ │ │ AF ├────────────────┼─────────────────┤ 30 │ ░░░░░░░░░░░░ │ ░░░░░░░░░░░░ │ B0 │ ░░░░не░░░░░░ │ ░░░░░░░░░░░░ │ │ ░░░░░░░░░░░░ │ ░░░░░░░░░░░░ │ │ ░существует░ │ ░░░░░░░░░░░░ │ 7F │ ░░░░░░░░░░░░ │ ░░░░░░░░░░░░ │ FF └────────────────┴─────────────────┘ В регистре статуса (03h) есть биты выбора страниц, которые позволяют обращаться к четырем страницам будущих модификаций этого кристалла. Однако для PIC16C71 память данных существует только до адреса 02Fh. Первые 12 адресов используются для размещения регистров специального назначения. Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего назначения, которые представляют собой статическое ОЗУ. Некоторые регистры специального назначения продублированы на обеих страницах, а некотрые расположены на странице 1 отдельно. Когда установлена страница 1, то обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам можно адресоваться прямо или косвенно. Прямая адресация. Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RP1,RP0) из регистра статуса (03h). Status OpCode │ │ │ 0 ┌──┬──┐ ┌──┬──┬──┬──┬──┬──┬──┐ │░ └──┼──┘ └──┴──┴──┴──┴──┴──┴──┘ │░ │ │░ ADDRESS ───────────────────────>┤░ RAM │░ Косвенная адресация. Любая команда, которая использует f0 (адрес 00) в качестве регистра фактически обращается к указателю, который хранится в FSR (04h). Чтение косвенным образом самого регистра f0 даст результат 00h. Запись в регистр f0 косвенным образом будет выглядеть как Nop, но биты статуса могут быть изменены. Необходимый 9 - битный адрес формируется объединением содержимого 8 - битного FSR регистра и бита IRP из регистра статуса. Status FSR = f4 │ │ │ 0 ┌───┐ ┌──┬──┬──┬──┬──┬──┬──┐ │░ └─┬─┘ └──┴──┴──┴──┴──┴──┴──┘ │░ │ │░ POINTER ───────────────────────>┤░ RAM │░ │ │░ Обратите внимание, что некоторые регистры специальных функций располагаются на странице 1. Чтобы адресоваться к ним, нужно дополнительно установить в единицу бит RP0 в регистре статуса. Таймер/счетчик. Структурная схема включения RTCC приведена ниже. Она содержит элемент "MUX"- это электронный переключатель. ║║ 8-bit Clkout=Fosc/4 ───┬──────────────────────┐ ║║ Data Bus │ ╔═══╗ ╔═══╗ ╔══╧═══╗ ╔════╩╩═════╗ от RA4/RT═══╗ └──╢MUX╟─┬───╢MUX╟──╢ SYNC ╟──╢ RTCC ║─┐ ────╢XOR╟─────────╢ ║ │ ┌─╢ ║ ║ ║ ╚═══════════╝ │ ┌─╢ ║ ╚═╤═╝ │ │ ╚═╤═╝ ╚══════╝ │ │ ╚═══╝ │ │ │ │ │ RTE RTS │ │ PSA установка ┌─────────────────────┘ └───────────────────┐ RBIF │ ╔═══╗ ╔═══════════════════╗ │ прерывания └────╢MUX╟───╢ 8-bit Counter ║ │ ╔══════╗ ┌─╢ ║ ╚═╤═╤═╤═╤═╤═╤═╤═╤═╤═╝ │ ║Watch ║ │ ╚═╤═╝ │ │ │ │ │ │ │ │ │ │ ║ Dog ╟─┤ │ ╔═╧═╧═╧═╧═╧═╧═╧═╧═╧═╗ PS0-PS2 │ ║Timer ║ │ PSA ║ 8-to-1 MUX ╠══════ │ ╚══════╝ │ ╚════════╤══════════╝ │ │ ├─────────────────────┘ │ │ ╔═══╗ │ └────╢MUX╟───── WD └───────────────────────╢ ║ Time Out ╚═╤═╝ PSA Режим таймера выбирается путем сбрасывания в ноль бита RTS, который находится в регистре OPTION. В режиме таймера RTCC будет инкрементироваться от ВНУТРЕННЕГО ИСТОЧНИКА частоты- каждый командный цикл (без предделителя). После записи информации в RTCC, инкрементирование его начнется после двух командных циклов. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр.MOVF f1, CLRF f1). Избежать этого можно при помощи записи в RTCC скорректированного значения. Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF f1,W. Режим счетчика выбирается путем установки в единицу бита RTS, который находитсяв регистре OPTION. В этом режиме RTCC будет инкрементироваться либо положительным, либо отрицательным фронтом на ножке RA4/RTCC от ВНЕШНИХ событий. Направление фронта определяется управляющим битом RTE в регистре OPTION. При RTE=0 будет выбран положительный фронт. Пределитель может быть использован или совместно с RTCC, или с Watchdog таймером. Вариант подключения делителя контролируется битом PSA в регистре OPTION. При PSA=0 делитель будет подсоединен к RTCC. Содержимое делителя программе недоступно. Коэффициент деления - программируется. Прерывание по RTCC вырабатывается тогда, когда происходит переполнение RTCC таймера/счетчика при переходе от FFH к 00h. Тогда устанавливается бит запроса RTIF в регистре INTCON<2>. Данное прерывание можно замаскировать битом RTIE в регистре INTCON<5>. Бит запроса RTIF должен быть сброшен программно при обработке прерывания. Прерывание по RTCC не может вывести процессор из SLEEP потому, что таймер не функционирует в этом режиме. Проблемы могут возникнуть при счете внешних сигналов. Эти сигналы стробируются внутренним сигналом синхронизации, см. схему 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 (+-400нс при кварце 10 МГц). (f3) Регистр статуса. Регистр (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для памяти данных. (f3) доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3=000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса можно посмотреть в "Описании команд". Размещение флагов в регитсре статуса следующее: b7 b6 b5 b4 b3 b2 b1 b0 ┌─────┬─────┬─────┬────┬────┬───┬────┬───┐ f3 = │ IRP │ RP1 │ RP0 │ 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. ┌─────────┐ │ RP1, RP0│ - Биты выбора страницы памяти данных при прямой адресации: └─────────┘ RP1,RP0: 00= Страница 0 (00h-7Fh) 01= Страница 1 (80h-FFh) 10= Страница 2 (100h-17Fh) 11= Страница 3 (180h-1FFh) На каждой странице расположено 128 байт. В кристалле PIC16C71 используется только RP0. В этом кристалле RP1 может использоваться просто как бит общего назначения чтения/записи. Однако надо помнить, что в последующих разработках он будет использоваться. ┌──────┐ │ IRP │ - Бит выбора страницы памяти данных при косвеной адресации: └──────┘ IRP0: 0= Страницы 0,1 (00h-FFh) 1= Страница 2,3 (100h-1FFh) Этот бит в кристалле PIC16C71 использовать не имеет смысла. Поэтому его можно использовать как бит общего назначения чтения/записи. Однако, надо помнить, что в последующих разработках он будет использоваться. Аппаратные Биты статуса 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. Программный счетчик в PIC16C71 имеет ширину 13 бит и способен адресовать 8К х 14бит объема программной памяти. Однако, физически на кристалле имеется только 1К х 14 памяти (адреса 0000h-03FFh). Обращение к адресам выше 3FFh фактически есть адресация в тот же первый килобайт. Вектор сброса находится по адресу 0000h, вектор прерывания находится по адресу 0004h. ┌──────────────────────┐ 0000H│ Reset Vector │ ├──────────────────────┤ │ .......... │ ├──────────────────────┤ 0004H│ Interrupt Vector │ ├──────────────────────┤ │ ........... │ │ │ │ │ Программа пользователя │ Program Codes │ │ │ 03FFH│ │ ├──────────────────────┤ 0400H│ ░░░░░░░░░░░░░░░░░░ │ Отсутствует на кристалле │ ░░░░░░░░░░░░░░░░░░ │ 1FFFH└──────────────────────┘ (f2). Программный счетчик Ширина программного счетчика - 13 бит. Младший байт программного счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт программного счетчика (PCH) не может быть прямым образом прочитан или записан. Старший байт программного счетчика может быть записан через PCLATH регистр, адрес которого 0Ah. В зависимости от того, загружается ли в программный счетчик новое значение во время выполнения команд CALL, GOTO, или в младший байт программного счетчика (PCL) производится запись, - старшие биты программного счетчика загружаются из PCLATH разными способами так, как показано на рисунке. Случай команд GOTO, CALL -------------------------- ┌──────┬──────────────────────────────────┐ │12..11│10 .............................0 │ └─────┴─────────────────────────────────┘ │ │ │ │ Биты из OpCode ─┬──────┬─────┐ └────── ░│ 4..3 │░░░░░│PCLATH ─┴──────┴─────┘ Случай команд, у которых результат помещается в f2 -------------------------------------------------- ┌────────────┬────────────────────────────┐ │12 ..... 8│ 7........................0 │ └───────────┴───────────────────────────┘ │ │ │ │ Биты из ALU ─┬────────────┐ └────── ░│ 4 ...... 0 │PCLATH ─┴────────────┘ Стек. Кристалл PIC16C71 имеет восьмиуровневый аппаратный стек шириной 13 бит. Область стека не принадлежит ни к программной области ни к области данных, а указатель стека пользователю недоступен. Текущее значение программного счетчика посылается в стек, когда выполняется команда CALL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW , RETFIE или RETURN), в программный счетчик выгружается содержимое стека. Регистр PCLATH (0Ah) не изменяется при операциях со стеком. Прерывания в PIC16C71 могут быть от четырех источников: - внешнее прерывание с ножки RB0/INT, - прерывание от переполнения счетчика/таймера RTCC, - прерывание по окончании аналого-цифрового преобразовкания - прерывание от изменения сигналов на ножках портаRB<7:4>. Все прерывания имеют один и тот же вектор/адрес - 0004h. Однако, в управляющем регистре прерываний INTCON записывается:- от какого именно источника поступил запрос прерывания. Записывается соответствующим битом-флагом. Такое прерывание может быть замаскировано индивидуально или общим битом. Единственным исключением является прерывание по концу аналого- цифрового преобразования. Этот флаг (ADIF) находится в другом регистре ADCON. Бит общего разрешения/запрещения прерывания GIE (INTCON <7>) разрешает (если=1) все индивидуально незамаскированные прерывания или запрещает (если=0) их. Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответствующего бита в регистре INTCON. Бит GIE обнуляется при сбросе. Когда начинает обрабатываться прерывание, бит GIE обнуляется, чтобы запретить повторные прерывания в момент выполнения текущего, и востанавливается по команде возврат из прерывания. ВНИМАНИЕ! Программа обработки прерывания не должна каким либо способом устанавливать бит GIE. Адрес возврата посылается в стек, а в программный счетчик загружается адрес 0004h. Время реакции на прерывание для внешних событий, таких как прерывание от ножки INT или порта B, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, таких как прерывание по переполнению от таймера RTCC. Время реакции всегда одинаковое. В подпрограмме обработки прерывания источник прерывания может быть определен по соответствующему биту в регистре флагов. Этот флаг-бит должен быть программно сброшен внутри подпрограммы. Флаги запросов прерываний не зависят от соответствеющих маскирующих битов и бита общего маскирования GIE. Команда возврата из прерывания RETFIE завершает прерывающую подпрограмму и устанавливает бит GIE, чтобы опять разрешить прерывания. Управляющий регистр прерываний и его биты ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ GIE │ ADIE │ RTIE │ INTE │ RBIE │ RTIF │ INTF │ RBIF │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘ Адрес: 0Bh Значение при reset= 0000 000? ┌──────┐ │ RBIF │ -Флаг прерывания от изменения на порту RB. └──────┘ Флаг устанавливается, когда сигнал на входе RB<7:4> изменяется. Флаг сбрасывается программным способом. ┌──────┐ │ INTF │ - Флаг прерывания INT. └──────┘ Флаг устанавливается, когда на ножке INT появляется сигнал от внешнего источникапрерывания. Сбрасывается программным способом. ┌──────┐ │ RTIF │ - Флаг прерывания от переполнения RTCC. └──────┘ Флаг устанавливается, когда RTCC переполняется. Флаг сбрасывается программным способом. ┌──────┐ │ RBIE │ - Бит разрешения/запрещения RBIF прерывания. └──────┘ RBIE = 0 : запрещает RBIE прерывание RBIE = 1 : разрешает RBIE прерывание ┌──────┐ │ INTE │ - Бит разрешения/запрещения INT прерывания. └──────┘ INTE = 0 : запрещает INT прерывание INTE = 1 : разрешает INT прерывание ┌──────┐ │ RTIE │ Бит разрешения/запрещения RTIF прерывания. └──────┘ RTIE = 0 : запрещает RTIE прерывание RTIE = 1 : разрешает RTIE прерывание ┌──────┐ │ ADIE │ - Бит разрешения/запрещения прерывания от аналого-цифрового └──────┘ преобразователя. ADIE = 0 : запрещает ADIF прерывание ADIE = 1 : разрешает ADIF прерывание ┌──────┐ │ GIE │ Бит разрешения/запрещения всех прерываний. └──────┘ GIE = 0 : запрещает прерывания GIE = 1 : разрешает прерывания Он cбрасывается автоматически при следующих обстоятельствах: - по включению питания. - по внешнему сигналу /MCLR при нормальной работе. - по внешнему сигналу /MCLR в режиме SLEEP. - по окончанию задержки таймера WDT при нормальной работе. - по окончанию задержки таймера WDT в режиме SLEEP. Внешнее прерывание на ножке RB0/INT осуществляется по фронту: либо по нарастающему (если бит 6 INTEDG=1 в регистре OPTION), либо по спадающему фронту (если INTEDG=0). Когда фронт обнаруживается на ножке INT, то бит запроса INTF устанавливается (INTCON <1>). Это прерывание может быть замаскировано установкой управляющего бита INTE в ноль (INTCON <4>). Бит запроса INTF должен быть очищен прерывающей программой перед тем, как опять разрешить это прерывание. Прерывание INT может вывести процессор из режима SLEEP, если перед входом в этот режим бит INTE был установлен в единицу. Состояние бита GIE также определяет: будет ли процессор переходить на подпрограмму прерывания после просыпания из режима SLEEP. Переполнение счетчика RTCC (FFh->00h) установит бит запроса RTIF (INTCON<2>). Это прерывание может быть разрешено/запрещено установкой/сбросом бита маски RTIE (INTCON<5>). Сброс запроса RTIF - дело программы обработки. Любое изменение сигналов на четырех входах порта RB<7:4> установит бит RBIF (INTCON<0>). Это прерывание может быть разрешено/запрещено установкой/сбросом бита маски RBIE (INTCON<3>). Сброс запроса RBIF - дело программы обработки. Конец АЦП преобразования обозначается выработкой прерывания и установкой флага ADIF в регистре ADCCON управления АЦП. Этот флаг должен сбрасываться программой. Кристалл имеет два порта: 5 бит порт RA и 8 бит порт RB с побитовой индивидуальной настройкой на ввод или на вывод. Эти же линии портов используются для подключения к АЦП и к линии внешнего прерывания. В этом случае число линий ввода/вывода общего пользования уменьшается. Порт А - это порт шириной 5 бит, соответствующие ножки кристалла RA<4:0>. Линии RA<3:0> двунаправленные, а линия RA4 -выход с открытым стоком. Адрес регистра порта А - 05h. Относящийся к порту А управляющий регистр TRISA расположен на первой странице регистров по адресу 85h. TRISA<4:0> - это регистр шириной 4 бит, он не управляет битом RA<5>, а только битами RA<4:0>. Ввод сигнала на ножке RA5 можно осуществлять, когда на него выведена "1". Если бит управляющего TRISA регистра имеет значение единица, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего бита регистра защелки. Ножки RA<3:0> могут быть также использованы как каналы аналоговых входов AIN3 - AIN0. Ножка RA3 также используется для обеспечения внешнего опорного напряжения для АЦП Vref. Чтобы определить конфигурацию ножек как цифровую (то есть порт) или как аналоговую, надо установить два бита в управляющем регистре ADCON1 (адрес 88h). Когда ножки определены как аналоговые входы, значение регистра TRISA не будет играть никакой роли. После сброса при включении ножки RA<3:0> конфигурируются как аналоговые входы. Защелка для бита данных ┌─────┐ Vdd от шины данных──┤D │ │ │ │ ┌────┐ ┌─┘ WR Port ───┤C /Q├───┬──┤ ├───┤│ └─────┘ ┌─│──┤XOR │ └─┐ Вывод │ │ └────┘ │ порта Это один из бит TRIS рег│ │ ├────┬───▒▒ ┌─────┐ │ │ │ │ от W рег.───┤D Q├─┘ │ ┌────┐ ┌─┘ │ │ │ └─┤ ├────┤│ │ ───┤C /Q├──┬──┤AND │ └─┐ │ по команде"TRIS f" └──R──┘ │ └────┘ │ │ │Reset│ Vss │ ┌────┐ │ │ на шину ─────┬────┤ 1 ├──┘ │ │ │ ├─ RD TRIS │ │ └────┘ │ │ Защелка на вход │ │ ┌────┐ ┌──────┐ ┌────────┐ │ └─┤ 1 ├─┤Q D├────┤TTL/CMOS├───┘ └─┬──┘ │ │ └────────┘ │ │ Clk├──┐ RD Port │ └──────┘ │ ─────────┴──────────────┘ Вывод RA4/RT имеет несколько другую схему. Она приведена ниже Защелка для бита данных ┌─────┐ от шины данных──┤D │ │ │ WR Port ───┤C /Q├───┐ └─────┘ │ Вывод │ RA4/RT Это один из бит TRIS рег │ ┌────┬───▒▒ ┌─────┐ │ │ │ от W рег.───┤D │ │ ┌────┐ ┌─┘ │ │ │ └─┤ ├────┤│ │ ───┤C /Q├──┬──┤AND │ └─┐ │ по команде"TRIS f" └──R──┘ │ └────┘ │ │ │Reset│ Vss │ ┌────┐ │ │ на шину ───┬────┤ 1 ├──┘ │ │ │ ├─ RD TRIS │ │ └────┘ │ │ Защелка на вход │ │ ┌────┐ ┌──────┐ ┌────────┐ │ └─┤ 1 ├─┤Q D├───┬┤Schmitt ├───┘ └─┬──┘ │ │ │└────────┘ │ │ Clk├─┐ │ RD Port │ └──────┘ │ │ ─────────┴─────────────┘ │ на вход счетчика RTCC │ ────────────────────────┘ Название ножки # Функция ножки. Альтернатива. ┌─────────────┬─┬──────────────────────────────────────┬──────────────────┐ │RA0/AIN0 │0│Порт ввода/вывода.Входные уровни ТТЛ. │Аналоговый вход │ │ │ │ │канала 0 │ ├─────────────┼─┼──────────────────────────────────────┼──────────────────┤ │RA1/AIN1 │1│Порт ввода/вывода.Входные уровни ТТЛ. │Аналоговый вход │ │ │ │ │канала 1 │ ├─────────────┼─┼──────────────────────────────────────┼──────────────────┤ │RA2/AIN2 │2│Порт ввода/вывода.Входные уровни ТТЛ. │Аналоговый вход │ │ │ │ │канала 2 │ ├─────────────┼─┼──────────────────────────────────────┼──────────────────┤ │RA3/AIN3/Vref│3│Порт ввода/вывода.Входные уровни ТТЛ. │Аналоговый вход │ │ │ │ │канала 3 или вход │ │ │ │ │внешнего опорного │ │ │ │ │напряжения. │ ├─────────────┼─┼──────────────────────────────────────┼──────────────────┤ │RA4/RT │4│Порт ввода/вывода.Выход-открытый │ Вход внешнего │ │ │ │коллектор. Вход - триггер Шмидтта. │ тактового сигнал │ │ │ │ │ для RTCC │ └─────────────┴─┴──────────────────────────────────────┴──────────────────┘ Порт В. Порт В - это двунаправленный порт, шириной в восемь бит (адрес регистра 06h). Относящийся к порту В управляющий регистр TRISB расположен на первой странице регистров по адресу 86h. Если бит управляющего TRISB регистра имеет значение единица, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. У каждой ножки порта В имеется небольшая активная нагрузка (около 250мкА) на линию питания. Она автоматически отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит RBPU OPTION<7> может отключить (RBPU=1) все нагрузки. Сброс при включении питания также отключает все нагрузки. Четыре линии порта В (RB<7:4>) имеют способность вызвать прерывание при изменении значения сигнала на любой из них. Если эти линии настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. ВНИМАНИЕ! При узких импульсах на входе, опрос процессором может "промахиваться" мимо фронтов. Такие импульсы советуем регистрировать через RTCC. Новая величина входного сигнала сравнивается со старой в каждом командном цикле. При несовпадении значения сигнала на ножке и в защелке, генерируется высокий уровень. Выходы детекторов "несовпадений" RB4,RB5,RB6,RB7 объединяются по ИЛИ и генерируют прерывание RBIF (запоминаемое в INTCON<0>). Любая линия, настроенная как вывод, не участвует в этом сравнении. Прерывание может вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов: 1) Запретить прерывания при помощи обнуления бита RBIE INTCON<3>. 2) Прочитать порт В. Это завершит состояние сравнения. Прерывание по несовпадению и программно устанавливаемые внутренние активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс например с клавиатурой, с выходом из режима SLEEP по нажатию клавиш. Ножка RB0 совмещена с входом внешнего прерывания INT. Название ножки # Функция ножки. Альтернатива. ┌───────┬─┬─────────────────────────────────────────────┬────────────────┐ │RB0/INT│0│Порт ввода/вывода.Входные уровни ТТЛ и │ Вход внешнего │ │ │ │внутренняя программируемая активная нагрузка.│ прерывания │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB1 │1│Порт ввода/вывода.Входные уровни ТТЛ и │ - │ │ │ │внутренняя программируемая активная нагрузка.│ │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB2 │2│Порт ввода/вывода.Входные уровни ТТЛ и │ - │ │ │ │внутренняя программируемая активная нагрузка.│ │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB3 │3│Порт ввода/вывода.Входные уровни ТТЛ и │ - │ │ │ │внутренняя программируемая активная нагрузка.│ │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB4 │4│Порт ввода/вывода.Входные уровни ТТЛ и │ Прерывание при │ │ │ │внутренняя программируемая активная нагрузка.│ изменении │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB5 │5│Порт ввода/вывода.Входные уровни ТТЛ и │ Прерывание при │ │ │ │внутренняя программируемая активная нагрузка.│ изменении │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB6 │6│Порт ввода/вывода.Входные уровни ТТЛ и │ Прерывание при │ │ │ │внутренняя программируемая активная нагрузка.│ изменении │ ├───────┼─┼─────────────────────────────────────────────┼────────────────┤ │RB7 │7│Порт ввода/вывода.Входные уровни ТТЛ и │ Прерывание при │ │ │ │внутренняя программируемая активная нагрузка.│ изменении │ └───────┴─┴─────────────────────────────────────────────┴────────────────┘ Проблемы при организации двунаправленных портов ----------------------------------------------- Некоторые команды внутренне выполняются как чтение+запись. Например, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. Например, команда BSF для бита 5 регистра f6 (порт В) сначала считает все восемь бит. Затем выполняются действия над битом 5 и новое значение байта целиком записывается в выходные защелки. Если другой бит регистра f6 используется в качестве двунаправленного ввода/вывода (скажем бит 0) и в данный момент он определен как входной, входной сигнал на этой ножке будет считан и записан обратно в выходную защелку этой-же ножки, затирая ее предыдущее состояние. До тех пор пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако, если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным. На ножку, работающую в режиме вывода, не должны "наваливаться" внешние источники токов("монтажное И", "монтажное ИЛИ"). Результирующие большие токи могут повредить кристалл. Последовательное обращение к портам ввода/вывода. ------------------------------------------------- Запись в порт вывода происходит в конце командного цикла. Но при чтении, данные должны быть стабильны в начале командного цикла. Будьте внимательны в операциях чтения, следующих сразу за записью в тот же порт. Здесь надо учитывать инерционность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения. Аналого-цифровой преобразователь (АЦП). Модуль АЦП содержит четыре входных аналоговых канала, мультиплексируемых на одну схему выборки/хранения и далее на АЦП. Опорное напряжение поступает извне через ножку RA3/AIN3/Vref или формируется внутри кристалла из Vdd. Преобразователь использует принцип последовательного приближения; 8 - битовый результат преобразования помещается в регистр ADRES (09h). Преобразования инициируются установкой управляющего бита (GO/DONE) в регистре ADCON. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки. Время преобразования есть функция периода генератора. Минимально возможное время преобразования 20 мкс. В конце преобразования бит GO/DONE очищается и активируется прерывание. Ошибка преобразования не превышает +- 1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd. Тактирование АЦП. АЦП работает от своего собственного тактового генератора или от генератора OSC1, как показано а следующей таблице: ┌─────────────────┬─────────────────────────────────┐ │Управляющий бит │ Задержка (должна быть > 2 мкс )│ │ ADCS1, ADCS0 │ │ ├─────────────────┼─────────────────────────────────┤ │ 00 │ 2 tosc │ │ 01 │ 8 tosc │ │ 10 │ 32 tosc │ │ 11 │ trc(2..6 мкс, 4мкс номинал) │ └─────────────────┴─────────────────────────────────┘ Время преобразования каждого бита занимает одинаковый интервал. Общее время измерения- 10 интервалов. Сам интервал должен быть не менее 2мкс. На низких частотах может быть выбран RC генератор. Однако его частота существенно зависит от напряжения питания, температуры и других параметров ( период от 2 до 6 мкс, номинал - 4 мкс). Управляющий регистр и регистр статуса АЦП (ADCN0). Регистр ADCON0 Адрес 08h Значение при включении питания= 00H 7 6 5 4 3 2 1 0 ┌──────┬──────┬──────┬──────┬──────┬─────────┬──────┬──────┐ │ ADCS1│ADCS0 │ │ CHS1 │ CHS0 │GO/DONE │ ADIF │ ADON │ └──────┴──────┴──────┴──────┴──────┴─────────┴──────┴──────┘ ┌──────┐ │ ADON │ - Включение АЦП. └──────┘ ADON = 0: АЦП не работает и не потребляет тока. ADON = 1: АЦП работает и занял линии IO ┌──────┐ │ ADIF │ - Флаг прерывания по окончанию аналого-цифрового преобразования. └──────┘ Флаг устанавливается, когда преобразование закончено. Флаг сбрасывается программно. ┌─────────┐ │GO:/DONE │ - Этот бит должен быть установлен, чтобы началось преобразовани └─────────┘ Он автоматически сбрасывается аппаратным способом, когда преобразование заканчивается. ┌──────┐ ┌──────┐ │ CHS1 │ │ CHS0 │ - Выбор аналогового канала. └──────┘ └──────┘ CH1,CH0 = 00: канал 0 (AIN0) 01: канал 1 (AIN1) 10: канал 2 (AIN2) 11: канал 3 (AIN3) ┌──────┐ ┌──────┐ │ADCS1 │ │ADCS0 │ -Выбор частоты преобразования. └──────┘ └──────┘ ADCS0,ADCS0 = 00: fosc/2 01: fosc/8 10: fosc/32 11: fRC (частота от собственного RC генератора) Подключение аналоговых входов. ------------------------------- Пользователь должен установить регистр ACON1 так, чтобы линии аналоговых сигналов были сконфигурированы как аналоговые входы. Так как линии аналоговых сигналов запараллелены с цифровыми выходами, которые имеют диоды защиты, подключенные к Vdd и к Vss в обратном направлении, то входной аналоговый сигнал должен будет ограничиваться этими значениями, иногда с увеличением тока в ножку. Чтобы избежать повреждений входных цепей, рекомендуется иметь последовательный ограничивающий резистор не менее 500Ом. Для источников сигнала, выходное сопротивление не должно быть больше 10 КОм. Тогда максимальная погрешность, вызванная током утечки, составляет +- 5 мВ или +- 0.25 LSB при Vdd=Vref= 5В (10 КОм * 5мкА). Другая причина ограничения максимального выходного сопротивления источника сигнала - это требование к запоминанию входного сигнала на специальном конденсаторе в схеме выборки хранения. Для снижения шума иногда добавляют внешний RC фильтр. И в этом случае значение R должно быть таким, чтобы суммарная величина сопротивления не превосходила 10КОм. Любой внешний компонент, подключаемый к аналоговому входу ( будь то конденсатор или стабилитрон ), должен иметь очень небольшой ток утечки. Управляющий регистр АЦП (ADCN1). Регистр ADCON1 Адрес 88h Значение при включении питания= 00H 7 6 5 4 3 2 1 0 ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ - │ - │ - │ - │ - │ - │ PCFG1│ PCFG0│ └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘ ┌──────┬──────┐ │ PCFG1│ PCFG0│ - Биты, которые определяют конфигурацию ножек RA0 - RA3: └──────┴──────┘ PCFG1,PCFG0 RA0,RA1 RA2 RA3 Vref 00 аналоговые входы аналоговый вход аналоговый вход Vdd 01 аналоговые входы аналоговый вход вход опорного RA3 напряжения 10 аналоговые входы цифровой вход цифровой вход Vdd 11 цифровые входы цифровой вход цифровой вход - Функционирование АЦП в режиме SLEEP. ------------------------------------- При входе в режим Sleep следует сбросить бит ADON в рег ADCON, чтобы уменьшить потребление тока. Если АЦП находился в процессе преобразования ( с использованием RC генератора), то преобразование будет завершено прямо в режиме Sleep. Флаг прерывания ADIF будет взведен и кристалл будет выведен из режима SLEEP, если флаг разрешения прерывания ADIE ранее был установлен. При таком режиме измерения отсутствуют импульсные помехи и обеспечивается максимально возможная точность преобразования, что полезно на высоких тактовых частотах. Если режим SLEEP инициализируется во время преобразования, которое использует внутренний генератор, как источник тактирования - преобразование будет прервано. В этом случае пользователь должен перезапустить АЦП после выхода из Sleep, начав с повторной выборки данных. Каждая команда PIC16C71 - это 14-битовое слово, которое разделено по смыслу на следующие части: - 1. код операции, -2. поле для одного и более операндов, которые могут участвовать или нет в этой команде. Система команд PIC16C71 включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления. Для байт-ориентированных команд "f" обозначает собой регистр, с которым производится действие; "d" - бит определяет, куда положить результат. Если "d" =0, то результат будет помещен в W регистр, при "d"=1 результат будет помещен в "f", упомянутом в команде. Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а "f" -это регистр , в котором этот бит расположен. Для команд передачи управления и опреаций с константами, "k" обозначает восьми или одинадцатибитную константу. Все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: -1. проверка условия и переход, -2.изменение программного счетчика как результат выполнения команды. Один командный цикл состоит из четырех периодов генератора. Таким Каждая команда PIC16C71 - это 14-битовое слово, которое разделено по смыслу на следующие части: - 1. код операции, -2. поле для одного и более операндов, которые могут участвовать или нет в этой команде. Система команд PIC16C71 включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления. Для байт-ориентированных команд "f" обозначает собой регистр, с которым производится действие; "d" - бит определяет, куда положить результат. Если "d" =0, то результат будет помещен в W регистр, при "d"=1 результат будет помещен в "f", упомянутом в команде. Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а "f" -это регистр , в котором этот бит расположен. Для команд передачи управления и опреаций с константами, "k" обозначает восьми или одинадцатибитную константу. Все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: -1. проверка условия и переход, -2.изменение программного счетчика как результат выполнения команды. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс. Байт-ориентированные команды. ───────────────────────────────────────────────────── Мнемокод Название Примечания команды ───────────────────────────────────────────────────── ADDWF f,d Сложение W с f 2,3 ANDWF f,d Логическое И W и f 2,3 CLRF f Сброс регистра f 3 CLRW - Сброс регистра W - COMF f,d Инверсия регистра f 2,3 DECF f,d Декремент регистра f 2,3 DECFSZ f,d Декремент f, пропустить 2,3 команду, если 0 INCF f,d Инкремент регистра f 2,3 INCFSZ f,d Инкремент f, пропустить 2,3 команду, если 0 IORWF f,d Логическое ИЛИ W и f 2,3 MOVF f,d Пересылка регистра f 2,3 MOVWF f Пересылка W в f 3 NOP - Холостая команда - RLF f,d Сдвиг f влево через перенос 2,3 RRF f,d Сдвиг f вправо через перенос 2,3 SUBWF f,d Вычитание W из f 2,3 SWAPF f,d Обмен местами тетрад в f 2,3 XORWF f,d Исключающее ИЛИ W и f 2,3 ADDLW k Сложение константы с W. - ANDLW k Логическое И константы и W - IORLW k Логическое ИЛИ константы и W - SUBLW k Вычитание W из константы. - MOVLW k Пересылка константы в W - XORLW k Исключающее ИЛИ константы и W - OPTION Загрузка W в OPTION регистр 1 TRIS f Загрузка TRIS регистра 1 ───────────────────────────────────────────────────── Бит ориентированные команды ────────────────────────────────────────────────────────── Мнемокод Название Примечания ────────────────────────────────────────────────────────── BCF f,b Сброс бита в регистре f 2,3 BSF f,b Установка бита в регистре f 2,3 BTFSC f,b Пропустить команду, - если бит равен нулю BTFSS f,b Пропустить команду, - если бит равен единице ────────────────────────────────────────────────────────── Переходы ────────────────────────────────────────────────────────────── Мнемокод Название Примечания ────────────────────────────────────────────────────────────── CALL k Вызов подпрограммы - CLRWDT Сброс Watchdog таймера - GOTO k Переход по адресу - RETLW k Возврат из подпрограммы с - загрузкой константы в W RETFIE Возврат из прерывания. - RETURN Возврат из подпрограммы. - SLEEP Переход в режим SLEEP - ────────────────────────────────────────────────────────────── Примечание 1: Команды TRIS и OPTION помещены в перечень команд для совместимости с семейством PIC16C5X. Их использование не рекомендуется. В PIC16C71 регистры TRIS и OPTION доступны для чтения и записи как обычные регистры с номером. Предупреждаем, что эти команды могут не поддерживаться в дальнейших разработках PIC16CXX. Примечание 2: Когда модифицируется регистр ввода/вывода, например MOVF 6,1, значение, используемое для модификации считывается непосредственно с ножек кристалла. Если значение защелки вывода для ножки, запрограммированной на вывод равно "1", но внешний сигнал на этом выводе "0" из-за "навала" снаружи, то будет считываться "0". Примечание 3: Если операндом этой команды является регистр f1 (и, если допустимо, d=1), то делитель, если он подключен к RTCC, будет обнулен. В PIC16C71 существуют различия между вариантами сбросов: 1) Сброс по включению питания. 2) Сброс по внешнему сигналу /MCLR при нормальной работе. 3) Сброс по внешнему сигналу /MCLR в режиме SLEEP. 4) Сброс по окончанию задержки таймера WDT при нормальной работе. 5) Сброс по окончанию задержки таймера WDT в режиме SLEEP. Некоторые из спец.регистров при сбросе не инициализируются. Они имеют случайное состояние при включении питания и не изменяются при других видах сбросов. Другая часть спец.регистров инициализируются в "состояние сброса" при всех видах сброса, кроме сброса по окончанию задержки таймера WDT в режиме SLEEP. Просто этот сброс рассматривается как временная задержка в нормальной работе. Есть еще несколько исключений. Программный счетчик всегда сбрасывается в ноль (0000h). Биты статуса TO и PD устанавливаются или сбрасываются в зависимости от варианта сброса. Эти биты используются программой для определения природы сброса. Их значения после сброса приведены в отдельной таблице. Кристалл PIC16C71 имеет встроенный детектор включения питания. Таймер запуска начинает счет выдержки времени после того, как напряжение питания пересекло уровень около 1,2...2,0 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер- выдержка на стабилизацию кварцевого генератора. Программируемый бит конфигурации позволяет разрешать или запрещать выдержку от встроенного таймера запуска. Выдержка запуска меняется от экземпляров кристалла, от питания и температуры. См. характеристики постоянного тока. Таймер на стабилизацию генератора отсчитывает 1024 импульса от начавшего работу генератора. Считается, что кварцевый генератор за это время вышел на режим. При использовании RC генераторов- выдержка на стабилизацию не производится. Затем включается таймер ожидания внешнего сброса /MCLR. Это необходимо для тех случаев, когда требуется синхронно запустить в работу несколько PIC контроллеров через общий для всех сигнал /MCLR. Если такого сигнала не поступает, то через время Tost вырабатывется внутренний сигнал сброса и контроллер начинает ход по программе. Здесь существует проблема, когда Vdd нарастает слишком медленно и все выдержки на запуск, а питание еще не достигло своего минимального значения Vdd(min) работоспособности. В таких случаях рекомендуем использовать внешние RC цепочки для сброса по /MCLR. Ниже приведена такая цепочка │Vdd ├ │▒│R │░ │▒│ │░ │ R1 │░ ├────▒▒▒▒▒──────┤/MCLR C│ │░ ═╪═ │░ │ ▀▀▀▀▀ Vss Здесь можно применить диод для быстрого разряда конденсатора при выключении питания. Рекомендуется резистор R < 40 кОМ, тогда на нем будет падать не более 0,2В. Резистор 100 Ом 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 пф │ │ │ 100 КГц │ 15 пф │ 15 пФ │ │ │ 200 КГц │ 0 - 15 пФ │ 0 - 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=100..1000 Ом. RC генератор. Когда не предъявляются требования к быстродействию и к точности по времени, ОТР кристалл, например PIC16C71-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 свободным │░ Регистр конфигурации пределителя и RTCC. Регистр OPTION (адрес 81h) доступен для чтения и записи и содержит различные управляющие биты, которые определяют конфигурацию пределителя, куда он подключен: к RTCC или WDT, знак фронта внешнего прерывания INT и внешнего сигнала для RTCC, подключение активной нагрузки на порту RB. Регистр OPTION Адрес 81h Значение при включении питания= FFH 7 6 1 0 ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ /RBPU│INTEDG│ RTS │ RTE │ PSA │ PS2 │ PS1 │ 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 ┌──────┐ │INTEDG│ - Фронт сигнала INT: └──────┘ 0 - прерывание по отрицательному фронту на ножке INT 1 - прерывание по положительному фронту на ножке INT ┌──────┐ │ /RBPU│ - Инверсный бит подключения активной нагрузки к порту B. └──────┘ /RBPU = 0: Активные нагрузки будут подключаться по алгоритму работы порта RB /RBPU = 1: Активные нагрузки порта В отключены всегда Встроенный Делитель Частоты Один и тот же восьмибитный счетчик может быть включен либо перед RTCC либо после Watchdog таймера. Отметим, что делитель работает только с одним из этих устройств. Повторяем, если делитель работает с RTCC, это значит, что в данный момент он не работает с Watchdog таймером и наоборот. Схему включения счетчика (см. в разделе RTCC. Биты PSA и PS0-PS2 в регистре OPTION определяют, с каким устройством работает делитель и настройку коэффициента деления. Когда делитель подключен к RTCC, все команды, которые записывают в RTCC (напр., CLRF 16 MOVWF 1, BSF 1,x... и т.д.) будут обнулять делитель. Когда он подключен к Watchdog таймеру, то пределитель вместе с Watchdog таймером будет обнулять команда CLRWDT. Содержимое пределителя программе недоступно. Подключение пределителя- прграммно управляемое. Ниже представлен фрагмент программы переключения с 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 Указанными программами следует пользоваться, даже если WDT запрещен. Биты установки конфигурации. Кристалл PIC16C71 имеет пять битов конфигурации, которые хранятся в EPROM и устанавливаются на этапе программирования кристалла. Эти биты могут быть запрограммированы (читается как `0`) или оставлены незапрограммироваными (читается `1`) для выбора подходящего варианта конфигурации устройства. Эти биты расположены в EPROM памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе. Ячейка конфигурации. 13 5 4 3 2 1 0 ┌──────────────────────┬─────┬────────┬────────┬────────┬────────┐ Адрес: │ │ CP │ PWRTE │ WDTE │ FOSC1 │ FOSC0 │ 2007h └──────────────────────┴─────┴────────┴────────┴────────┴────────┘ ┌────────┐ │ FOSC0 │ - Биты выбора типа генератора. │ FOSC1 │ FOSC1, FOSC0: └────────┘ 00 LP генератор 01 XT генератор 10 HS генератор 11 RC генератор ┌────────┐ │ WDTE │ - Бит разрешения работы WDT. └────────┘ WDTE = 1: WDT разрешен WDTE = 0: WDT запрещен ┌────────┐ │ PWRTE │ - Бит разрешения выдержки времени после детектирования └────────┘ включения питания PWRTE = 1: Выдержка будет производиться PWRTE = 0: Выдержки не будет ┌─────┐ │ CP │ - Бит защиты кода. └─────┘ CP = 1: Код защиты выключен CP = 0: Код защиты включен Остальные биты в слове не используются и читаются как единицы. Код идентификации Кристалл PIC16C71 имеет четыре слова, расположенные по адресу (2000h-2003h) Они предназначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. Как и слово конфигурации, они могут быть прочитаны или записаны только с помощью программатора. Доступа по программе к ним нет. Если кристалл защищен, пользователю рекомендуется использовать для идентификации только младшие семь бит каждого ID слова, а в старший бит записывать `1`. Тогда ID слова можно будет прочитать даже в защищенном варианте. Защита кода. Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты (CP) в слове конфигурации в ноль. Содержимое программы не может быть прочитано так, что с ним можно было бы работать. Кроме того, при установленном бите защиты становится невозможным изменять программу выше адреса 0040h. Доступны для программирования адреса 0000h-003Fh, адреса в которых расположен код идентификации и биты конфирурации. Проверка кристалла с установленной защитой. При считывании защищенного кристалла, чтение любого адреса памяти даст результат, похожий на 0000000XXXXXXX(двоичный код), где X- это 0 или 1. Чтобы проверить сохранность памяти в защищенном кристалле, следуйте правилам: 1) запрограммируйте и проверьте работу исправного кристалла. 2) установите защиту кода программы и считайте содержимое программной памяти в файл-эталон. 3) проверяйте любой защищенный кристалл путем сравнения его программмной памяти с содержимым этого эталона. Режим пониженного энергопотребления. Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинает счет времени, бит "PD" в регистре статуса (f3) сбрасывается, бит "TO" устанавливается, а встроенный генератор выключается. Порты ввода/вывода сохраняют состояние, которое они имели до входа в режим SLEEP. Для снижения потребляемого тока в этом режиме, ножки на вывод должны иметь такие значения, чтобы не протекал ток между кристаллом и внешними цепями. Ножки на ввод должны быть соединены внешними резисторами с высоким или низким уровнем, чтобы избежать токов переключения, вызываемых плавающими высокоомными входами. То же и про RTCC. Ножка /MCLR должна быть под напряжением Vihmc в этом режиме. Выводы OSC1, OSC2 следует подключить к Общ. через резистор 10 МОм. Выход из режима SLEEP. Выход из режима SLEEP осуществляется в результате следующих событий: 1. Внешний сброс - импульс низкого уровня на на ножке /MCLR. 2. Сброс при срабатывании WDT(если он разрешен) 3. Прерывания. (Прерывание с ножки INT,прерывание при изменении порта B, прерывание при завершении аналого-цифрового преобразования). При первом событии происходит сброс всего устройства. Два других события предполагают продолжение выполнения программы. Бит "PD" в регистре статуса (f3), который устанавливается при включении, но обнуляется командой "SLEEP", может быть использован для определения состояния процессора до "просыпания" или процессор был в режиме "SLEEP"(горячий старт), или было просто выключено питание (холодный старт). Бит "TO" позволяет определить, чем был вызван выход из режима SLEEP: или внешним сигналом на ножке /MCLR, или срабатыванием WDT. Чтобы устройство вышло из режима SLEEP через прерывание, это прерывание должно быть разрешено установкой соответствующей маски в регистре INTCON. При выходе из режима SLEEP будет выполняться фоновая программа, если общая маска запрещает все прерывания (GIE=0). Если GIE=1, то будет выполняться подпрограмма обработки прерываний. Максимальные значения электрических параметров Выход параметров за данные пределы может привести к повреждению микросхемы. Работа кристалла на предельно допустимых значениях в течение длительного времени повлияет на его надежность. ─────────────────────────────────────────────────────────── Интервал рабочих температур -55 ... +125С Температура хранения -65 ... +150С Напряжение на любой ножке относительно Vss (земли) (исключая Vdd и /MCLR) -0.6 ... Vdd+0.6 В Напряжение Vdd относительно Vss 0 ... +7.5 В Напряжение на /MCLR относительно Vss 0 ... + 14 В (Прим.2) Общая рассеиваемая мощность 800 мВт (Прим.1) Макс. ток в ножку Vss 150 мА Макс. ток в ножку Vdd 100 мА Макс. ток в любую ножку ввода +- 500 мкА Макс. втекающий ток (любая ножка Вывода) 25 мА Макс. вытекающий ток (любая ножка Вывода) 20 мА Макс. сумарный вытекающий ток для всех ножек порта_А 80мА Макс. сумарный вытекающий ток для всех ножек порта_В 150мА Макс. сумарный втекающий ток для всех ножек порта_А 50мА Макс. сумарный втекающий ток для всех ножек порта_В 100мА ──────────────────────────────────────────────────────────────── Примечания: 1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого корпуса. Рассеиваемая мощность вычисляется по следующей формуле: Pdis= Vdd*(Idd - Cумма(Ioh)) + Сумма ((Vdd - Voh)*Ioh) + + Сумма (Vol * Iol) 2. Понижение напряжения на ножке /MCLR ниже Vss(земля) вызывает большие токи, более 80 мА, и может привести к повреждению этой линии. Поэтому, рекомендуем подавать сигналы на ножку /MCLR через ограничивающий резистор 50-100 Ом. Характеристики постоянного тока: PIC16C71-04, PIC16C71-20. (Для комерческого, индустриального, автомобильного исполнения). (см. также характеристики для низкопотребляющего PIC16C71-LC --------------------------------------------------------------------------- Рабочая температура -40 <= Ta <= +125 C (для автомобильного) -40 <= Ta <= + 85 C (для индустриального 0 <= Ta <= + 70 C (для коммерческого) Рабочее напряжение 4.0 ... 6.0 В --------------------------------------------------------------------------- Символ Мин Типичное Макс Условия (Прим.1) --------------------------------------------------------------------------- Напряжение питания Vdd 4.0 - 6.0 В XT,RC,LPконфигур Vdd 4.5 - 5.5 В HS конфигурация --------------------------------------------------------------------------- Напряжение сохранения Vdr - 1,5 - В Устройство в данных в ОЗУ (Прим.2) в режиме SLEEP --------------------------------------------------------------------------- Напряжение на ножке Vdd в момент включения Vpor - Vss - В Смотри раздел питания, гарантирующее СБРОС сброс --------------------------------------------------------------------------- Скорость нарастания Vdd, Svdd 0.05* - - В/мс Смотри раздел гарантирующая сброс СБРОС --------------------------------------------------------------------------- Ток потребления (Прим.3) (Прим.5) Idd - 1.8 3.3 мA 4 MГц, Vdd=5.5В Idd - 35 70 мкA 32 KГц, Vdd=4.0В WDT запрещен,LP конф АЦП нет Idd - 9 20 мA 20 MГц, Vdd=5.5В HS конфигурация (PIC16C71-20 только) --------------------------------------------------------------------------- Ток потребления в в режиме SLEEP (Прим.4) Ipd - 7 28 мкA Vdd=4 В, WDT разрешен -40 C до +125 C Ipd - 1.0 14 мкA Vdd=4 В, WDT зап 0 C до +70 C Ipd - 1.0 16 мкA Vdd=4 В, WDT зап -40 C до +85 C Ipd - 1.0 20 мкA Vdd=4 В, WDT зап -40 C до +125 C --------------------------------------------------------------------------- Характеристики постоянного тока: PIC16LC71-04 Низкое потребление. (Для комерческого, индустриального, автомобильного исполнения). --------------------------------------------------------------------------- Рабочая температура -40 <= Ta <= +125 C (для автомобильного) -40 <= Ta <= + 85 C (для индустриального 0 <= Ta <= + 70 C (для коммерческого) Рабочее напряжение 3.0 ... 6.0 В, --------------------------------------------------------------------------- Символ Мин Типичное Макс Условия (Прим.1) --------------------------------------------------------------------------- Напряжение питания Vdd 3.0 - 6.0 В XT,RC,LPконфигур Vdd 4.5 - 5.5 В HS конфигурация --------------------------------------------------------------------------- Напряжение сохранения Vdr - 1,5 - В Устройство в данных в ОЗУ (Прим.2) в режиме SLEEP --------------------------------------------------------------------------- Напряжение на ножке Vdd в момент включения Vpor - Vss - В Смотри раздел питания, гарантирующее СБРОС сброс --------------------------------------------------------------------------- Скорость нарастания Vdd, Svdd 0.05* - - В/мс Смотри раздел гарантирующая сброс СБРОС --------------------------------------------------------------------------- Ток потребления (Прим.3) (Прим.5) Idd - 1.8 3.3 мA 4 MГц, Vdd=5.5В Idd - 35 70 мкA 32 KГц, Vdd=3.0В WDT запрещен,LP конф АЦП нет --------------------------------------------------------------------------- Ток потребления в в режиме SLEEP (Прим.5) Ipd - 5 20 мкA Vdd=3 В, WDT разрешен -40 C до +125 C Ipd - 0.6 9 мкA Vdd=3 В, WDT зап 0 C до +70 C Ipd - 0.6 12 мкA Vdd=3 В, WDT зап -40 C до +85 C Ipd - 0.6 16 мкA Vdd=3 В, WDT зап -40 C до +125 C --------------------------------------------------------------------------- Электрические параметры ножек корпусов. PIC16C71-04 (Индустриальные,Автомобильные,Комерческие) PIC16C71-10 (Индустриальные,Автомобильные,Комерческие) PIC16LC71-04 (Индустриальные,Автомобильные,Комерческие) --------------------------------------------------------------------------- Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +85 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Напряжение питания - типичное значение --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения -------------------------------------------------------------------------- Нижний уровень входного напряжения Линии I/O Vil Vss - 0.2 Vdd В /MCLR,RTCC,OSC1 Vilmc Vss - 0.2 Vdd В PIC16C71-RC(Прим.2) OSC1 Vilosc Vss - 0.3 Vdd В PIC16C71-XT,HS,LP --------------------------------------------------------------------------- Верхний уровень входного напряжения Линии I/O Vih 2.0 - Vdd В Vdd <=5,5 В Vih 0.36 Vdd - Vdd В Для всех Vdd /MCLR,RTCC,OSC1 Vihmc 0.8 Vdd - Vdd В PIC16C71-RC Прим.2) OSC1 Vihosc 0.7 Vdd - Vdd В PIC16C71-XT,HS,LP -------------------------------------------------------------------------- Ток утечки входа (Прим 3,4) Линии I/O RB Iil - 1 + 1 мкА Vss <= Vpin <=Vdd Линии в третьем состоянии Линии I/O RA Iil -0.5 +0.5 мкА Vss <= Vpin <=Vdd Линии в третьем состоянии /MCLR,RTCC Iil - 5 - + 5 мкА Vss <= Vpin <=Vdd OSC1 Iil - 5 - + 5 мкА Vss <= Vpin <=Vdd PIC16C71-XT,HS,LP ---------------------------------------------------------------------------- - Лог "0" Линии I/O Vol - - 0.6 В Iol=8.5мА, Vdd=4.5В, при -40 <= Ta <=+85 - - 0.6 В Iol=7.0мА, Vdd=4.5В, при -40 <= Ta <=+12 OSC2/CLKOUT Vol - - 0.6 В Iol=1.6мА, Vdd=4.5В, PIC16C71-RC при -40 <= Ta <=+85 - - 0.6 В Iol=1.2мА, Vdd=4.5В, при -40 <= Ta <=+12 -------------------------------------------------------------------------- Лог "1" Линии I/O Voh Vdd-0.7 - - В Ioh=-3.0мА, Vdd=4.5В (Прим.4) при -40 <= Ta <=+85 C Voh Vdd-0.7 - - В Ioh=-2.5мА, Vdd=4.5В при -40 <= Ta <=+12 OSC2/CLKOUT Voh Vdd-0.7 - - В Ioh=-1.3мА, Vdd=4.5В PIC16C71-RC при -40 <= Ta <=+85 Voh Vdd-0.7 - - В Ioh=-1.0мА, Vdd=4.5В при -40 <= Ta <=+12 --------------------------------------------------------------------------- Скоростные характеристики: PIC16C71-04 (Комерческие,Индустриальные,Автомобильные) PIC16C71-10 (Комерческие,Индустриальные,Автомобильные) PIC16LC71-04 (Комерческие,Индустриальные,Автомобильные) --------------------------------------------------------------------------- Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +85 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Рабочее напряжение - типичное значение --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1)измерения --------------------------------------------------------------------------- Частота внешнего Fosc - - 4 МГц RC,XT режи CLOCKIN (Прим.2) - - 4 МГц HS(PIC16C7 PIC16LC71- - - 20 МГц HS(PIC16C7 - - 200 КГц LP режим --------------------------------------------------------------------------- Частота генератора Fosc - - 4 МГц RC (Прим.2) 0.1 - 4 МГц XT 1 - 4 МГц HS(PIC16C7 PIC16LC71- 1 - 20 МГц HS(PIC16C7 - - 200 КГц LP --------------------------------------------------------------------------- Цикл команды Tcy 0.4 4/Fosc - мкс (Прим.2) --------------------------------------------------------------------------- Параметры внешнего генератора (Прим. 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 7* 18* 33* мс Vdd=5.0 В при-40 <=Ta<=+12 Выдержкаа запуска Tost - 1024tosc - мс tosc=период генератора Выдержка таймера при Tpwrt 28* 72* 132* мс Vdd=5.0 В включении питания при-40 <=Ta<=+12 -------------------------------------------------------------------------- Параметры портов Задержка включения относительно CLKOUT Tds 0.25 Tcy+30* - - нс Задержка спада Tdh 0* - - нс относительно CLKOUT Задержка спада Tpd - - 40* нс относительно CLKOUT --------------------------------------------------------------------------- XT,HS,LP OSC2 Cosc2 - - 15 пФ режимы --------------------------------------------------------------------------- Все линии Cio - - 50 пФ ввода/вывода --------------------------------------------------------------------------- * Усредненная величина, не подлежит нормированию Характеристики АЦП: PIC16C71-04 (Комерческие,Индустриальные,Автомобильные) PIC16C71-10 (Комерческие,Индустриальные,Автомобильные) PIC16LC71-04 (Комерческие,Индустриальные,Автомобильные) Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +85 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Vdd = 5.12 В --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия (Прим.1) измерения --------------------------------------------------------------------------- Разрешение Nr - - 8 бит - Vref=Vdd=5.12В (Прим.2) Интегральная ошибка Nint - - меньше чем - Vref=Vdd=5.12В +- 1 LSB (Прим.2) Дифференциальная Ndif - - меньше чем - Vref=Vdd=5.12В ошибка +- 1 LSB (Прим.2) Ошибка шкалы Nfs - - меньше чем - Vref=Vdd=5.12В +- 1 LSB (Прим.2) Ошибка смещения Noff - - меньше чем - Vref=Vdd=5.12В +- 1 LSB (Прим.2) Монотонность - - гарантировано - Опорное напряжение Vref 3.0 - Vdd+0.3 В Напряжение Vain Vss-0.3 - Vref В аналогового входа Рекомендуемое Zain - - 10.0 КОм сопротивление источника входного сигнала Период синхронизации tad - 2tosc - - ADCS1,0=00 (tosc >= 1мкс) - 8tosc - - ADCS1,0=01 (tosc >= 0.25мк - 32tosc - - ADCS1,0=10 (tosc >= 62.5 н 2.0 4.0 6.0 мкс ADCS1,0=11 (внутренний RC Время преобразования Tcnv - 10tad - - (не включает время выборки и хранения) Время выборки Tsmp 5 - - мкс Для сопротивлен источника сигна 10 КОм и ошибки более 1/8 LSB (Прим.3) Ток АЦП преобразования Iad - 180 - мкА Среднее потребл (Vdd) ние тока при ра ботающем АЦП (Прим.4) Ток источника опорно- Iref - - 1 мА При заряде го напряжения Vref - - 10 мкА В остальное вре (Прим.5) мя Характеристики АЦП для низкопотребляющего PIC16LC71-04 --------------------------------------------------------------------------- Рабочие условия, если не указано иначе Рабочая температура -40 <= Ta <= +85 C (Индустриальные) Рабочая температура -40 <= Ta <=+125 C (Автомобильные) Рабочая температура 0 <= Ta <= +70 C (Комерческие) Vdd = 3.0 В --------------------------------------------------------------------------- Характеристики Символ Мин Типичное Макс Единицы Условия Прим.1) измерения --------------------------------------------------------------------------- Разрешение Nr - - 8 бит - Vref=Vdd=3.0 В (Прим.2) --------------------------------------------------------------------------- Интегральная ошибка Nint - - меньше чем - Vref=Vdd=3.0 В +- 2 LSB (Прим.2) --------------------------------------------------------------------------- Дифференциальная Ndif - - меньше чем - Vref=Vdd=3.0 В ошибка +- 2 LSB (Прим.2) --------------------------------------------------------------------------- Ошибка шкалы Nfs - - меньше чем - Vref=Vdd=3.0 В +- 2 LSB (Прим.2) --------------------------------------------------------------------------- Ошибка смещения Noff - - меньше чем - Vref=Vdd=3.0 В +- 2 LSB (Прим.2) --------------------------------------------------------------------------- Монотонность - - гарантировано - --------------------------------------------------------------------------- Опорное напряжение Vref 3.0 - Vdd+0.3 В --------------------------------------------------------------------------- Напряжение Vain Vss-0.3 - Vref В аналогового входа --------------------------------------------------------------------------- Рекомендуемое Zain - - 10.0 КОм сопротивление источника входного сигнала --------------------------------------------------------------------------- Период синхронизации tad - 2tosc - - ADCS1,0=00 (tosc >= 1мкс) АЦП - 8tosc - - ADCS1,0=01 (tosc >= 0.25мк - 32tosc - - ADCS1,0=10 (tosc >= 62.5 н 3.0 6.0 9.0 мкс ADCS1,0=11 (внутренний RC --------------------------------------------------------------------------- Время преобразования Tcnv - 10tad - - (не включает время выборки и хранения) --------------------------------------------------------------------------- Время выборки Tsmp 5 - - мкс Для сопротивлен источника сигна 10 КОм и ошибки более 1/8 LSB (Прим.3) --------------------------------------------------------------------------- Ток АЦП преобразования Iad - 90 - мкА Среднее потребл (Vdd) ние тока при ра тающем АЦП (Прим.4) --------------------------------------------------------------------------- Ток источника опорно- Iref - - 1 мА При заряде го напряжения Vref - - 10 мкА В остальное вре (Прим.5) ---------------------------------------------------------------------------