Режим Normal
Это наиболее простой режим работы таймеров/счетчиков. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому импульсу тактового сигнала clkT0 (clkT2) осуществляется инкремент счетного регистра. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. В том же такте сигнала clkT0 (clkT2), в котором обнуляется регистр TCNT0 (TCNT2), устанавливается в «1» флаг переполнения TOV0 (TOV2). В таймерах/счетчиках при равенстве счетного регистра и регистра сравнения устанавливается флаг прерывания OCF0 (OCF2) и, если разряд OCIE0 (OCIE2) регистра TIMSK установлен в «1»,генерируется прерывание. Наряду с установкой флага при равенстве счетного регистра и регистра сравнения может изменяться состояние вывода OC0 (OC2) микроконтроллера. Каким образом оно будет изменяться, определяется разрядами COM01:COM00 (COM21:COM20) регистра TCCR0 (TCCR2) в соответствии с Табл. 5.11 Таблица 5.11. Управление выводом OC0 (OC2) в режиме Normal Примечание: n = 0 или 2. При необходимости состояние вывода OC0 (OC2) может быть изменено принудительно, записью лог. 1 в разряд FOC0 (FOC2) регистра TCCR0 (TCCR2). Прерывание при этом не генерируется.
Режим CTC (сброс при совпадении) В этом режиме счетный регистр тоже функционирует как обычный суммирующий счетчик, инкремент которого осуществляется по каждому импульсу тактового сигнала clkT0 (clkT2). Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяется регистром сравнения OCR0 (OCR2). После достижения значения, записанного в регистре сравнения, счет продолжается со значения «$00». В том же такте сигнала clkT0 (clkT2), в котором обнуляется счетный регистр, устанавливается флаг прерывания TOV0 (TOV2) регистра TIFR. Временные диаграммы для этого режима работы таймера/счетчика приведены на Рис. 5.8.
Рис.5.8. Временные диаграммы для режима CTC Для генерации сигнала заданной частоты необходимо записать в разряды COM01:COM00 (COM21:COM20) значение «01» (переключение состояния вывода). Частота генерируемого сигнала будет определяться выражением f OC n = f clk_I/O/2 N (1 +OCR n), где N — коэффициент деления предделителя (см. Табл.5.8).При необходимости состояние вывода OC0 (OC2) может быть изменено принудительно, записью лог. 1 в разряд FOC0 (FOC2) регистра TCCR0 (TCCR2). Прерывание при этом не генерируется и сброса счетного регистра не производится
|