47600 (597343), страница 5
Текст из файла (страница 5)
В режиме ШИМ устанавливается флаг переполнения TOV1, если счетчик при достижении состояния 0 меняет направление счета на обратное. Это прерывание по Т/С1 при переполнении, как и при нормальной работе в режиме счетчика, вызывается в том случае, если установлен флаг общего разрешения прерываний I в регистре состояния SREG, а также флаг TOIE1 в регистре TIMSK. В соответствии с этим, прерывания при совпадении регистров TCNT1 и OCR1A/OCR1B вызываются тогда, когда в регистре TIMSK установлен флаг общего разрешения прерываний и флаг OCIE1A/OCIE1B.
В отношении таймера/счетчика Т/С1 осталось рассмотреть еще регистр управления TCCR1B (адресу 0х2Е в области ввода/вывода, адрес 0х4Е в SRAM). Структура регистра TCCR1B показана на рис. 4.6.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ICNC1 | ICES1 | – | – | CTC1 | CS12 | CS11 | CS10 |
Рис. 4.6. Регистр TCCR1В таймера/счетчика Т/С1
Разряды 0 – 2 используются для выбора частоты тактирования Т/С1 (табл. 1.5). Если разряд СТС1 установлен в лог. 1, то Т/С1 возвращается в состояние 0x0000 по импульсу такта системной синхронизации, следующего после совпадения содержимого счетчика и регистра сравнения А. При работе в режиме ШИМ этот разряд на процесс работы никак не влияет.
Разряд ICES1 определяет, каким образом должна осуществляться передача состояния счетчика в регистр захвата ICR1: по нарастающему (ICES 1 = 1) или по ниспадающему фронту (ICES 1=0).
Разряд ICNC1 определяет, должно ли быть активизировано подавление помех (если ICNC1 = 0, то подавление помех отключено), Для подавления кратковременных импульсов помех, которые могут привести к ошибочному запуску, входной сигнал зондируется на протяжении четырех периодов такта системной синхронизации. Только после того как будут распознаны четыре последовательных низких или высоких уровня входного сигнала, что определяется разрядом ICES1, при активном подавлении помех будет выполнена запись текущего состояния счетчика в регистр ICR1.
Т/С2
Таймер/счетчик Т/С2 обычно имеет разрядность 8 бит и реализует функции сравнения на выходе и ШИМ, аналогичные Т/С1. Основная особенность Т/С2 заключается в том, что в качестве источника тактовых импульсов он может использовать генератор, независимый от системного. Для управления Т/С2 используются два регистра: ASSR (рис. 4.7) и TCCR2 (рис. 4.8).
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | – | – | AS2 | TCN2UB | OCR2UB | TCR2UB |
Рис. 4.7. Регистр ASSR таймера/счетчика Т/С2
Если установить в лог. 1 разряд AS2, то в качестве источника тактовых импульсов можно использовать внешний осциллятор. Оставшиеся три разряда (0-2) используются в программах для проверки того, что данные не записываются в регистры Т/С2 в тот момент, когда они обновляются аппаратно. Такая проверка необходима по той причине, что осциллятор Т/С2 работает асинхронно по отношению к системному осциллятору.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | PWM2 | COM21 | COM20 | CTC2 | CS22 | CS21 | CS20 |
Рис. 4.8. Регистр TCCR2 таймера/счетчика Т/С2
Установка в лог. 1 разряда PWM2 переводит Т/С2 в режим ШИМ. Назначение разрядов COM21 и СОМ20 идентично назначению разрядов COM lxl и СОМ 1x0 таймера/счетчика Т/С1 – выбор режима сравнения на выходе.
Разряд СТС2 определяет, должен ли счетчик сбрасываться в нуль при совпадении его содержимого с регистром сравнения. Разряды 0 – 2 определяют частоту тактового сигнала, полученного с помощью предварительного делителя частоты такта системной синхронизации.
-
-
Таймеры/счетчики микроконтроллеров PIC
Описанное выше применение таймеров/счетчиков микроконтроллеров AVR справедливо также и для таймеров микроконтроллеров PIC. Здесь используются аналогичные принципы измерения ширины и частоты импульсов, а также широтно-импульсной модуляции, режимов сравнения и захвата.
В микроконтроллерах PIC могут использоваться три таймера: TMR0, TMR1 и TMR2.
TMR0
TMR0 (рис. 4.9) – это 8-разрядный таймер/счетчик. Таким образом, счет для него ограничен диапазоном 0-255. Его тактирование реализуется от внешнего источника или на основании такта системной синхронизации.
Рис. 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 соответственно.