Функционирование таймера Т1
Таймер Т1 является 16-разрядным. Для него допустимы все режимы работы, характерные для таймеров Т0 и Т2. Кроме того, он может по внешнему сигналу сохранять свое состояние в отдельном регистре (режим захвата).
В состав таймера Т1 входят счетный регистр TCNT1, регистр захвата ICR1, два регистра сравнения OCR1A и OCR1B (все регистры 16-разрядные), два 8-разрядных регистра управления TCCR1A и TCCR1B. Все 16-разрядные регистры реализованы как пара 8-разрядных с соответствующими именами: TCNT1H и TCNT1L.
Прерывания, генерируемые таймером, представлены в табл.27.2. Разрешение прерываний задается через регистр TIMSK (табл. 27.1).
Режим захвата – запись текущего состояния TCNT1 в регистре ICR1 – производится по фронту сигнала на входе ICP1 или по сигналу от аналогового компаратора.
Основное средство управления таймером Т1 – регистры TCCR1A и TCCR1B. Назначение их разрядов и принципы управления представлены в табл.27.6 и 27.7 соответственно.
Таблица 27.6.
Принципы управления таймером Т1 через регистр TCCR1А
Бит
|
Название
|
Описание назначения
|
7,6
|
COM1A1, COM1A0
|
Режим работы блока сравнения А. Разряды определяют поведение вывода OC1A при наступлении события «Совпадение» в зависимости от режима работы таймера. Для режимов Normal и CTC доступны такие состояния
COM1A1
|
COM1A0
|
Описание состояния вывода OC1A
|
0
|
0
|
Таймер отключен от вывода OC1A
|
0
|
1
|
Изменение на противоположное
|
1
|
0
|
Вывод сбрасывается в «0»
|
1
|
1
|
Вывод устанавливается в «1»
|
|
5,4
|
COM1B1, COM1B0
|
Режим работы блока сравнения B. Определяет состояние вывода OC1B при наступлении события «Совпадение». Для режимов Normal и CTC доступны такие состояния
COM1B1
|
COM1B0
|
Описание состояния вывода OC1B
|
0
|
0
|
Таймер отключен от вывода OC1B
|
0
|
1
|
Изменение на противоположное
|
1
|
0
|
Вывод сбрасывается в «0»
|
1
|
1
|
Вывод устанавливается в «1»
|
|
3,2
|
FOC1A, FOC1B
|
Принудительное изменение состояния выводов OC1A и OC1B в режимах Normal и CTC (зависит от битов COMnxi)
|
1,0
|
WGM1,
WGM0
|
Режим работы таймера счетчика Т1. Используются совместно с битами WGM3, WGM2 регистра TCCR1B – см. табл. 27.8
|
Таблица 27.7.
Принципы управления таймером Т1 через регистр TCCR1B
Бит
|
Название
|
Описание назначения
|
7
|
ICNC1
|
Управление схемой подавления помех блока захвата
|
6
|
ICES1
|
Выбор активного фронта сигнала захвата
|
5
|
–
|
Не используется
|
4,3
|
WGM3,
WGM2
|
Режим работы таймера счетчика Т1. Используются совместно с битами WGM1, WGM0 регистра TCCR1А – см. табл. 3.11
|
2…0
|
SC12… SC10
|
Управление тактовым сигналом. Разряды определяют источник тактового сигнала для таймера Т1. Настройка соответствует табл.27.4 (как для таймера Т0).
|
Работа таймера Т1 в режимах Normal и CTC
В этих режимах функционирование таймера Т1 аналогично работе таймера Т0, с той разницей, что счет производится в 16-разрядной конфигурации (от $0000 до максимум $FFFF). При достижении максимума $FFFF формируется флаг прерывания TOV1, а при совпадении значений TCNT1 и OCR1A или OCR1B – флаги OCF1A или OCF1B соответственно.
Таблица 27.8.
Выбор режима работы таймера Т1
WGM13
|
WGM12
|
WGM11
|
WGM10
|
Режим работы
|
Модуль счета
|
0
|
0
|
0
|
0
|
Normal, 16-разрядный счет
|
$FFFF
|
0
|
0
|
0
|
1
|
Phase correct PWM, 8-разрядный
|
$00FF
|
0
|
0
|
1
|
0
|
Phase correct PWM, 9-разрядный
|
$01FF
|
0
|
0
|
1
|
1
|
Phase correct PWM, 10-разрядный
|
$03FF
|
0
|
1
|
0
|
0
|
CTC (сброс при совпадении)
|
OCR1A
|
0
|
1
|
0
|
1
|
Fast PWM, 8-разрядный
|
$00FF
|
0
|
1
|
1
|
0
|
Fast PWM, 9-разрядный
|
$01FF
|
0
|
1
|
1
|
1
|
Fast PWM, 10-разрядный
|
$03FF
|
1
|
0
|
0
|
0
|
Phase and Frequency Correct PWM
|
ICR1
|
1
|
0
|
0
|
1
|
Phase and Frequency Correct PWM
|
OCR1A
|
1
|
0
|
1
|
0
|
Phase correct PWM
|
ICR1
|
1
|
0
|
1
|
1
|
Phase correct PWM
|
OCR1A
|
1
|
1
|
0
|
0
|
CTC (сброс при совпадении)
|
ICR1
|
1
|
1
|
0
|
1
|
Зарезервировано
|
–
|
1
|
1
|
1
|
0
|
Fast PWM
|
ICR1
|
1
|
1
|
1
|
1
|
Fast PWM
|
OCR1A
|
Работа таймера Т1 в режиме FastPWM и PhaseCorrectPWM
Режим FastPWM (быстродействующий ШИМ), позволяет генерировать высокочастотный широтно-модулированный сигнал. Суммирующий счет производится на регистре TCNT1. Ширина очередного импульса будет определяться текущим содержимым регистра сравнения OCR1А). Важно, что изменять содержимое этого регистра можно без остановки таймера, при этом помехи от переключения не возникают.
Состояние счетчика TCNT1 изменяется циклически от $0000 до $FFFF, при этом по переполнению формируется флаг прерывания TOV1, а при равенстве счетного регистра TCNT1 и одного из регистров сравнения OCR1А или OCR1В устанавливается флаг прерывания OCF1А или OCF1В соответственно. Состояние выводов OC1А и OC1В в момент достижения состояния «Совпадение» определяется содержимым пар разрядов (COM1А1, COM1А0) и (COM1В1, COM1В0) соответственно согласно табл.27.9.
Частота генерируемых ШИМ-импульсов определяется соотношением
FOC1=FCLKsys/ (2N*TOP),
где N – коэффициент деления предделителя, TOP – модуль счета, определяемый битами WGM13…WGM10 согласно табл.27.8.
Наличие двух регистров сравнения OCR1А или OCR1В и двух выводов сигналов OC1А и OC1В позволяет с помощью одного таймера Т1 генерировать две последовательности ШИМ-импульсов с раздельным управлением (правда, с одинаковой частотой). Такое использование таймера Т1 предпочтительно для реализации двухкоординатного управления технологическим оборудованием. Именно таймер Т1 использован в качестве генератора ШИМ-импульсов в составе системы УУМС-2.
Таблица 27.9.
Настройка поведения выводов OC1А (OC1В) в режиме FastPWM
COM1А(B)1
|
COM1A(B)0
|
Описание состояния вывода OC1A (ОС1B)
|
0
|
0
|
Таймер-счетчик Т1 отключен от вывода OC1A (ОС1B)
|
0
|
1
|
При WGM13=0 таймер Т1 отключен от OC1A (ОС1B).
При WGM13=1 состояние вывода OC1A (ОС1B) меняется на противоположное
|
1
|
0
|
Вывод сбрасывается в «0» при достижении равенства регистров TCNT1 и OCR1A(B). Устанавливается в «1» при достижении TCNT1 = $0000 (неинвертированный ШИМ)
|
1
|
1
|
Вывод устанавливается в «1» при достижении равенства регистров TCNT1 и OCR1A(B). Сбрасывается в «0» при достижении TCNT0(2) = $0000 (инвертированный ШИМ)
|
Реализация режима PhaseCorrectPWMдля таймера Т1 похожа на функционирование таймера Т0 в это режиме с той разницей, что счет производится от $0000 до $FFFF и обратно до $0000. Управление производится соответствующими разрядами для таймера Т1. Режим PhaseandFrequencyCorrectPWM в данной статье не рассматривается.
Также в данных материалах не рассматривается функционирование сторожевого таймера WDT.
|