Микроконтроллеры AVR семейства Mega имеют в своем составе от 2 до 4 таймеров/счетчиков.
Микроконтроллеры ATmega32 оснащены тремя таймерами/счетчиками общего назначения - двумя 8-разрядными (0 и 2) и одним 16-разрядным (1).
Таймер/счетчик может работать с тактовой частотой микроконтроллера или через предделитель. Предварительный делитель таймеров/счетчиков содержит четыре ступени деления: СК/8, СК/64, СК/256 и СК/1024, где СК - входной тактовый сигнал. Кроме того, в качестве источников тактовых сигналов могут быть использованы сигналы от внешних источников, тактовый сигнал СК и дополнительный кварцевый генератор (в зависимости от номера таймера).
Регистры управления таймером/счетчиком 0:
OCR0 – регистр сравнения
TCNT0 – регистр счета
TCCR0 – настройка режима работы таймера/счетчика
FOC0 – принудительное изменение состояния вывода (при записи лог. 1) в соответствие с режимом COM01:COM00. Прерывание не генерируется.
COM01:COM00 – настройка вывода OC0
0:0 – нормальная работа порта ввода/вывода
0:1 – изменение состояния вывода при совпадении
|
|
1:0 – лог. 0 при совпадении
1:1 – лог. 1 при совпадении
Назначение регистров управления таймером/счетчиком 2 аналогично таймеру/счетчику 0. Кроме этого регистр ASSR настраивает асинхронный режим работы.
Регистры управления таймером/счетчиком 1:
OCR1А и OCR1B – регистры сравнения
TCNT1 – регистр счета
TCCR1A и TCCR1АB – настройка режимов работы таймера/счетчика
ICR1 – регистр захвата
ICNC1 – управление схемой подавления помех блока захвата (1 включена)
ICES1 – выбор фронта захвата (0 – спад, 1 - нарастание)
COM1A1:COM1A0 – настройка вывода OC1A
COM1B1:COM1B0 – настройка вывода OC1B
Режимы аналогичны таймеру/счетчику 0
FOC1A – принудительное изменение состояния вывода OC1A (при записи лог. 1) в соответствие с режимом. Прерывание не генерируется.
FOC1B – принудительное изменение состояния вывода OC1B (при записи лог. 1) в соответствие с режимом. Прерывание не генерируется.
Регистр настройки прерываний таймеров/счетчиков TIMSK
Регистр флагов прерываний таймеров/счетчиков TIFR