В режимі синхронного лічильника робота TMR1 від зовнішнього джерела тактового сигналу вибирається установкою біта TMR1CS в ‗1‘. В цьому режимі приріст таймера відбувається по кожному передньому фронту сигналу на виведенні RC1/T1OSI/CCP2 (якщо T1OSCEN=1) або RCO/T1OSO/T1CKI (якщо T1OSCEN=0).
Якщо -T1SYNC=0, то активний фронт зовнішнього тактового сигналу синхронізується з внутрішнім тактовим сигналом на виході асинхронного переддільника.
У SLEEP режимі мікроконтролера лічильник не буде інкрементуватися (за наявності тактового сигналу), оскільки синхронізатор вимкнений (переддільник продовжує рахунок тактових імпульсів)
В режимі асинхронного лічильника, якщо біт -T1SYNC (T1CON<2>) встановлений в ‗1‘, зовнішній тактовий сигнал TMR1 не синхронізуватиметься з внутрішнім тактовим сигналом мікроконтролера, таймер продовжує працювати в режимі SLEEP. Переповнювання таймера викличе «пробудження» мікроконтролера, якщо дозволено переривання від TMR1. Проте потрібна обережність при записі/читанні TMR1. У цьому режимі TMR1 не може використовуватися для захоплення/порівняння даних модуля РСР.
Читання TMR1Н або TMR1L, під час рахунку в асинхронному режимі, гарантує отримання поточного значення лічильника (реалізовано апаратно). Проте користувач повинен мати на увазі, що читання 16розрядного значення виконується по байтно. Це накладає деякі обмеження, оскільки таймер може переповнитися між читаннями байтів.
Запис в TMR1 рекомендується виконувати після зупинки таймера.
Запис в регістри TMR1 під час приросту таймера може привести до непередбачуваного значення регістра.
Якщо модуль ССР1 або ССР2 працює в режимі порівняння з трігером спеціальних функцій (ССР1МЗ : ССР1 М0=1011), то сигнал трігера скине TMR1. TMR1 повинен працювати в режимі синхронізованого зовнішнього тактового сигналу або внутрішнього тактового сигналу. У асинхронному режимі ця функція не працює.
Коли запис в TMR1 співпадає з сигналом скидання від трігера спеціальних подій, пріоритет віддається запису в TMR1.
У цьому режимі модуля ССР період скидання TMR1 зберігається в регістрах CCPRxH:CCPRxL.
Регістри TMR1Н і TMR1L не скидаються в 00h при скиданні по включенню живлення POR і інших видах скидання, окрім скидання по сигналу трігера спеціальних подій модуля ССР1 або ССР2.
Регістр T1CON скидається в 00h при скиданні POR і BOR (TMR1 вимикається, коефіцієнт переддільника рівний 1:1). При решті всіх видів скидання значення регістра Т1CON не змінюється.
Переддільник TMR1 очищається при записі в регістр TMR1L або TMR1Н.
TMR2 - 8-розрядний таймер з програмованими переддільником і вихідним дільником, 8-розрядним регістром періоду PR2. TMR2 може бути опорним таймером для ССР модуля в ШІМ режимі. Регістри TMR2 доступні для запису/читання і очищаються при будь-якому виді скидання.
Вхідний тактовий сигнал (Fosc/4) поступає через переддільника з програмованим коефіцієнтом ділення (1:1, 1:4 або 1:16), визначуваний бітами T2CKPS1 :T2CKPSO (T2CON<1:0>).
TMR2 рахує, інкрементуючи від 00h до значення в регістрі PR2, потім скидається в 00h на наступному машинному циклі. Регістр PR2 доступний для запису і читання. Після скидання значення регістра PR2 рівне FFh. Блок схема модуля TMR2 показана на рисунку 2.12.
Сигнал переповнювання TMR2 проходить через вихідного 4розрядного дільника з програмованим коефіцієнтом ділення (від 1:1 до 1:16 включно) для установки прапора TMR2IF в регістрі PIR1 <1 >.
Для зменшення енергоспоживання таймер TMR2 може бути вимкнений скиданням біта TMR2ON (Т2СОМ<2>) в'0'.
TMR2 може використовуватися для програмного вибору швидкості обміну даними модуля SSP.
Керуючі биті TMR2 знаходяться в регістрі T2CON (адреса 12h):
b7 b6 b5 b4 b3 b2 b1 b0
- | TOUTPS3 | TOUTPS2 | TOUTPS1 | TOUTPS0 | TMR2ON | T2CKPS1 | T2CKPS0 |
біт 7: не реалізований: читається як '0';
біти 6-3: TOUTPS3:TOUTPS0: вибір коефіцієнта вихідного дільника TMR2 0000=1:1
0001 = 1:2 0010 = 1:3
...
1111 =1:16
біт 2: TMR2ON: включення модуля TMR2 1 = включений,0= вимкнений; біти 1 - 0: T2CKPS1 :T2CKPSO: вибір коефіцієнта ділення переддільника TMR2: 00= 1:1
01=1:4
1х= 1:16 Лічильник переддільника і вихідного дільника скидаються у випадку:
• Запису в регістр TMR2;
• Запису в регістр T2CON;
• Будь-якого виду скидання мікроконтролера (POR, BOR, скидання
WDT або активний сигнал -MCLR).
Регістр TMR2 не очищається при запису в T2CON.
Сигнал переповнювання TMR2 (до вихідного переддільника) поступає в модуль SSP для управління швидкістю передачі даних.
Модуль аналого-цифрового перетворення (АЦП) має п'ять каналів у 28-вивідних мікросхем і вісім каналів у 40/44-вивідних мікросхем.
Вхідний аналоговий сигнал через комутатор каналів заряджає внутрішній конденсатор АЦП СHOLD. Модуль АЦП перетворить напруга, що утримується на конденсаторі СHOLD у відповідний 10-розрядний цифровий код методом послідовного наближення. Джерело верхньої і нижньої опорної напруги може бути програмно вибране з виводів Vdd, Vss, RA2 або RA3.
Допускається робота модуля АЦП в SLEEP режимі мікроконтролера, при цьому як джерело тактових імпульсів для АЦП повинен бути вибраний RC генератор.
Для управління АЦП в мікроконтролері використовується 4 регістри:
• Регістр результату ADRESH (старший байт);
• Регістр результату ADRESL (молодший байт);
• Регістр управління ADCON0; • Регістр управління ADCON1.
Регістр ADCON0 використовується для настройки роботи модуля АЦП, а за допомогою регістра ADCON1 встановлюється які входи мікроконтролера використовуватимуться модулем АЦП і в якому режимі (аналоговий вхід або цифровий порт введення/виводу).
b7 b6 b5 b4 b3 b2 b1 b0
ADCS1 | ADCS0 | CHS2 | CHS1 | CHS0 | GO/- DONE | - | ADON |
біти 7-6: ADCS1: ADCS0: Вибір джерела тактового сигналу
00 = Fosc/2
01 = Fosc/8
10 = Fosc/32
11 = Frc (внутрішній RC генератор модуля АЦП) біти 5-3: CHS2:CHS0: Вибір аналогового каналу
000= канал 0 (RAO/ANO)
001= канал 1(RA1/AN1)
010= канал 2 (RA2/AN2)
011= канал 3 (RA3/AN3)
100= канал 4 (RA5/AN4)
101= канал 5 (RE0/AN5)
110= канал 6 (RE1/AN6)
111 = канал 7 (RE2/AN7)
біт 2: GO/-DONE: Біт статусу модуля АЦП Якщо ADON=1
1 = модуль АЦП виконує перетворення (установка біта викликає початок перетворення)
0 = стан очікування (апаратно скидається по завершенню перетворення) біт 1: Не використовується: читається як '0' біт 0: ADON: Біт включення модуля АЦП
1 = модуль АЦП включений 0 = модуль АЦП вимкнений і не споживає струму.
b7 b6 b5 b4 b3 b2 b1 b0
біт 7: ADFM: Формат збереження 10-розрядного результату 1 = праве вирівнювання, 6 старших біт ADRESH читаються як '0' 0 = ліве вирівнювання, 6 молодших біт ADRESL читаються як '0' біти 6-4: Не використовуються: читаються як '0'; биті 3-0: PCFG3:PCFG0: Керівні біти настройки каналів АЦП їх значення приведене в таблиці 2.3.
PCGF3: PCGF0 | AN7 RE2 | AN6 RE1 | AN5 RED | AN4 RA5 | AN3 RA3 | AN2 RA2 | AN1 RA1 | AND RAO | VREF+ | VREF- | Кан./ VREF |
0000 | А | A | A | A | A | A | A | A | VDD | VSS | 8/0 |
0001 | А | A | A | A | VREF+ | A | A | A | RA3 | VSS | 7/1 |
0010 | D | D | D | A | A | A | A | A | VDD | VSS | 5/0 |
0011 | D | D | D | A | VREF+ | A | A | A | RA3 | VSS | 4/1 |
0100 | D | D | D | D | A | D | A | A | VDD | VSS | 3/0 |
0101 | D | D | D | D | VREF+ | D | A | A | RA3 | VSS | 2/1 |
011х | D | D | D | D | D | D | D | D | VDD | VSS | 0/0 |
1000 | А | A | A | A | VREF+ | VREF- | A | A | RA3 | RA2 | 6/2 |
1001 | D | D | A | A | A | A | A | A | VDD | VSS | 6/0 |
1010 | D | D | A | A | VREF+ | A | A | A | RA3 | VSS | 5/1 |
1011 | D | D | A | A | VREF+ | VREF- | A | A | RA3 | RA2 | 4/2 |
1100 | D | D | D | A | VREF+ | VREF- | A | A | RA3 | RA2 | 3/2 |
1101 | D | D | D | D | VREF+ | VREF- | A | A | RA3 | RA2 | 2/2 |
1110 | D | D | D | D | D | D | D | A | VDD | Vss | 1/0 |
1111 | D | D | D | D | VREF+ | VREF- | D | A | RA3 | RA2 | 1/2 |
А = аналоговий вхід; D = цифровий канал введення/виводу. |
В останньому стовпці указується число аналогових каналів, доступних для перетворення і число входів джерела опорної напруги.