Комментарий администратора: Внимание! Рекомендую сохранить данный текст, и после уже читать, так как многие таблицы и рисунки в браузере могут разъехаться!
Введение
Обзор характеристик
Cтруктурная схема
Отличия PIC16C84 от PIC16C5x
Переход от PIC16C5x к PIC16C84
Tипы корпусов и исполнений
Mаркировка при заказе
Разводка ножек
Назначение ножек
Максимальные значения электрических параметров
Обзор регистров и ОЗУ
Прямая адресация
Косвенная адресация
RTCC таймер/счетчик
Проблемы с таймером
Регистр статуса
Программные флаги статуса
Аппаратные флаги статуса
Организация встроенного ПЗУ
PC и адресация ПЗУ
Стек и возвраты из подпрограмм
Данные в EEPROM
Управление EEPROM
Организация прерываний
Регистр запросов и масок
Внешнее прерывание
Прерывание от RTCC
Прерывание от порта RB
Прерывание от EEPROM
Обзор регистров/портов
Схема линии порта A
Схема линии порта B
Проблемы c портами
Обзор команд и обозначения
Байт ориентированные команды
Операции с битами
Переходы
Замечания и пояснения
Условия сброса
Алгоритм сброса при вкл. питани
Watch Dog таймер
Типы генераторов Генератор на кварцах RC генератор Внешнее возбуждение Регистр OPTION Подключения делителя частоты
Конфигурационное слово
Индивидуальная метка
Защита программ от считывания
Режим пониженного энергопотребления.
Максимальные значения электрических параметров
Параметры постоянного тока
Скоростные параметры
*** Введение **************************************************************
PIC16C84 относится к семейству КМОП микроконтроллеров. Отличается тем,
что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и
64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и
высокой производительностью. Пользователи, которые знакомы с семейством
PIC16C5X могут посмотреть подробный список отличий нового от производимых
ранее контроллеров. Все команды состоят из одного слова (14 бит шириной) и
исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода,
которые выполняются за два цикла (800 нс). PIC16C84 имеет прерывание,
срабатывающее от четырех источников, и восьмиуровневый аппаратный стек.
Периферия включает в себя 8-битный таймер/счетчик с 8-битным
программируемым предварительным делителем (фактически 16 - битный таймер) и
13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25
мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода
упрощают внешние драйверы и, тем самым, уменьшается общая стоимость
системы. Разработки на базе контроллеров PIC16C84 поддерживается
ассемблером, программным симулятором, внутрисхемным эмулятором (только
фирмы Microchip) и программатором.
Серия PIC16C84 подходит для широкого спектра приложений от схем
высокоскоростного управления автомобильными и электрическими двигателями до
экономичных удаленных приемопередатчиков, показывающих приборов и связных
процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных
программах (коды передатчика, скорости двигателя, частоты приемника и
т.д.).
Малые размеры корпусов, как для обычного, так и для поверхностного
монтажа, делает эту серию микроконтроллеров пригодной для портативных
приложений. Низкая цена, экономичность, быстродействие, простота
использования и гибкость ввода/вывода делает PIC16C84 привлекательным даже
в тех областях, где ранее не применялись микроконтроллеры. Например,
таймеры, замена жесткой логики в больших системах, сопроцессоры.
Cледует добавить, что встроенный автомат программирования EEPROM
кристалла PIC16C84 позволяет легко подстраивать программу и данные под
конкретные требования даже после завершения ассемблирования и тестирования.
Эта возможность может быть использована как для тиражирования, так и для
занесения калибровочных данных уже после окончательного тестирования.
*** Обзор характеристик **************************************************
- только 35 простых команд;
- все команды выполняются за один цикл(400ns), кроме команд перехода -
2 цикла;
- рабочая частота 0 Гц ... 10 МГц (min 400 нс цикл команды)
- 14 - битовые команды;
- 8 - битовые данные;
- 1024 х 14 электрически перепрограммируемой программной памяти на
кристалле (EEPROM);
- 36 х 8 регистров общего использования;
- 15 специальных аппаратных регистров SFR;
- 64 x 8 электрически перепрограммируемой EEPROM памяти для данных;
- восьмиуровневый аппаратный стек;
- прямая, косвенная и относительная адресация данных и команд;
- четыре источника прерывания:
. внешний вход INT
. переполнение таймера RTCC
. прерывание при изменении сигналов на линиях порта B
. по завершению записи данных в память EEPROM
------------------------¬
¦Периферия и Ввод/Вывод ¦
L------------------------
- 13 линий ввода-вывода с индивидуальной настройкой;
- втекающий/вытекающий ток для управления светодиодами
. макс втекающий ток - 25 мА
. макс вытекающий ток - 20 мА
- 8 - битный таймер/счетчик RTCC с 8-битным программируемым
предварительным делителем;
- автоматический сброс при включении;
- таймер включения при сбросе;
- таймер запуска генератора;
- Watchdog таймер WDT с собственным встроенным генератором,
обеспечивающим повышенную надежность;
- EEPROM бит секретности для защиты кода;
- экономичный режим SLEEP;
- выбираемые пользователем биты для установки режима возбуждения
встроенного генератора:
- RC генератор : RC
- обычный кварцевый резонатор : XT
- высокочастотный кварцевый резонатор : HS
- экономичный низкочастотный кристалл : LP
- встроенное устройство программирования EEPROM памяти программ и
данных; используются только две ножки.
------------------¬
¦ КМОП технология ¦
L------------------
- экономичная высокоскоростная КМОП EPROM технология;
- статический принцип в архитектуре;
- широкий диапазон напряжений питания и температур:
. коммерческий: 2.0 ... 6.0 В, 0...+70С
. промышленный: 2.0 ... 6.0 В, -40...+70С
. автомобильный: 2.0 ... 6.0 В, -40...+125С
- низкое потребление
. 3 мА типично для 5В, 4МГц
. 50 мкА типично для 2В, 32КГц
. 26 мкА типично для SLEEP режима при 2В.
*** Cтруктурная схема PIC16C84 ******************************************
г===================¬
г=========¬ г==========¬ ¦ A L U ¦ г==========¬
¦ Stack 1 ¦ ¦ PC ¦ ¦---------T---------¦ ¦ Register ¦
¦ .... ¦----¦ 13 bit ¦----¦ W reg ¦ Status ¦ ¦ file ¦
¦ Stack 8 ¦ L====--====- L===--===--=========- L====--====-
L=========- г====--====¬ -- -- --
¦ EEPROM ¦---------- -- --
¦ prog.MEM ¦ -- 8-bit Data Bus --
¦1024 * 14 ¦-----------------------------------
L==========- -- --
-- г========¬ г====--=====¬
г===TRISA=====¬ ---¦ RTCC ¦ ¦Option Reg.¦
RA г===¦==========¬ ¦ -- L===T====- L===========-
------¦ Port RA0-RA3 ¦------ ¦ г===========¬ RTCC
¦ 4-bit ¦==- -- L--------¦ WDT/RTCC ¦-------
L==============- -- ---¦ Prescaler ¦ pin
г===TRISB=====¬ -- ¦ L=====T=====-
RB г===¦==========¬ ¦ -- ¦ г=====¦=====¬
------¦ Port RB0-RB7 ¦------ ----- ¦--¦ WatchDog ¦
¦ 8-bit ¦==- -- ¦ ¦ ¦ Timer ¦
L==============- -- ¦ ¦ L===========- OSC1
г================¬ -- ¦ ¦ г===========¬ ------
¦ ¦ -- ¦ L--¦Oscilator ¦-- OSC2
¦ EEPROM ¦ -- ¦ Sleep ¦ Timing & ¦-------
¦ Data Memory ¦----- ¦ -----¦ Control ¦-¬ MCLR
¦ 64 * 8 ¦ ¦ L=T=========- L-----
¦ ¦ ¦Disable ¦Osc.Select
L================- г==¦==========¦=========¬
¦ Configuration EEPROM ¦
L=======================-
Архитектура основана на концепции раздельных шин и областей памяти для
данных и для команд (Гарвардская архитектура). Шина данных и память данных
(ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ)
имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную
систему команд, разработанную так, что битовые, байтовые и регистровые
операции работают с высокой скоростью и с перекрытием по времени выборок
команд и циклов выполнения. 14- битовая ширина программной памяти
обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый
конвейер обеспечивает одновременную выборку и исполнение команды.Все
команды выполняются за один цикл, исключая команды переходов. В PIC16C84
программная память объемом 1К х 14 расположена внутри кристалла.
Исполняемая программа может находиться только во встроенном ПЗУ.
*** Отличия PIC16C84 от 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. Реализован встроенный автомат программирования EEPROM. Пользователь
может программировать PIC16C84, используя только пять ножек: Vdd, Vss,
/MCLR/Vpp, RB6(тактовая частота), RB7(вход/выход данных).
*** Переход от PIC16C5x к PIC16C84 ****************************************
Чтобы перевети код, написанный для PIC16C5X в код для PIC16C84
пользователь должен исполнить следующие шаги:
1. Заменить операции по выбору страниц программной памяти (биты PA2,
PA1, PA0) командами CALL, GOTO.
2. Пересмотреть все вычисляемые операции переходов( запись в PC или
сложение с PC, и т.д.) и удостовериться, что биты страниц устанавливаются
корректно и для нового кристалла.
3. Исключить переключение страниц памяти данных. Переопределить
переменные и перераспределить память для них.
4. Проверить запись в регистры STATUS, OPTION, FSR, т.к. они несколько
изменены.
5. Измените вектор сброса при включении на 0000h.
6. Обратите внимание, что адрес 07h - это несуществующий адрес памяти
данных.
*** Tипы корпусов и исполнений ********************************************
Обозначения корпусов для кристаллов 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 В
*** Mаркировка при заказе *************************************************
Обозначение микросхем складывается из следующих полей:
<Фирм.номер>-<Частота генератора><Темпер.диапазон>/<Корпус><Примеч>
<Фирм.номер бывает>: PIC16C84 - Vdd range 4...6 V
PIC16LC84 Vdd range 2...6 V
<Частота генератора>: 04 ---> 4 mHz
10 ---> 10mHz
Температурный диапазон бывает:
- от 0С до +70С
I от-40С до +85С
E от-40С до +125С
Корпус обозначается:
P - обычный пластмассовый DIP
SO -300 mil SOIC
ПРИМЕРЫ: ------------------------
PIC16C84-04/Pxxx 4 mHz, коммерческое исполнение в PDIP корпусе,
норм.диапазон Vdd, масочное ПЗУ с программой xxx
PIC16LC84-04I/SO 4 mHz, исполнение для промышленности,
расширенный диапазон питания, корпус=SOIC
PIC16C84-10E/P исполнение для автомобилей, 10 mHz, PDIP,
норм. питание
*** Разводка ножек ********************************************************
Функциональное назначение выводов см."Обозначения Выводов" или
Структуную Схему. Типы корпусов PDIP и др. см. "Корпуса".
PDIP, SOIC
-----------¬
RA2 -¦1 18¦-RA1
RA3 -¦ ¦-RA0
RA4/RTCC-¦ ¦-OSC1/CLKIN
MCLR-¦ ¦-OSC2/CLKOUT
Vss -¦ PIC16C84 ¦-Vdd
RB0/INT -¦ ¦-RB7
RB1 -¦ ¦-RB6
RB2 -¦ ¦-RB5
RB3 -¦9 10¦-RB4
L-----------
*** Назначение ножек ****************************************************
Обозначения ножек и их функциональное назначение
--------------T--------------------------------------T---------------------¬
¦Обозначение ¦ Нормальный режим ¦Режим записи EEPROM ¦
+-------------+--------------------------------------+---------------------+
¦RA0 - RA3 ¦ Двунаправленные линии ввода/ ¦ - ¦
¦ ¦ вывода.Входные уровни ТТЛ. ¦ ¦
+-------------+--------------------------------------+---------------------+
¦RA4/RTCC ¦ Вход через триггер ¦ ¦
¦ ¦ Шмитта. Ножка порта ввода/вывода с ¦ - ¦
¦ ¦ открытым стоком или вход частоты для¦ ¦
¦ ¦ таймера/счетчика RTCC. ¦ ¦
+-------------+--------------------------------------+---------------------+
¦RB0/INT ¦ Двунаправленная линия порта ввода/ ¦ ¦
¦ ¦ вывода или внешний вход прерывания. ¦ - ¦
¦ ¦ Уровни ТТЛ. ¦ ¦
+-------------+--------------------------------------+---------------------+
¦RB1 - RB5 ¦ Двунаправленные линии ввода/ ¦ - ¦
¦ ¦ вывода. Уровни ТТЛ. ¦ ¦
+-------------+--------------------------------------+---------------------+
¦RB6 ¦ Двунаправленные линии ввода/ ¦ Вход тактовой ¦
¦ ¦ вывода. Уровни ТТЛ. ¦ частоты для EEPROM ¦
+-------------+--------------------------------------+---------------------+
¦RB7 ¦ Двунаправленные линии ввода/ ¦ Вход/выход ¦
¦ ¦ вывода. Уровни ТТЛ. ¦ EEPROM данных. ¦
+-------------+--------------------------------------+---------------------+
¦/MCLR/Vpp ¦ Низкий уровень на этом ¦ Сброс контроллера. ¦
¦ ¦ входе генерирует сигнал сброса ¦ Для режима EEPROM ¦
¦ ¦ для контроллера. Активный низкий. ¦ - подать Vpp. ¦
+-------------+--------------------------------------+---------------------+
¦OSC1 ¦ Для подключения кварца, RC или ¦ ¦
¦/CLKIN ¦ вход внешней тактовой частоты. ¦ ¦
+-------------+--------------------------------------+---------------------+
¦OSC2 ¦ Генератор, выход тактовой ¦ ¦
¦/CLKOUT ¦ частоты в режиме RC генератора, ¦ ¦
¦ ¦ в остальных случаях - для подкл.кварц¦ ¦
+-------------+--------------------------------------+---------------------+
¦Vdd ¦ Напряжение ¦ Напряжение ¦
¦ ¦ питания ¦ питания. ¦
+-------------+--------------------------------------+---------------------+
¦Vss ¦ Общий(земля) ¦ Общий ¦
L-------------+--------------------------------------+----------------------
*** Максимальные значения электрических параметров ************************
Выход параметров за данные пределы может привести к повреждению
микросхемы. Работа кристалла на предельно допустимых значениях в течение
длительного времени повлияет на его надежность.
-------------------------------------------------------T------------------¬
¦ Интервал рабочих температур ¦ -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 мА ¦
¦ Макс. сумарный вытекающий ток для всех ножек порта_В ¦ 50 мА ¦
¦ Макс. сумарный втекающий ток для всех ножек порта_А ¦ 50 мА ¦
¦ Макс. сумарный втекающий ток для всех ножек порта_В ¦ 100 мА ¦
L------------------------------------------------------+-------------------
Примечания:
1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого
корпуса. Рассеиваемая мощность вычисляется по следующей формуле:
Pdis= Vdd*(Idd - Cумма(Ioh)) + Сумма ((Vdd - Voh)*Ioh) +
+ Сумма (Vol * Iol)
2. Понижение напряжения на ножке /MCLR ниже Vss(земля) вызывает большие
токи, более 80 мА, и может привести к повреждению этой линии. Поэтому,
рекомендуем подавать сигналы на ножку /MCLR через ограничивающий резистор
50-100 Ом.
*** Обзор регистров и ОЗУ *************************************************
Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно адресоваться
прямо или косвенно, через регистр указатель FSR (04h). Это также относится
и к EEPROM памяти данных-констант.
Page 0 Page 1
-----------------T-----------------¬
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 ¦ EEDATA ¦ EECON1 ¦ 88
+----------------+-----------------+
09 ¦ EEADR ¦ EECON2 ¦ 89
+----------------+-----------------+
0A ¦ PCLATH ¦ PCLATH ¦ 8A
+----------------+-----------------+
0B ¦ INTCON ¦ INTCON ¦ 8B
+----------------+-----------------+
0C ¦ ¦ ¦ 8C
¦ 36 регистров ¦ ¦
¦ общего <------ то-же ¦
¦ пользования ¦ ¦
2F ¦ ¦ ¦ AF
+----------------+-----------------+
30 ¦ ------------ ¦ ------------ ¦ B0
¦ ----не------ ¦ ------------ ¦
¦ ------------ ¦ ------------ ¦
¦ -существует- ¦ ------------ ¦
7F ¦ ------------ ¦ ------------ ¦ FF
L----------------+------------------
В регистре статуса (03h) есть биты выбора страниц, которые позволяют
обращаться к четырем страницам будущих модификаций этого кристалла. Однако
для PIC16C84 память данных существует только до адреса 02Fh. Первые 12
адресов используются для размещения регистров специального назначения.
Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего
назначения, которые представляют собой статическое ОЗУ. Некоторые регистры
специального назначения продублированы на обеих страницах, а некотрые
расположены на странице 1 отдельно. Когда установлена страница 1, то
обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам
можно адресоваться прямо или косвенно. В обоих случаях можно адресовать до
512 регистров.
*** Прямая адресация. *****************************************************
Когда производится прямая 9-битная адресация, младшие 7 бит берутся как
прямой адрес из кода операции, а два бита указателя страниц (RP1,RP0) из
регистра статуса (03h).
Status OpCode
¦ ¦
¦ ¦
RP1 RP0 6 ¦ 0
---T--¬ ---T--T--T--T--T--T--¬ ¦-
L--+--- L--+--+T-+--+--+--+--- ¦-
¦ ¦ ¦-
L----¬ ------ ¦-
¦ ¦ ¦-
ADDRESS ----------------------->+- RAM
¦-
*** Косвенная адресация **************************************************
f4 - Указатель косв.адресации
Любая команда, которая использует f0 (адрес 00) в качестве регистра
фактически обращается к указателю, который хранится в FSR (04h). Чтение
косвенным образом самого регистра f0 даст результат 00h. Запись в регистр
f0 косвенным образом будет выглядеть как Nop, но биты статуса могут быть
изменены. Необходимый 9 - битный адрес формируется объединением содержимого
8 - битного FSR регистра и бита IRP из регистра статуса.
Status FSR = 14
¦ ¦
¦ ¦
IRP 7 ¦ 0
----¬ ---T--T--T--T--T--T--¬ ¦-
L-T-- L--+--+T-+--+--+--+--- ¦-
¦ ¦ ¦-
L----¬ ------ ¦-
¦ ¦ ¦-
POINTER ----------------------->+- RAM
¦-
Обратите внимание, что некоторые регистры специальных функций
располагаются на странице 1. Чтобы адресоваться к ним, нужно дополнительно
установить в единицу бит RP0 в регистре статуса.
*** RTCC таймер/счетчик **************************************************
Структурная схема включения RTCC приведена ниже. Она содержит элемент
"MUX"это электронный переключатель.
¦¦ 8-bit
Clkout=Fosc/4 ---T----------------------¬ ¦¦ Data Bus
¦ г===¬ г===¬ г==¦===¬ г====¦¦=====¬
от RA4/RT===¬ L--¦MUX¦-T---¦MUX¦--¦ SYNC ¦--¦ RTCC ¦-¬
----¦XOR¦---------¦ ¦ ¦ --¦ ¦ ¦ ¦ L===========- ¦
--¦ ¦ L=T=- ¦ ¦ L=T=- L======- ¦
¦ L===- ¦ ¦ ¦ ¦ ¦
RTE RTS ¦ ¦ PSA установка
----------------------- L-------------------¬ RBIF
¦ г===¬ г===================¬ ¦ прерывания
L----¦MUX¦---¦ 8-bit Counter ¦ ¦
г======¬ --¦ ¦ L=T=T=T=T=T=T=T=T=T=- ¦
¦Watch ¦ ¦ L=T=- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ Dog ¦-+ ¦ г=¦=¦=¦=¦=¦=¦=¦=¦=¦=¬ PS0-PS2 ¦
¦Timer ¦ ¦ PSA ¦ 8-to-1 MUX ¦====== ¦
L======- ¦ L========T==========- ¦
¦ +----------------------
¦ ¦ г===¬
¦ L----¦MUX¦----- WD
L-----------------------¦ ¦ Time Out
L=T=-
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) доступен для любой команды так же, как любой другой регистр.
Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в
статус программно. Это следует иметь в виду при выполнении команды с
использованием регистра статуса. Например, команда CLRF f3 обнулит все
биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой
команды регистр статуса может и не иметь нулевое значение (из-за битов TO и
PD) f3=000??100. Поэтому рекомендуется для изменения регистра статуса
использовать только команды битовой установки BCF, BSF, MOVWF, которые не
изменяют остальные биты статуса. Воздействие всех команд на биты статуса
можно посмотреть в "Описании команд".
*** Программные флаги статуса *********************************************
Размещение флагов в регитсре статуса следующее:
b7 b6 b5 b4 b3 b2 b1 b0
------T-----T-----T----T----T---T----T---¬
f3 = ¦ IRP ¦ RP1 ¦ RP0 ¦ TO ¦ PD ¦ Z ¦ DC ¦ C ¦
L-----+-----+-----+----+----+---+----+----
----¬
¦ C ¦ - Флаг переноса/заема:
L----
Для команд 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 ¦ - Флаг десятичного переноса/заема:
L-----
Для команд ADDWF и SUBWF. Этот бит устанавливается, если в результате
операции из четвертого разряда происходит перенос. Механизм установки
десятичного бита переноса "DC" тот же самый, отличается тем, что
отслеживается перенос из четвертого бита.
----¬
¦ Z ¦ - Флаг нулевого результата:
L----
Устанавливается, если результатом арифметической или логической
операции является ноль.
-----¬
¦ PD ¦ - Power Down ( режим хранения данных) :
L-----
Устанавливается в "1" при включении питания или команде CLRWDT.
Сбрасывается в "0" командой SLEEP.
-----¬
¦ TO ¦ - Time Out. Флаг срабатывания Watchdog таймера:
L-----
Устанавливается в "1" при включению питания и командами CLRWDT, SLEEP.
Сбрасывается в "0" по завершению выдержки времени таймера WDT.
----------¬
¦ RP1, RP0¦ - Биты выбора страницы памяти данных при прямой адресации:
L----------
RP1,RP0:
00= Страница 0 (00h-7Fh)
01= Страница 1 (80h-FFh)
10= Страница 2 (100h-17Fh)
11= Страница 3 (180h-1FFh)
На каждой странице расположено 128 байт. В кристалле PIC16C84
используется только RP0. В этом кристалле RP1 может использоваться просто
как бит общего назначения чтения/записи. Однако надо помнить, что в
последующих разработках он будет использоваться.
-------¬
¦ IRP ¦ - Бит выбора страницы памяти данных при косвеной адресации:
L-------
IRP0:
0= Страницы 0,1 (00h-FFh)
1= Страница 2,3 (100h-1FFh)
Этот бит в кристалле PIC16C84 использовать не имеет смысла. Поэтому его
можно использовать как бит общего назначения чтения/записи. Однако, надо
помнить, что в последующих разработках он будет использоваться.
*** Аппаратные флаги статуса *********************************************
Аппаратные Биты статуса TO (Time Out) и PD (Power Down).
По состоянию битов регистра статуса "TO" и "PD" можно определить, чем
был вызван "Сброс":
- просто включением питания,
- срабатыванием таймера watchdog,
- выходом из режим а пониженного энергопотребления
(Sleep) в результате срабатывания watchdog таймера,
- по внешнему сигналу /MCLR.
На состояние этих битов могут повлиять только следующие события:
----------------T---T-----T-----------------------------------¬
¦События ¦ TO¦ PD ¦ Примечание ¦
+---------------+---+-----+-----------------------------------+
¦Включение ¦ 1 ¦ 1 ¦ - ¦
¦WDT timeout ¦ 0 ¦ Х ¦ Не воздействует на бит PD ¦
¦Sleep команда ¦ 1 ¦ 0 ¦ - ¦
¦CLRWDT команда ¦ 1 ¦ 1 ¦ - ¦
L---------------+---+-----+------------------------------------
Примечание: Событие WDT timeout происходит независимо от состояния TO
бита. Sleep команда выполняется независимо от состояния PD бита.
Ниже показаны состояния битов TO и PD после "Сброса"
-----T----T-------------------------------------------------¬
¦ TO ¦ PD ¦ "Сброс" был вызван следующими событиями ¦
+----+----+-------------------------------------------------+
¦ 0 ¦ 0 ¦ Выход из SLEEP по завершению задержки Watchdog ¦
¦ 0 ¦ 1 ¦ Завершение задержки Watchdog ( Не режим SLEEP) ¦
¦ X ¦ 0 ¦ Выход из SLEEP по внешнему сигналу /MCLR ¦
¦ 1 ¦ 1 ¦ Включение питания ¦
¦ X ¦ X ¦ "0"-Импульс на входе /MCLR ¦
L----+----+--------------------------------------------------
Примечание: Биты TO и PD сохраняют текущее состояние до тех пор, пока
не произойдет одно из событий перечисленных в таблице. "0"-Импульс низкого
уровня на входе кристалла /MCLR не не изменяет состояние битов TO и PD.
*** Организация встроенного ПЗУ ******************************************
Программный счетчик в PIC16C84 имеет ширину 13 бит и способен
адресовать 8Кх14бит объема программной памяти. Однако, физически на
кристалле имеется только 1Кх14 памяти (адреса 0000h-03FFh). Обращение к
адресам выше 3FFh фактически есть адресация в тот же первый килобайт.
Вектор сброса находится по адресу 0000h, вектор прерывания находится по
адресу 0004h.
EEPROM PIC16C84 рассчитан на ограниченное число циклов стирания/записи.
Чтобы записать в программную память, кристалл должен быть переведен в
специальный режим при котором на ножку /MCLR подается напряжение
программирования Vprg, а питание Vdd должно находиться в пределах 4.5 В ...
5.5В. PIC16C84 непригоден для применений, в которых часто модифицируется
программа. Запись в программную память осуществляется побитно,
последовательно с использованием только двух ножек.
*** PC и адресация ПЗУ ****************************************************
(f2). Программный счетчик
Ширина программного счетчика - 13 бит. Младший байт программного
счетчика (PCL) доступен для чтения и записи и находится в регистре 02h.
Старший байт программного счетчика (PCH) не может быть прямым образом
прочитан или записан. Старший байт программного счетчика может быть записан
через PCLATH регистр, адрес которого 0Ah. В зависимости от того,
загружается ли в программный счетчик новое значение во время выполнения
команд CALL, GOTO, или в младший байт программного счетчика (PCL)
производится запись, - старшие биты программного счетчика загружаются из
PCLATH разными способами так, как показано на рисунке.
Случай команд GOTO, CALL --------------------------
-------T----------------------------------¬
¦12..11¦10 .............................0 ¦
L------+-----------------------------------
¦ ¦
¦ ¦ Биты из OpCode
-T------T-----¬ L------
-¦ 4..3 ¦-----¦PCLATH
-+------+------
Случай команд, у которых результат помещается в f2
--------------------------------------------------
-------------T----------------------------¬
¦12 ..... 8¦ 7........................0 ¦
L------------+-----------------------------
¦ ¦
¦ ¦ Биты из ALU
-T------------¬ L------
-¦ 4 ...... 0 ¦PCLATH
-+-------------
*** Стек и возвраты из подпрограмм ****************************************
Кристалл PIC16C84 имеет восьмиуровневый аппаратный стек шириной 13 бит.
Область стека не принадлежит ни к программной области ни к области данных,
а указатель стека пользователю недоступен. Текущее значение программного
счетчика посылается в стек, когда выполняется команда CALL или производится
обработка прерывания. При выполнении процедуры возврата из подпрограммы
(команды RETLW , RETFIE или RETURN), в программный счетчик выгружается
содержимое стека. Регистр PCLATH (0Ah) не изменяется при операциях со
стеком.
*** Данные в EEPROM *******************************************************
Долговременная Память данных EEPROM.
Память данных EEPROM позволяет прочитать и записать байт информации.
При записи байта автоматически стирается предыдущее значение и записываются
новые данные (стирание перед записью). Все эти операции производит
встроенный автомат записи EEPROM. Содержимое ячеек этой памяти сохраняется
при выключении питания.
Кристалл PIC16C84 имеет память данных 64х8 EEPROM бит, которая
позволяет запись и чтение во время нормальной работы (во всем диапазоне
питающих напряжений). Эта память не принадлежит области регистров ОЗУ.
Доступ к ней осуществляется через два регистра: EEDATA <08h>, который
содержит в себе восьмибитовые данные для чтения/записи и EEADR <09h>,
который содержит в себе адрес ячейки к которой идет обращение.
Дополнительно имеется два управляющих регистра: EECON1 <88h> и EECON2
<89h>.
При считывании данных из памяти EEPROM необходимо записать требуемый
адрес в EEADR регистр и затем установить бит RD EECON1<0> в еденицу. Данные
появятся в следующем командном цикле в регистре EEDATA и могут быть
прочитаны. Данные в регистре EEDATA защелкиваются.
При записи в память EEPROM, необходимо сначала записать требуемый адрес
в EEADR регистр и данные в EEDATA регистр. Затем выполнить специальную
последовательность команд, производящуюю непосредственную запись:
movlv 55h
movwf EECON2
movlv AAh
movwf EECON2
bsf EECON1,WR ;установить WR бит, начать запись
Во время выполнения этого участка программы, все прерывания должны быть
запрещены для точного выполнения временной диаграммы. Время записи -
примерно 10мс. Фактическое время записи будет изменяться в зависимости от
напряжения, температуры и индивидуальных свойств кристалла. В конце записи
бит WR автоматически обнуляется, а флаг завершения записи EEIF, он же
запрос на прерывание, устанавливается.
Для предотвращения случайных записей в память данных предусмотрен
специальный бит WREN в регистре EECON1. Рекомендуется держать бит WREN
выключенным, кроме тех случаев, когда нужно обновить память данных. Более
того, кодовые сегменты, которые устанавливают бит WREN и те, которые
выполняют запись должны храниться на различных адресах, чтобы избежать
случайного выполнения их обоих при сбое программы.
*** Управление EEPROM *****************************************************
Управляющие регистры для EEPROM
--------------------------------
Название Функция Адрес Значение после включения
--------T------------------------------T------T------------¬
¦EEDATA ¦ EEPROM регистр данных ¦ 08h ¦ XXXX XXXX ¦
+-------+------------------------------+------+------------+
¦EEADR ¦ EEPROM регистр адреса ¦ 09h ¦ XXXX XXXX ¦
+-------+------------------------------+------+------------+
¦EECON1 ¦ EEPROM 1 управляющий регистр ¦ 88h ¦ 0000 X000 ¦
+-------+------------------------------+------+------------+
¦EECON2 ¦ EEPROM 2 управляющий регистр ¦ 89h ¦ - ¦
L-------+------------------------------+------+-------------
Регистры EECON1 и EECON2.
------------------------
Регистр EECON1 (адрес 88h) - это управляющий регистр шириной пять бит.
Младшие пять бит физически существуют, а старшие три бита читаются всегда
как `0`.
Регистр EECON1 Адрес 88h
Cброс при вкл.- 0000Х000
-------T------T------T------T------T------T------T------¬
¦ - ¦ - ¦ - ¦ EEIF ¦WRERR ¦ WREN ¦ WR ¦ RD ¦
L------+------+------+------+------+------+------+-------
7 6 1 0
Управляющие биты RD и WR запускают соответственно чтение и запись. Они
могут быть установлены только программно. Сбрасываются- аппаратно по
завершения операций чтения/записи. Запрет программного сброса бита WR
предотвращает преждевременное окончание записи.
-------¬
¦ RD ¦ - Бит чтения.
L-------
RD =1 : Запускает чтение памяти данных EEPROM. Чтение занимает
один цикл. Устанавливается программно. Обнуляется аппаратно.
-------¬
¦ WR ¦ - Бит записи.
L-------
WR =1 : Запускает запись в память данных EEPROM.
Устанавливается программно. Обнуляется аппаратно.
-------¬
¦ WREN ¦ - Бит разрешения записи в память данных EEPROM.
L-------
WREN = 1: Разрешена запись.
WREN = 0: Запрещена запись.
После включения питания WREN обнуляется.
Флаг ошибки WRERR устанавливается, когда процесс записи прерывается
сигналом сброса /MCLR или сигналом сброса от WDT таймера. Рекомендуем
проверять этот флаг WRERR и при необходимости производить перезапись
данных, данные и адрес которых сохраняются в регистрах EEDATA и EEADR.
-------¬
¦WRERR ¦ - Флаг ошибки записи.
L-------
WRERR = 1: Флаг устанавливается, когда операция записи
преждевременно прерывается сигналом сброса /MCLR (во время
обычного режима или режима SLEEP) или сигналом сброса WDT во
время обычного режима.
Флаг EEIF устанавливается, когда встроенный автомат завершает запись в
память данных. Он должен быть сброшен программно.
-------¬
¦ EEIF ¦ - Флаг завершения записи.
L-------
EEIF = 1: Флаг устанавливается, когда завершена запись.
Соответствующий бит разрешения прерывания - EEIE в
регистре INTCON.
*** Организация прерываний ************************************************
Прерывания в PIC16C84 могут быть от четырех источников:
- внешнее прерывание с ножки RB0/INT,
- прерывание от переполнения счетчика/таймера RTCC,
- прерывание по окончании записи данных в EEPROM
- прерывание от изменения сигналов на ножках портаRB<7:4>.
Все прерывания имеют один и тот же вектор/адрес - 0004h. Однако, в
управляющем регистре прерываний INTCON записывается:- от какого именно
источника поступил запрос прерывания. Записывается соответствующим
битом-флагом. Такое прерывание может быть замаскировано индивидуально или
общим битом. Единственным исключением является прерывание по концу записи в
EEPROM. Этот флаг находится в другом регистре EECON1.
Бит общего разрешения/запрещения прерывания GIE (INTCON <7>) разрешает
(если=1) все индивидуально незамаскированные прерывания или запрещает
(если=0) их. Каждое прерывание в отдельности может быть дополнительно
разрешено/запрещено установкой/сбросом соответствующего бита в регистре
INTCON.
Бит GIE обнуляется при сбросе. Когда начинает обрабатываться
прерывание, бит GIE обнуляется, чтобы запретить дальнейшие прерывания,
адрес возврата посылается в стек, а в программный счетчик загружается адрес
0004h. Время реакции на прерывание для внешних событий, таких как
прерывание от ножки INT или порта B, составляет приблизительно пять циклов.
Это на один цикл меньше, чем для внутренних событий, таких как прерывание
по переполнению от таймера RTCC. Время реакции всегда одинаковое.
В подпрограмме обработки прерывания источник прерывания может быть
определен по соответствующему биту в регистре флагов. Этот флаг-бит должен
быть программно сброшен внутри подпрограммы. Флаги запросов прерываний не
зависят от соответствеющих маскирующих битов и бита общего маскирования
GIE.
Команда возврата из прерывания RETFIE завершает прерывающую
подпрограмму и устанавливает бит GIE, чтобы опять разрешить прерывания.
*** Регистр запросов и масок **********************************************
Управляющий регистр прерываний и его биты
-------T------T------T------T------T------T------T------¬
¦ GIE ¦ EEIE ¦ RTIE ¦ INTE ¦ RBIE ¦ RTIF ¦ INTF ¦ RBIF ¦
L------+------+------+------+------+------+------+-------
Адрес: 0Bh
Значение при reset= 0000 000?
-------¬
¦ RBIF ¦ -Флаг прерывания от изменения на порту RB.
L-------
Флаг устанавливается, когда сигнал на входе RB<7:4> изменяется.
Флаг сбрасывается программным способом.
-------¬
¦ INTF ¦ - Флаг прерывания INT.
L-------
Флаг устанавливается, когда на ножке INT появляется сигнал от
внешнего источникапрерывания. Сбрасывается программным способом.
-------¬
¦ RTIF ¦ - Флаг прерывания от переполнения RTCC.
L-------
Флаг устанавливается, когда RTCC переполняется.
Флаг сбрасывается программным способом.
-------¬
¦ RBIE ¦ - Бит разрешения/запрещения RBIF прерывания.
L-------
RBIE = 0 : запрещает RBIE прерывание
RBIE = 1 : разрешает RBIE прерывание
-------¬
¦ INTE ¦ - Бит разрешения/запрещения INT прерывания.
L-------
INTE = 0 : запрещает INT прерывание
INTE = 1 : разрешает INT прерывание
-------¬
¦ RTIE ¦ Бит разрешения/запрещения RTIF прерывания.
L-------
RTIE = 0 : запрещает RTIE прерывание
RTIE = 1 : разрешает RTIE прерывание
-------¬
¦ EEIE ¦ - Бит разрешения/запрещения прерывания EEPROM записи.
L-------
EEIE = 0 : запрещает EEIF прерывание
EEIE = 1 : разрешает EEIF прерывание
-------¬
¦ GIE ¦ Бит разрешения/запрещения всех прерываний.
L-------
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 ****************************************************
Переполнение счетчика RTCC (FFh->00h) установит бит запроса RTIF
(INTCON<2>). Это прерывание может быть разрешено/запрещено
установкой/сбросом бита маски RTIE (INTCON<5>).
Сброс запроса RTIF - дело программы обработки.
*** Прерывание от порта RB ************************************************
Любое изменение сигналов на четырех входах порта RB<7:4> установит бит
RBIF (INTCON<0>). Это прерывание может быть разрешено/запрещено
установкой/сбросом бита маски RBIE (INTCON<3>).
Сброс запроса RBIF - дело программы обработки.
*** Прерывание от EEPROM **************************************************
Флаг запроса прерывания по окончании записи в EEPROM, EEIF (EECON1<4>)
устанавливается по окончании автоматической записи данных в EEPROM. Это
прерывание может быть замаскировано сбросом бита EEIE (INTCON<6>).
Сброс запроса EEIF - дело программы обработки.
*** Обзор регистров/портов ************************************************
Кристалл имеет два порта: 5 бит порт RA и 8 бит порт RB с побитовой
индивидуальной настройкой на ввод или на вывод.
*** Схема линии порта A ***************************************************
Порт А - это порт шириной 5 бит, соответствующие ножки кристалла
RA<4:0>. Линии RA<3:0> двунаправленные, а линия RA4 -выход с открытым
стоком. Адрес регистра порта А - 05h. Относящийся к порту А управляющий
регистр TRISA расположен на первой странице регистров по адресу 85h.
TRISA<4:0> - это регистр шириной 5 бит. Если бит управляющего TRISA
регистра имеет значение единица, то соответствующая линия будет
устанавливаться на ввод. Ноль переключает линию на вывод и одновременно
выводит на нее содержимое соответствующего регистра защелки. Ниже дана
схема портов RA0..RA3
Защелка для бита данных
------¬ Vdd
от шины данных--+D ¦ ¦
¦ ¦ -----¬ ---
WR Port ---+C /Q+---T--+ +---+¦
L------ --¦--+XOR ¦ L-¬ Вывод
¦ ¦ L----- ¦ порта
Это один из бит TRIS рег¦ ¦ +----T-----
------¬ ¦ ¦ ¦ ¦
от W рег.---+D Q+-- ¦ -----¬ --- ¦
¦ ¦ L-+ +----+¦ ¦
---+C /Q+--T--+AND ¦ L-¬ ¦
по команде"TRIS f" L--R--- ¦ L----- ¦ ¦
¦Reset¦ Vss ¦
-----¬ ¦ ¦
на шину -----T----+ 1 +--- ¦
¦ ¦ +- RD TRIS ¦
¦ L----- ¦
¦ Защелка на вход ¦
¦ -----¬ -------¬ ---------¬ ¦
L-+ 1 +-+Q D+----+TTL/CMOS+----
L-T--- ¦ ¦ L---------
¦ ¦ Clk+--¬
RD Port ¦ L------- ¦
---------+---------------
Вывод RA4/RT имеет несколько другую схему. Она приведена ниже
Защелка для бита данных
------¬
от шины данных--+D ¦
¦ ¦
WR Port ---+C /Q+---¬
L------ ¦ Вывод
¦ RA4/RT
Это один из бит TRIS рег ¦ -----T-----
------¬ ¦ ¦ ¦
от W рег.---+D ¦ ¦ -----¬ --- ¦
¦ ¦ L-+ +----+¦ ¦
---+C /Q+--T--+AND ¦ L-¬ ¦
по команде"TRIS f" L--R--- ¦ L----- ¦ ¦
¦Reset¦ Vss ¦
-----¬ ¦ ¦
на шину ---T----+ 1 +--- ¦
¦ ¦ +- RD TRIS ¦
¦ L----- ¦
¦ Защелка на вход ¦
¦ -----¬ -------¬ ---------¬ ¦
L-+ 1 +-+Q D+---T+Schmitt +----
L-T--- ¦ ¦ ¦L---------
¦ ¦ Clk+-¬ ¦
RD Port ¦ L------- ¦ ¦
---------+-------------- ¦
на вход счетчика RTCC ¦
-------------------------
Название
ножки # Функция ножки. Другие функции.
--------T-T-------------------------------------------T------------------¬
¦RA0 ¦0¦Порт ввода/вывода.Входные уровни ТТЛ. ¦ - ¦
+-------+-+-------------------------------------------+------------------+
¦RA1 ¦1¦Порт ввода/вывода.Входные уровни ТТЛ. ¦ - ¦
+-------+-+-------------------------------------------+------------------+
¦RA2 ¦2¦Порт ввода/вывода.Входные уровни ТТЛ. ¦ - ¦
+-------+-+-------------------------------------------+------------------+
¦RA3 ¦3¦Порт ввода/вывода.Входные уровни ТТЛ. ¦ - ¦
+-------+-+-------------------------------------------+------------------+
¦RA4/RT ¦4¦Порт ввода/вывода.Выход-открытый коллектор.¦ Вход внешнего ¦
¦ ¦ ¦Вход - триггер Шмидтта. ¦ тактового сигнал ¦
¦ ¦ ¦ ¦ для RTCC ¦
L-------+-+-------------------------------------------+-------------------
*** Схема линии порта B ***************************************************
Порт В - это двунаправленный порт, шириной в восемь бит (адрес регистра
06h). Относящийся к порту В управляющий регистр TRISB расположен на первой
странице регистров по адресу 86h. Если бит управляющего TRISB регистра
имеет значение единица, то соответствующая линия будет устанавливаться на
ввод. Ноль переключает линию на вывод и одновременно выводит на нее
содержимое соответствующего регистра защелки.
У каждой ножки порта В имеется небольшая активная нагрузка (около
100мкА) на линию питания. Она автоматически отключается, если эта ножка
запрограммирована как вывод. Более того, управляющий бит RBPU OPTION<7>
может отключить (RBPU=1) все нагрузки. Сброс при включении питания также
отключает все нагрузки.
Четыре линии порта В (RB<7:4>) имеют способность вызвать прерывание при
изменении значения сигнала на любой из них. Если эти линии настроены на
ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новая величина
входного сигнала сравнивается со старой в каждом командном цикле. При
несовпадении значения сигнала на ножке и в защелке, генерируется высокий
уровень. Выходы детекторов "несовпадений" RB4,RB5,RB6,RB7 объединяются по
ИЛИ и генерируют прерывание RBIF (запоминаемое в INTCON<0>). Любая линия,
настроенная как вывод, не участвует в этом сравнении. Прерывание может
вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания
следует сбросить запрос прерывания одним из следующих способов:
1) Запретить прерывания при помощи обнуления бита RBIE INTCON<3>.
2) Прочитать порт В. Это завершит состояние сравнения.
3) Обнулить бит RBIF INTCON<0>.
Прерывание по несовпадению и программно устанавливаемые внутренние
активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс
например с клавиатурой, с выходом из режима SLEEP по нажатию клавиш.
Ножка RB0 совмещена с входом внешнего прерывания INT.
Название
ножки # Функция ножки. Другие функции.
--------T-T---------------------------------------------T----------------¬
¦RB0/INT¦0¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ Вход внешнего ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ прерывания ¦
+-------+-+---------------------------------------------+----------------+
¦RB1 ¦1¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ - ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ ¦
+-------+-+---------------------------------------------+----------------+
¦RB2 ¦2¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ - ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ ¦
+-------+-+---------------------------------------------+----------------+
¦RB3 ¦3¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ - ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ ¦
+-------+-+---------------------------------------------+----------------+
¦RB4 ¦4¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ Прерывание при ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ изменении ¦
+-------+-+---------------------------------------------+----------------+
¦RB5 ¦5¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ Прерывание при ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ изменении ¦
+-------+-+---------------------------------------------+----------------+
¦RB6 ¦6¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ Прерывание при ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ изменении ¦
+-------+-+---------------------------------------------+----------------+
¦RB7 ¦7¦Порт ввода/вывода.Входные уровни ТТЛ и ¦ Прерывание при ¦
¦ ¦ ¦внутренняя программируемая активная нагрузка.¦ изменении ¦
L-------+-+---------------------------------------------+-----------------
*** Проблемы c портами ****************************************************
Проблемы при организации двунаправленных портов
-----------------------------------------------
Некоторые команды внутренне выполняются как чтение+запись. Например,
команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят
результат обратно. Здесь необходима осторожность. Например, команда BSF для
бита 5 регистра f6 (порт В) сначала считает все восемь бит. Затем
выполняются действия над битом 5 и новое значение байта целиком
записывается в выходные защелки. Если другой бит регистра f6 используется в
качестве двунаправленного ввода/вывода (скажем бит 0) и в данный момент он
определен как входной, входной сигнал на этой ножке будет считан и записан
обратно в выходную защелку этой-же ножки, затирая ее предыдущее состояние.
До тех пор пока эта ножка остается в режиме ввода, никаких проблем не
возникает. Однако, если позднее линия 0 переключится в режим вывода, ее
состояние будет неопределенным.
На ножку, работающую в режиме вывода, не должны "наваливаться" внешние
источники токов("монтажное И", "монтажное ИЛИ"). Результирующие большие
токи могут повредить кристалл.
Последовательное обращение к портам ввода/вывода.
------------------------------------------------
Запись в порт вывода происходит в конце командного цикла. Но при
чтении, данные должны быть стабильны в начале командного цикла. Будьте
внимательны в операциях чтения, следующих сразу за записью в тот же порт.
Здесь надо учитывать инерционность установления напряжения на выводах.
Может потребоваться программная задержка, чтобы напряжение на ножке
(зависит от нагрузки) успело стабилизироваться до начала исполнения
следующей команды чтения.
*** Обзор команд и обозначения ********************************************
Каждая команда PIC16C84 - это 14-битовое слово, которое разделено по
смыслу на следующие части: - 1. код операции, -2. поле для одного и более
операндов, которые могут участвовать или нет в этой команде. Система команд
PIC16C84 включает в себя байт-ориентированные команды, бит-ориентированные,
операции с константами и команды передачи управления.
Для байт-ориентированных команд "f" обозначает собой регистр, с которым
производится действие; "d" - бит определяет, куда положить результат. Если
"d" =0, то результат будет помещен в W регистр, при "d"=1 результат будет
помещен в "f", упомянутом в команде.
Для бит-ориентированных команд "b" обозначает номер бита, участвующего
в команде, а "f" -это регистр , в котором этот бит расположен.
Для команд передачи управления и опреаций с константами, "k" обозначает
восьми или одинадцатибитную константу.
Все команды выполняются в течение одного командного цикла. В двух
случаях исполнение команды занимает два командных цикла: -1. проверка
условия и переход, -2.изменение программного счетчика как результат
выполнения команды. Один командный цикл состоит из четырех периодов
генератора. Таким образом, для генератора с частотой 4 МГц время исполнения
командного цикла будет 1 мкс.
*** Байт ориентированные команды ******************************************
---------------T--------------------------------T------------¬
¦ Мнемокод ¦ Название ¦ Примечания ¦
¦ ¦ команды ¦ ¦
+--------------+--------------------------------+------------+
¦ 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 ¦
L--------------+--------------------------------+-------------
*** Бит ориентированные команды *******************************************
----------------T-------------------------------T------------¬
¦ Мнемокод ¦ Название ¦ Примечания ¦
+---------------+-------------------------------+------------+
¦ BCF f,b ¦ Сброс бита в регистре f ¦ 2,3 ¦
¦ BSF f,b ¦ Установка бита в регистре f ¦ 2,3 ¦
¦ BTFSC f,b ¦ Пропустить команду, ¦ - ¦
¦ ¦ если бит равен нулю ¦ ¦
¦ BTFSS f,b ¦ Пропустить команду, ¦ - ¦
¦ ¦ если бит равен единице ¦ ¦
L---------------+-------------------------------+-------------
*** Переходы **************************************************************
---------------T-----------------------------------T-------------¬
¦ Мнемокод ¦ Название ¦ Примечания ¦
+--------------+-----------------------------------+-------------+
¦ CALL k ¦ Вызов подпрограммы ¦ - ¦
¦ CLRWDT ¦ Сброс Watchdog таймера ¦ - ¦
¦ GOTO k ¦ Переход по адресу ¦ - ¦
¦ RETLW k ¦ Возврат из подпрограммы с ¦ - ¦
¦ ¦ загрузкой константы в W ¦ ¦
¦ RETFIE ¦ Возврат из прерывания. ¦ - ¦
¦ RETURN ¦ Возврат из подпрограммы. ¦ - ¦
¦ ¦ ¦ ¦
¦ SLEEP ¦ Переход в режим SLEEP ¦ - ¦
L--------------+-----------------------------------+--------------
*** Замечания и пояснения *************************************************
Примечание 1: Команды TRIS и OPTION помещены в перечень команд для
совместимости с семейством PIC16C5X. Их использование не рекомендуется. В
PIC16C84 регистры TRIS и OPTION доступны для чтения и записи как обычные
регистры с номером. Предупреждаем, что эти команды могут не поддерживаться
в дальнейших разработках PIC16CXX.
Примечание 2: Когда модифицируется регистр ввода/вывода, например MOVF
6,1, значение, используемое для модификации считывается непосредственно с
ножек кристалла. Если значение защелки вывода для ножки,
запрограммированной на вывод равно "1", но внешний сигнал на этом выводе
"0" из-за "навала" снаружи, то будет считываться "0".
Примечание 3: Если операндом этой команды является регистр f1 (и, если
допустимо, d=1), то делитель, если он подключен к RTCC, будет обнулен.
*** Условия сброса ********************************************************
В PIC16C84 существуют различия между вариантами сбросов:
1) Сброс по включению питания.
2) Сброс по внешнему сигналу /MCLR при нормальной работе.
3) Сброс по внешнему сигналу /MCLR в режиме SLEEP.
4) Сброс по окончанию задержки таймера WDT при нормальной работе.
5) Сброс по окончанию задержки таймера WDT в режиме SLEEP.
Некоторые из спец.регистров при сбросе не инициализируются. Они имеют
случайное состояние при включении питания и не изменяются при других видах
сбросов. Другая часть спец.регистров инициализируются в "состояние сброса"
при всех видах сброса, кроме сброса по окончанию задержки таймера WDT в
режиме SLEEP. Просто этот сброс рассматривается как временная задержка в
нормальной работе. Есть еще несколько исключений. Программный счетчик
всегда сбрасывается в ноль (0000h). Биты статуса TO и PD устанавливаются
или сбрасываются в зависимости от варианта сброса. Эти биты используются
программой для определения природы сброса. Их значения после сброса
приведены в таблице.
Состояние регистров после сброса представлено в таблице. Там приняты
обозначения: u -не изменяется, x -неизвестно, - не исполняется,читается как
`0`. ? - будет установлен по окончанию записи в EEPROM
---------T----T---------T---------T----------T----------T---------T---------¬
¦ W ¦ - ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ INDIR ¦00h ¦ - ¦ - ¦ - ¦ - ¦ - ¦ - ¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ RTCC ¦01h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ PC ¦02h ¦ 0000h ¦ 0000h ¦ PC+1 ¦ 0000h ¦ 0000h ¦ PC+1 ¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ STATUS ¦03h ¦0001 1xxx¦0000 1uuu¦uuu0 0uuu ¦000u uuuu ¦0001 0uuu¦uuu1 0uuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ FSR ¦04h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ PORT A ¦05h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ PORT B ¦06h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ TRIS A ¦85h ¦---1 1111¦---1 1111¦---u uuuu ¦---1 1111 ¦---1 1111¦---u uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ TRIS B ¦86h ¦1111 1111¦1111 1111¦uuuu uuuu ¦1111 1111 ¦1111 1111¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ OPTION ¦81h ¦1111 1111¦1111 1111¦uuuu uuuu ¦1111 1111 ¦1111 1111¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ EEDATA ¦08h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ EEADR ¦09h ¦xxxx xxxx¦uuuu uuuu¦uuuu uuuu ¦uuuu uuuu ¦uuuu uuuu¦uuuu uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ EECON1 ¦88h ¦---0 0000¦---0 ?000¦---u uuuu ¦---0 ?000 ¦---0 ?000¦---u uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ EECON2 ¦89h ¦ - ¦ - ¦ - ¦ - ¦ - ¦ - ¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ PCLATH ¦0Ah ¦---0 0000¦---0 0000¦---u uuuu ¦---0 0000 ¦---0 0000¦---u uuuu¦
+--------+----+---------+---------+----------+----------+---------+---------+
¦ INTCON ¦0Bh ¦0000 000x¦0000 000u¦uuuu uuuu ¦0000 000u ¦0000 0000¦uuuu uuuu¦
L--------+----+---------+---------+----------+----------+---------+----------
*** Алгоритм сброса при вкл. питани ***************************************
Кристалл PIC16C84 имеет встроенный детектор включения питания. Таймер
запуска начинает счет выдержки времени после того, как напряжение питания
пересекло уровень около 1,2...1,8 Вольт. По истечении выдержки около 72мс
считается, что напряжение достигло номинала и запускается другой
таймервыдержка на стабилизацию кварцевого генератора. Программируемый бит
конфигурации позволяет разрешать или запрещать выдержку от встроенного
таймера запуска. Выдержка запуска меняется от экземпляров кристалла, от
питания и температуры. См. характеристики постоянного тока.
Таймер на стабилизацию генератора отсчитывает 1024 импульса от
начавшего работу генератора. Считается, что кварцевый генератор за это
время вышел на режим. При использовании RC генераторов- выдержка на
стабилизацию не производится.
Затем включается таймер ожидания внешнего сброса /MCLR. Это необходимо
для тех случаев, когда требуется синхронно запустить в работу несколько PIC
контроллеров через общий для всех сигнал /MCLR. Если такого сигнала не
поступает, то через время Tost вырабатывется внутренний сигнал сброса и
контроллер начинает ход по программе. Время Tost программируется битами
конфигурации в EEPROM.
Здесь существует проблема, когда Vdd нарастает слишком медленно и все
выдержки на запуск, а питание еще не достигло своего минимального значения
Vdd(min) работоспособности. В таких случаях рекомендуем использовать
внешние RC цепочки для сброса по /MCLR. Ниже приведена такая цепочка
¦Vdd
+
¦-¦R ¦-
¦-¦ ¦-
¦ R1 ¦-
+---------------+/MCLR
C¦ ¦-
=+= ¦-
¦
-----
Vss
Здесь можно применить диод для быстрого разряда конденсатора при
выключении питания. Рекомендуется резистор R < 40 кОМ, тогда на нем будет
падать не более 0,2В. Резистор 100 Ом OSC1
¦ ¦
¦ ---+----
------+ ---- XTAL
¦ ¦ ---T----
--- ¦ C2 ¦ Rs
Vss L---++----+----------< OSC2
Маркировка следующая: XT - стандартный кварцевый генератор, HS -
высокочастотный кварцевый генератор, LP - низкочастотный генератор для
экономичных приложений. Резистор Rs может потребоваться для генератора
"HS", особенно при частотах ниже 20 МГц для гашения гармоник. Он также
может потребоваться в режиме XT с резонатором типа AT strip-cut.
Выбор конденсаторов для керамического резонатора.
-------------T------------T----------------¬
¦ Тип ¦ Частота ¦ Конденсатор ¦
¦ генератора ¦ резонатора ¦ С1=С2 ¦
+------------+------------+----------------+
¦ ¦ 455 КГц ¦ 150 - 330 пФ ¦
¦ XT ¦ 2 МГц ¦ 20 - 330 пФ ¦
¦ ¦ 4 МГц ¦ 20 - 330 пФ ¦
+------------+------------+----------------+
¦ HS ¦ 10 МГц ¦ 20 - 200 пФ ¦
L------------+------------+-----------------
Выбор конденсатора для кварцевого генератора
-------------T------------T-------------T-----------------¬
¦ Тип ¦ Частота ¦ Конденсатор ¦ Конденсатор ¦
¦ генератора ¦ ¦ С1 ¦ С2 ¦
+------------+------------+-------------+-----------------+
¦ LP ¦ 32 КГц ¦ 30 пФ ¦ 30 - 50 пф ¦
¦ ¦ 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 пФ ¦
¦ ¦ 10 МГц ¦ 15пФ ¦ 15 пФ ¦
L------------+------------+-------------+------------------
Более высокая емкость будет увеличивать стабильность генератора, но
также будет увеличивать время запуска. Значения приведены для ориентировки.
В режимах HS и XT, чтобы избежать гармоник может потребоваться
последовательный резистор Rs.
*** RC генератор. *********************************************************
Когда не предъявляются требования к быстродействию и к точности по
времени, ОТР кристалл, например PIC16C84-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, и может быть использован для целей тестирования или
синхронизации других схем.
*** Внешнее возбуждение. **************************************************
г==¬ ¦-
------- >------¦ 1¦--------+OSC1
L==- ¦-
¦-
оставьте <-------+OSC2
свободным ¦-
*** Регистр OPTION ********************************************************
Регистр OPTION (адрес 81h) доступен для чтения и записи и содержит
различные управляющие биты, которые определяют конфигурацию пределителя,
куда он подключен: к RTCC или WDT, знак фронта внешнего прерывания INT и
внешнего сигнала для RTCC, подключение активной нагрузки на порту RB.
Регистр OPTION Адрес 81h
Значение при включении питания= FFH
7 6 1 0
-------T------T------T------T------T------T------T------¬
¦ /RBPU¦INTEDG¦ RTS ¦ RTE ¦ PSA ¦ PS2 ¦ PS1 ¦ PS0 ¦
L------+------+------+------+------+------+------+-------
/ / /
/------------------------/-------/-----/
/ настройки пределителя
/
---------------------T---Коэффициенты деления -----¬
¦ 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 ¦
L--------------------+---------------+---------------
------¬
¦ PSA ¦ - Бит, подключающий делитель к: 0 - RTCC
L------ 1 - WDT
------¬
¦ RTE ¦ - Фронт внешнего сигнала RTCC:
L------ 0 - инкремент по положительному фронту на ножке RTCC
1 - инкремент по отрицательному фронту на ножке RTCC
------¬
¦ RTS ¦ - Источник сигнала для RTCC
L------ 0 - сигнал от внутреннего генератора
1 - Внешний сигнал на ножке RTCC
-------¬
¦INTEDG¦ - Фронт сигнала INT:
L------- 0 - прерывание по отрицательному фронту на ножке INT
1 - прерывание по положительному фронту на ножке INT
-------¬
¦ /RBPU¦ - Инверсный бит подключения активной нагрузки к порту B.
L-------
/RBPU = 0: Активные нагрузки будут подключаться
по алгоритму работы порта RB
/RBPU = 1: Активные нагрузки порта В отключены всегда
*** Подключения делителя частоты ******************************************
Один и тот же восьмибитный счетчик может быть включен либо перед RTCC
либо после Watchdog таймера. Отметим, что делитель работает только с одним
из этих устройств. Повторяем, если делитель работает с RTCC, это значит,
что в данный момент он не работает с Watchdog таймером и наоборот. Схему
включения счетчика (см. в разделе RTCC: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 запрещен.
*** Конфигурационное слово ************************************************
Кристалл PIC16C84 имеет пять битов конфигурации, которые хранятся в
EEPROM и устанавливаются на этапе программирования кристалла. Эти биты
могут быть запрограммированы (читается как `0`) или оставлены не-
запрограммироваными (читается `1`) для выбора подходящего варианта
конфигурации устройства. Эти биты расположены в EEPROM памяти по адресу
2007h. Пользователю следует помнить, что этот адрес находится ниже области
кодов и недоступен программе.
Ячейка EEPROM конфигурации.
13 5 4 3 2 1 0
-----------------------T-----T--------T--------T--------T--------¬ Адрес:
¦ ¦ CP ¦ PWRTE ¦ WDTE ¦ FOSC1 ¦ FOSC0 ¦ 2007h
L----------------------+-----+--------+--------+--------+---------
---------¬
¦ FOSC0 ¦ - Биты выбора типа генератора.
¦ FOSC1 ¦ FOSC1, FOSC0:
L--------- 00 LP генератор
01 XT генератор
10 HS генератор
11 RC генератор
---------¬
¦ WDTE ¦ - Бит разрешения работы WDT.
L--------- WDTE = 1: WDT разрешен
WDTE = 0: WDT запрещен
---------¬
¦ PWRTE ¦ - Бит разрешения выдержки времени после детектирования
L--------- включения питания
PWRTE = 1: Выдержка будет производиться
PWRTE = 0: Выдержки не будет
------¬
¦ CP ¦ - Бит защиты кода.
L------ CP = 1: Код защиты выключен
CP = 0: Код защиты включен
Остальные биты в слове не используются и читаются как единицы.
*** Индивидуальная метка **************************************************
Кристалл PIC16C84 имеет четыре слова, расположенные по адресу
(2000h-2003h) Они предназначены для хранения идентификационного кода (ID)
пользователя, контрольной суммы или другой информации. Как и слово
конфигурации, они могут быть прочитаны или записаны только с помощью
программатора. Доступа по программе к ним нет.
Если кристалл защищен, пользователю рекомендуется использовать для
идентификации только младшие семь бит каждого ID слова, а в старший бит
записывать `0`. Тогда ID слова можно будет прочитать даже в защищенном
варианте.
*** Защита программ от считывания *****************************************
Программный код, который записан в кристалл, может быть защищен от
считывания при помощи установки бита защиты (CP) в слове конфигурации в
ноль. Содержимое программы не может быть прочитано так, что с ним можно
было бы работать. Кроме того, при установленном бите защиты становится
невозможным изменять программу. То-же относится и к содержимому памяти
данных EEPROM.
Если установлена защита, то бит CP можно стереть только вместе с
содержимым кристалла. Сначала будет стерта EEPROM программная память и
память данных и в последнюю очередь бит защиты кода CP.
Проверка кристалла с установленной защитой.
При считывании защищенного кристалла, чтение любого адреса памяти даст
результат, похожий на 0000000XXXXXXX(двоичный код), где X- это 0 или 1.
Чтобы проверить сохранность памяти в защищенном кристалле, следуйте
правилам:
1) запрограммируйте и проверьте работу исправного кристалла.
2) установите защиту кода программы и считайте содержимое программной
памяти в файл-эталон.
3) проверяйте любой защищенный кристалл путем сравнения его программмной
памяти с содержимым этого эталона.
Память данных EEPROM не может быть проверена после установки бита
защиты.
*** Режим пониженного энергопотребления. **********************************
Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если
WDT разрешен, то он сбрасывается и начинает счет времени, бит "PD" в
регистре статуса (f3) сбрасывается, бит "TO" устанавливается, а встроенный
генератор выключается. Порты ввода/вывода сохраняют состояние, которое они
имели до входа в режим SLEEP.
Для снижения потребляемого тока в этом режиме, ножки на вывод должны
иметь такие значения, чтобы не протекал ток между кристаллом и внешними
цепями. Ножки на ввод должны быть соединены внешними резисторами с высоким
или низким уровнем, чтобы избежать токов переключения, вызываемых
плавающими высокоомными входами. То же и про RTCC. Ножка /MCLR должна быть
под напряжением Vihmc.
Выход из режима SLEEP осуществляется в результате следующих событий:
--------------------------------------------------------------------
1. Внешний сброс - импульс низкого уровня на на ножке /MCLR.
2. Сброс при срабатывании WDT(если он разрешен)
3. Прерывания. (Прерывание с ножки INT,прерывание при изменении порта
B, прерывание при завершении записи данных EEPROM).
При первом событии происходит сброс всего устройства. Два других
события предполагают продолжение выполнения программы.
Бит "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мА ¦
¦ ¦
L---------------------------------------------------------------------------
Примечания:
1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого
корпуса. Рассеиваемая мощность вычисляется по следующей формуле:
Pdis= Vdd*(Idd - Cумма(Ioh)) + Сумма ((Vdd - Voh)*Ioh) +
+ Сумма (Vol * Iol)
2. Понижение напряжения на ножке /MCLR ниже Vss(земля) вызывает большие
токи, более 80 мА, и может привести к повреждению этой линии. Поэтому,
рекомендуем подавать сигналы на ножку /MCLR через ограничивающий резистор
50-100 Ом.
*** Параметры постоянного тока ******************************************
Характеристики постоянного тока: PIC16C84-04, PIC16C84-10.
(Для комерческого, индустриального, автомобильного исполнения).
---------------------------------------------------------------------------
Рабочая температура -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 4.5 мA 4 MГц, Vdd=5.5В
Idd - 132 360 мкA 32 KГц, Vdd=4.0В
WDT запрещен,LP конф
Idd - 5 10 мA 10 MГц, Vdd=5.5В
HS конфигурация
(PIC16C84-10 только)
---------------------------------------------------------------------------
Ток потребления в
в режиме SLEEP
(Прим.4) Ipd - 34 60 мкA Vdd=4 В, WDT разрешен
-40 C до +85 C
Ipd - 30 50 мкA Vdd=4 В, WDT зап
0 C до +70 C
---------------------------------------------------------------------------
Характеристики постоянного тока: PIC16LC84-04.
(Для комерческого, индустриального, автомобильного исполнения).
(ИСПОЛНЕНИЕ LC)
---------------------------------------------------------------------------
Рабочая температура -40 <= Ta <= +125 C (для автомобильного)
-40 <= Ta <= + 85 C (для индустриального
0 <= Ta <= + 70 C (для коммерческого)
Рабочее напряжение 2.0 ... 6.0 В,
---------------------------------------------------------------------------
Символ Мин Типичное Макс Условия
(Прим.1)
---------------------------------------------------------------------------
Напряжение питания
Vdd 2.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 4.5 мA 4 MГц, Vdd=5.5В
Idd - 35 70 мкA 32 KГц, Vdd=4.0В
WDT запрещен,LP конф
Idd - 5 10 мA 10 MГц, Vdd=5.5В
HS конфигурация
(PIC16C84-10 только)
---------------------------------------------------------------------------
Ток потребления в
в режиме SLEEP
(Прим.5) Ipd - 7 28 мкA Vdd=4 В, WDT разрешен
-40 C до +85 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 TVD мкA Vdd=4 В, WDT зап
-40 C до +125 C
---------------------------------------------------------------------------
***
Скоростные характеристики:
PIC16C84-04 (Комерческие,Индустриальные,Автомобильные)
PIC16C84-10 (Комерческие,Индустриальные,Автомобильные)
PIC16LC84-04 (Комерческие,Индустриальные,Автомобильные)
---------------------------------------------------------------------------
Рабочие условия, если не указано иначе
Рабочая температура -40 <= Ta <= +85 C (Индустриальные)
Рабочая температура -40 <= Ta <=+125 C (Автомобильные)
Рабочая температура 0 <= Ta <= +70 C (Комерческие)
Рабочее напряжение - типичное значение
---------------------------------------------------------------------------
Характеристики Символ Мин Типичное Макс Единицы Условия
(Прим.1)измерения
---------------------------------------------------------------------------
Частота внешнего Fosc - - 4 МГц RC,XT режи
CLOCKIN (Прим.2) Vdd>=3В
- - 2 МГц XT,RC режи
2В >=Vdd>=
- - 4 МГц HS(PIC16C8
PIC16LC84-
- - 10 МГц HS(PIC16C8
- - 200 КГц LP режим
---------------------------------------------------------------------------
Частота генератора Fosc - - 4 МГц RC
(Прим.2) 0.1 - 4 МГц XT
1 - 4 МГц HS(PIC16C8
PIC16LC84-
1 - 10 МГц HS(PIC16C8
- - 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 - - нс -
OSC1 высокий к Tosh2ckl - - - нс (Прим.6)
CLKOUT низкому
OSC1 высокий к Tosh2ckh - - - нс (Прим.6)
CLKOUT высокому
Время нарастания CLKOUT Tckr - - - нс (Прим.6)
Время спада CLKOUT Tckf - - - нс (Прим.6)
---------------------------------------------------------------------------
Сброс /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* - - нс (Прим.6)
Задержка спада Tdh 0* - - нс (Прим.6)
относительно CLKOUT
Задержка спада Tpd - - 40* нс (Прим.6)
относительно CLKOUT
---------------------------------------------------------------------------
Временные интервалы
прерывания
на входе INT TinP 20 - - нс
Изменение времени на TrbP 20 - - нс
входе RB<7:4> для
распознавания
перрывания
---------------------------------------------------------------------------
XT,HS,LP
OSC2 Cosc2 - - 15 пФ режимы
---------------------------------------------------------------------------
Все линии Cio - - 50 пФ
ввода/вывода
* Усредненная величина, не подлежит нормированию
Назад