Смекни!
smekni.com

Микроконтроллеры AVR (стр. 6 из 15)


Рис. 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.