Составители:
14
OCF0, который является запросом на прерывание и одновременно
сбрасывает счетчик в исходное нулевое состояние. На рисунке верхний
предел или код сравнения = 127, следовательно, импульс OCF0 и
соответствующее прерывание будут происходить с частотой в 128 раз
меньшей входной частоты счетчика. В нашем примере частота
прерываний = 32768/Кпреддел/Ккомпар = 32768/8/128=32Гц. Кпреддел-
коэффициент деления частоты предделителем и Ккомпар
- коэффициент
деления частоты, задаваемый компаратором.
Флаг прерывания при совпадении кодов OCF0 сбрасывается
аппаратно при переходе на соответствующий вектор прерывания, поэтому
в программе мы к нему обращаться не будем.
Временная диаграмма таймер-счетчика0 с предделением на 8 (fTosc/8) в
режиме сброса при совпадении
Настройка таймера0 и контроль за его работой производится с помощью
регистров:
• TCCR0 – TimerCounterControlRegister0 (Регистр управления
таймером/счетчиком0)
• ASSR – AsinchronousStatusRegister (Регистр состояния асинхронного
режима таймера0)
• TIMSK – TimerInterruptMask (Регистр масок разрешения
прерываний для таймеров/счетчиков)
• OCR0 – OutputCompareRegister0 (Регистр кода сравнения
)
• TCNT0 – TimerCouNTer0 (запись начального или чтение текущего
значения счетчика)
• TIFR - TimerInterruptFlagRegister (регистр флагов прерываний
таймеров)
В нашей задаче понадобится явно обращаться к первым 4-м регистрам.
Регистр управления таймером/счетчиком - TCCR0
Разряд 7 6 5 4 3 2 1 0
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »