внешнее прерывание с ножки RB0/INT,
прерывание от переполнения счетчика/таймера RTCC,
прерывание по окончании аналого-цифрового преобразования,
прерывание от изменения сигналов на ножках порта RB<7:4>.
Все прерывания имеют один и тот же вектор/адрес - 0004h. Однако, в управляющем регистре прерываний INTCON записывается:- от какого именно источника поступил запрос прерывания. Записывается соответствующим битом-флагом. Такое прерывание может быть замаскировано индивидуально или общим битом. Единственным исключением является прерывание по концу аналого-цифрового преобразования. Этот флаг (ADIF)находится в другом регистре ADCON.
Адрес: 0Bh Значение при сбросе - 0000 0000
GIE | ADIE | RTIE | INIE | RBIE | RTIF | INTF | RBIF |
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 : разрешает прерывания.
Он сбрасывается автоматически при следующих обстоятельствах:
по включению питания,
по внешнему сигналу /MCLR при нормальной работе,
по внешнему сигналу /MCLR в режиме SLEEP,
по окончанию задержки таймера WDT при нормальной работе,
по окончанию задержки таймера WDT в режиме SLEEP.
Флаг запроса прерывания (ADIF) по окончании аналого-цифрового преобразования устанавливается по окончании преобразования.
Сброс запроса ADIF - дело программы обработки.
Кристалл имеет два порта: 5 бит порт RA и 8 бит порт RB с побитовой индивидуальной настройкой на ввод или на вывод.
Порт А - это порт шириной 5 бит, соответствующие ножки кристалла RA<4:0>. Линии RA<3:0> двунаправленные, а линия RA4 -выход с открытым стоком. Адрес регистра порта А - 05h. Относящийся к порту А управляющий регистр TRISA расположен на первой странице регистров по адресу 85h. TRISA<4:0> - это регистр шириной 5 бит. Если бит управляющего TRISA регистра имеет значение единица, то соответствующая линия будет устанавливаться на ввод. Ноль переключает линию на вывод и одновременно выводит на нее содержимое соответствующего регистра защелки. Ниже дана схема портов RA0..RA3
Вывод порта RA4 имеет структуру, аналогичную PIC16C84 за тем исключением, что отсутствует соответствующий бит в регистре TRIS, поэтому, при использовании данного выводя для ввода, следует предварительно записать в него “1”.
Название ножки | # | Функция ножки | Другие функции |
PA0 | 0 | Порт ввода/вывода.Входные уровни ТТЛ. | Аналоговый вход канала 0 |
PA1 | 1 | Порт ввода/вывода.Входные уровни ТТЛ. | Аналоговый вход канала 1 |
PA2 | 2 | Порт ввода/вывода.Входные уровни ТТЛ. | Аналоговый вход канала 2 |
PA3 | 3 | Порт ввода/вывода.Входные уровни ТТЛ.. | Аналоговый вход канала 3 или вход внешнего опорного напряжения |
PA4/RT | 4 | Порт ввода/вывода.Выход-открытый коллектор Вход - триггер Шмитта. | Вход внешнего тактового сигнала для RTCC |
Выводы порта RB ничем не отличаются от PIC16C84.
Модуль АЦП содержит четыре входных аналоговых канала, мультиплексируемых наодну схему выборки/хранения и далее на АЦП. Опорное напряжение поступает извне через ножку RA3/AIN3/Vref или формируется внутри кристалла из Vdd.
Преобразователь использует принцип последовательного приближения; 8 -битовый результат преобразования помещается в регистр ADRES (09h).Преобразования инициируются установкой управляющего бита (GO/DONE) в регистре ADCON. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки. Время преобразования есть функция периода генератора. Минимально возможное время преобразования 20 мкс. В конце преобразования бит GO/DONE очищается и активируется прерывание. Ошибка преобразования не превышает +- 1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd.
АЦП работает от своего собственного тактового генератора или от генератора OSC1, как показано а следующей таблице:
Управляющий бит DCS1,ADCS0 | Задержка (должна быть >2 mkS) |
00 | 2 tosc |
01 | 8tosc |
10 | 32 tosc |
11 | trc (2..6 mkS, 4 mkS tyр.) |
Время преобразования каждого бита занимает одинаковый интервал. Общее время измерения- 10 интервалов. Сам интервал должен быть не менее 2мкс. На низких частотах может быть выбран RC генератор. Однако его частота существенно зависит от напряжения питания, температуры и других параметров ( период от 2 до 6 мкс, номинал - 4 мкс).
Регистр 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 кОм. Любой внешний компонент, подключаемый к аналоговому входу ( будь то конденсатор или стабилитрон ), должен иметь очень небольшой ток утечки.
Регистр ADCON1 Адрес 88h
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 | цифровые входы - | цифровой вход | цифровой вход |
При входе в режим Sleeр следует сбросить бит ADON в рег ADCON, чтобы уменьшить потребление тока. Если АЦП находился в процессе преобразования ( с использованием RC генератора), то преобразование будет завершено прямо в режиме Sleeр. Флаг прерывания ADIF будет взведен и кристалл будет выведен из режима SLEEP, если флаг разрешения прерывания ADIE ранее был установлен. При таком режиме измерения отсутствуют импульсные помехи и обеспечивается максимально возможная точность преобразования, что полезно на высоких тактовых частотах.