Таймеры/счетчики T0 и T2
В состав таймеров/счетчиков T0, T2 входят 3 регистра ввода/вывода: счетный регистр TCNT0 (TCNT2), регистр управления TCCR0(TCCR2) и регистр сравнения OCR0 (OCR2). В T0 добавляется регистр ASSR, служащий для управления модулем таймера/счетчика в асинхронном режиме. Функции, которые они могут выполнять, перечислены в Табл. 5.5. Адреса всех перечисленных регистров указаны в Табл. 5.6
Таблица.5.5. Функции таймера/счетчика T0 и Т2
Таймер/счетчик T0 может генерировать прерывание при переполнении счетного регистра. прерывание может генерироваться также при равенстве счетного регистра и регистра сравнения. Флаги обоих прерываний находятся в регистре TIFR, а разрешение/запрещение этих прерываний осуществляется установкой/сбросом соответствующих флагов регистра TIMSK. Таблица 5.6.. Регистры 8_разрядных таймеров/счетчиков
Счетный регистр таймера/счетчика TCNT0 (TCNT2) входит в состав основного блока модуля — блока реверсивного счетчика. В зависимости от режима работы модуля содержимое счетного регистра сбрасывается, инкрементируется или декрементируется по каждому импульсу тактового сигнала таймера/счетчика clkT0 (clkT2). Независимо от того, присутствует тактовый сигнал или нет, регистр доступен в любой момент времени как для чтения,так и для записи. Однако следует помнить, что любая операция записи в счетный регистр блокирует работу блока сравнения на время одного периода тактового сигнала таймера/счетчика. После подачи напряжения питания в регистре TCNT0 (TCNT2) находится нулевое значение. При некоторых изменениях состояния таймера/счетчика, определяемых режимом его работы, устанавливается флаг TOV0 (TOV2) регистра TIFR. Разрешение прерывания осуществляется установкой в «1» разряда TOIE0 (TOIE2) регистра TIMSK (разумеется, флаг I регистра SREG также должен быть установлен в «1»). Регистр сравнения OCR0 (OCR2) входит в состав блока сравнения мо дуля. Во время работы таймера/счетчика производится непрерывное (в каждом машинном цикле) сравнение этого регистра с регистром TCNT0 (TCNT2). В случае равенства содержимого этих регистров в следующем машинном цикле устанавливается флаг OCF0 (OCF2) регистра TIFR и генерируется прерывание (если оно разрешено). Кроме того, при наступлении этого события может изменяться состояние вывода OC0 (OC2) микроконтроллера. Чтобы таймер/счетчик мог управлять состоянием вывода OC0 (OC2), он должен быть сконфигурирован как выходной (соответствующий разряд регистра DDR x должен быть установлен в «1»). Еще раз напоминаем, что любая операция записи в счетный регистр блокирует формирование сигнала о совпадении, если оно произойдет в следующем такте. Регистр TCCR0 (TCCR2) предназначен для управления модулем таймера/счетчика. Формат этого регистра приведен на Рис.5.7, а описание его разрядов — в Табл.5.7 $<_IL_152_1Рис.РРррррррррррррррррррррррРРРРРРРРРрррр53>$ Рис.5.7..Формат регистров TCCR0 (а) и TCCR2 (б) Таблица.5.7.. Разряды регистра TCCR0 (TCCR2)
Примечания:1. n = 0 или 2. 2. В регистре TCCR0
|