Рис. 4.9. Схема таймера/счетчика TMR0
Для управления работой таймера TMR0 используются следующие разряды регистра OPTION_REG:
-разряд 5 – T0CS – определяет выбор источника синхроимпульсов (0 – внутренний; 1 – внешний на входе TOCKI);
-разряд 4 – T0SE – определяет выбор фронта, по которому происходит увеличение содержимого счетного регистра TMR0 (0 – по нарастающему; 1 – по ниспадающему фронту тактового сигнала);
-разряд 3 – PSA – использование предварительного делителя частоты (0 – делитель используется для управления таймером TMR0; 1 – для управления сторожевым таймером);
-разряды 0-2 – PS0, PS1, PS2 – выбор коэффициента деления частоты входного тактового сигнала (табл. 4.6).
Таблица 4.6. Назначение разрядов PSO - PS2 регистра OPTIONJREG
PS2 | PS1 | PSO | Коэффициент деления частоты входного тактового сигнала |
0 | 0 | 0 | 2 |
0 | 0 | 1 | 4 |
0 | 1 | 0 | 8 |
0 | 1 | 1 | 16 |
1 | 0 | 0 | 32 |
1 | 0 | 1 | 64 |
1 | 1 | 0 | 128 |
1 | 1 | 1 | 256 |
Для управления прерываниями от таймера TMR0 используются следующие разряды регистра INTCON:
-разряд 2 – TOIF – флаг прерывания при переполнении TMR0;
-разряд 5 – TOIE – флаг разрешения прерывания при переполнении TMR0;
-разряд 7 – GIE – флаг общего разрешения прерываний.
TMR1
TMR1 (рис. 4.11) – это 16-разрядный таймер/счетчик, который может использоваться для формирования запросов на прерывание, подобно TMR0, или же работать в режимах захвата, сравнения и ШИМ.
Тактирование таймера TMR1 осуществляется от сигнала системной синхронизации или от специального генератора, предназначенного для работы с относительно медленными программными приложениями. Как правило, используется кварцевый резонатор частотой 32,768 кГц.
Для управления таймером TMR1 используется регистр T1CON (рис. 4.12). Назначение отдельных разрядов регистра T1CON:
-TMRION – подключение таймера (0 – отключен, 1 – включен);
-TMR1CS – выбор источника тактирующих сигналов (0 – такт системной синхронизации; 1 – генератор 32,768 кГц);
-Tl SYNC – включение/отключение синхронизация специального генератора с генератором импульсов системной синхронизации (0 – включена; 1 – отключена);
-T10SCEN – разрешение/запрет тактирования таймера TMR1 от специального генератора (0 – генератор отключен; 1 – тактирование разрешено);
T1CKPS0, T1CKPS1 – выбор коэффициента деления частоты (табл. 4.7).
Рис. 4.11. Схема таймера/счетчика TMR1
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | T1CKPS1 | T1CKPS0 | T10SCEN | T1SYNC | TMR1CS | TMR1ON |
Рис. 4.12. Регистр T1CON микроконтроллеров PIC
Таблица 4.7. Назначение разрядов T1CKPS0 - T1CKPS1 регистра T1CON
T1CKPS1 | T1CKPS0 | Коэффициент деления частоты тактового сигнала |
0 | 0 | 1 |
0 | 1 | 2 |
1 | 0 | 4 |
1 | 1 | 8 |
Счетный регистр таймера TMR1 представляет собой регистровую пару TMR1H, TMR1L, а управление прерываниями осуществляется с помощью разрядов регистров PIR1 и РIЕ1:
Регистр PIR1:
-разряд 0 – TMR1IF – флаг переполнения TMR1;
-разряд 2 – ССР 1 IF – флаг прерывания при возникновении захвата по входу/
Регистр PIE1:
-разряд 0 – TMR1IE – флаг разрешения прерывания при переполнении TMR1;
-разряд 2 – ССР НЕ – флаг разрешения прерывания при возникновении захвата по" входу.
TMR2
Назначение таймера TMR2 (рис. 4.13) – измерение временных интервалов для реализации ШИМ, обеспечения определенной скорости обмена по последовательному порту и т.п. В этом смысле он подобен таймеру TMR0.
Таймер TMR2 тактируется импульсами, следующими с частотой такта системной синхронизации, деленной на четыре. Каждый раз, когда содержимое счетного регистра TMR2 совпадает с содержимым регистра PR2, таймер автоматически сбрасывается в исходное (нулевое) состояние.
Рис. 4.13. Схема таймера/счетчика TMR2
При каждом совпадении TMR2 и PR2 генерируется запрос на прерывание, частоту возникновения которого можно также масштабировать с помощью выходного делителя частоты.
Для управления таймером TMR2 используется регистр T2CON (рис. 4.14).
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | TOUTPS3 | TOUTPS2 | TOUTPS1 | TOUTPS0 | TMR2ON | T2CKPS1 | T2CKPS0 |
Рис. 4.14. Регистр T2CON микроконтроллеров PIC
Назначение отдельных разрядов регистра T2CON:
-T2CKPS0-T2CKPS1 –управление предварительным делителем частоты (табл. 4.8);
-TMR20N – подключение таймера (0 – отключен, 1 – включен);
-TOUTPS0-TOUTPS3 – выбор коэффициента деления частоты запросов на прерывание при TMR2::=:PR2 (табл. 4.9).
Таблица 4.8. Назначение разрядов T2CKPS0 - T2CKPS1 регистра T2CON
T1CKPS1 | T1CKPS0 | Коэффициент деления частоты тактового сигнала |
0 | 0 | 1 |
0 | 1 | 4 |
1 | X | 16 |
Таблица 4.9. Назначение разрядов TOUTPS0 - TOUTPS3 регистра T2CON
TOUTPS3 | TOUTPS2 | TOUTPS1 | TOUTPS0 | Коэффициент деления частоты запросов |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 3 |
0 | 0 | 1 | 1 | 4 |
0 | 1 | 0 | 0 | 5 |
о | 1 | 0 | 1 | 6 |
0 | 1 | 1 | 0 | 7 |
0 | 1 | 1 | 1 | 8 |
0 | 0 | 0 | 9 | |
0 | 0 | 1 | 10 | |
0 | 1 | 0 | 11 | |
0 | 1 | 1 | 12 | |
1 | 0 | 0 | 13 | |
1 | 0 | 1 | 14 | |
1 | 1 | 0 | 15 | |
1 | 1 | 1 | 16 |
Для организации прерываний используются разряды TMR2JE (флаг разрешения) и TMR2IF (флаг прерывания) регистров PIE1 и PIR1 соответственно.
Для того чтобы эффективно использовать таймер TMR2, используются следующие формулы:
где Т – требуемая временная задержка, К1 – коэффициент деления предварительного делителя частоты; К2 – коэффициент деления делителя частоты запросов на прерывание; PR2 – содержимое регистра PR2; F – частота системной синхронизации.
Таймеры TMR1 и TMR2 микроконтроллеров PIC применяются в составе модуля сравнения/захвата/ШИМ – ССР (Compare-Capture-PWM). Таких модулей может быть два: ССР1 и ССР2, – управление которыми реализовано с помощью регистров CCPxCON (рис. 4.15),
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | DC1BX1 | DC1BX0 | CCP1M3 | CCP1M2 | CCP1M1 | CCP1M0 |
Рис. 4.15. Регистр CCPxCON микроконтроллеров PIC
Назначение отдельных разрядов регистра CCPxCON:
ССР1М0 – ССР1МЗ – выбор режима захвата/сравнения (табл. 4.9) DC1ВХ0 – DC1ВХ1 – два младших разряда 10-разрядной ШИМ.
Таблица 4.9. Назначение разрядов ССР1М1 -ССР1МЗ регистра CCPxCON
ССР1МЗ | ССР1М2 | ССР1М1 | ССР1М0 | Значение |
0 | 0 | X | X | Модуль ССР отключен |
0 | 1 | 0 | 0 | Захват по каждому ниспадающему фронту |
0 | 1 | 0 | 1 | Захват по каждому нарастающему фронту |
0 | 1 | 1 | 0 | Захват по каждому 4-му нарастающему фронту |
0 | 1 | 1 | 1 | Захват по каждому 16-му нарастающему фронту |
1 | 0 | 0 | 0 | В случае совпадения на выходе – высокий уровень |
1 | 0 | 0 | 1 | В случае совпадения на выходе – низкий уровень |
1 | 0 | 1 | 0 | В случае совпадения – запрос на прерывание |
1 | 0 | 1 | 1 | Особый случай режима сравнения |
1 | 1 | X | X | Режим ШИМ |
В режиме захвата (то есть, фиксации значения таймера в момент появления определенного условия) используются регистры CCPR1H, CCPR1L (в случае TMR1) или CCPR2H, CCPRL (в случае TMR2). В таком режиме таймер выполняет функции счетчика тактовых импульсов, и при наступлении условия захвата его содержимое переписывается в регистровую пару CCPRx.
В режиме сравнения модуль ССР формирует сигнал на выходе ССРх в том случае, когда содержимое счетного регистра становится равным значению, записанному в регистровой паре CCPRxL, CCPRxH. Этот режим обычно используется для выдачи сигналов на внешние устройства по истечении некоторого временного интервала.
В режиме ШИМ таймер работает как делитель частоты, формирующий период ШИМ-сигнала. Его значение постоянно сравнивается с содержимым регистра PR2, и при совпадении компаратор сбрасывает таймер в исходное состояние, после чего цикл повторяется. Параллельно организован контур сравнения, включающий в себя таймер, второй компаратор и регистр CCPRxH. Выходы обоих компараторов управляют RS-триггером, выход которого соединен с выводом ССРх.
Вначале триггер устанавливается в "1" по сигналу сброса таймера, а по сигналу компаратора контура сравнения – сбрасывается в "О". Таким образом, на выходе RS-триггера формируется сигнал с периодом, определяемым содержимым регистров PR2 и CCPRxH.
Сторожевой таймер
Сторожевой таймер (watchdog timer) – встроенный таймер, тактируемый внутренним RC-осциллятором, который автоматически сбрасывает микроконтроллер при переполнении своего счетного регистра. В частности, он используется для предотвращения перехода микроконтроллера в режим бесконечного цикла, когда на него невозможно повлиять извне. Обобщенная структурная схема сторожевого таймера показана на рис. 5.1.