Найти тему
Будни инженера

Режимы работы таймеров AVR

Ранее я говорил о том, что микроконтроллеры серии AVR могут иметь до 4-х таймеров. Эти таймеры могут работать в нескольких режимах. Режим работы выбирается с помощью регистров управления таймерами. Для простых таймеров используется один регистр управления. Для более сложных два регистра.

Регистры управления таймерами называются TCCRx (где “x” - номер таймера). Например, для таймера T0 используется один регистр с именем TCCR0. Для управления таймером T1 используется два регистра: TCCR1A и TCCR1B. При помощи регистров управления производится не только выбор соответствующего режима, но и более тонкая настройка таймера.

Обычно в таймерах микроконтроллеров имеются следующие режимы:

  • Обычный (Normal). Самый простой режим, в котором таймер выполняет подсчёт приходящих на его вход импульсов (от тактового генератора или от внешнего источника). Когда происходит переполнение, таймер вызывает прерывание. Для простых микроконтроллеров это единственный режим работы таймеров.
  • Захват (Capture). Суть этого режима - сохранение содержимого счётного регистра таймера в определённый момент времени. Запоминание происходит либо по сигналу, поступающему через особый вход микроконтроллера, либо с выхода встроенного компаратора. Этот режим удобен, если, например, требуется измерить время какого-либо внешнего процесса.
  • Сброс при совпадении (CTC). Для работы в этом режиме используется особый регистр - регистр совпадения (для каждого таймера он свой). В этом режиме таймер выполняет подсчёт импульсов, как и в обычном режиме, и текущее количество импульсов сравнивается с количеством, указанном в регистре совпадения. Когда эти значения совпадают, происходит вызов соответствующего прерывания.
  • Быстродействующий ШИМ (Fast PWM). Таймер может работать в режиме ШИМ. Для формирования сигнала ШИМ используются те же регистры совпадения, которые работают в режиме CTC. Формирование может выполняться разными способами, сигнал подаётся на особый выход микроконтроллера.
  • ШИМ с точной фазой (Phase Correct PWM). Режим быстродействующего ШИМ имеет один недостаток - при изменении длительности импульсов меняется их фаза, то есть центр каждого импульса как бы сдвигается во времени. В большинстве случаев это не имеет значения. Однако, например, при управлении электродвигателями, такое поведение нежелательно. Поэтому в некоторых микроконтроллерах имеется режим ШИМ с точной фазой.
  • Асинхронный режим. В некоторых моделях таймер может работать в асинхронном режиме. В этом режиме на вход таймера подаётся либо тактовый сигнал от внутреннего генератора, либо от внешнего. Счётчик не вырабатывает никаких прерываний и дополнительных сигналов. В этом режиме он работает как часы реального времени.

Некоторые из этих режимов достойны того, чтобы рассказать о них более подробно. Возможно, я это и сделаю в будущем. Так что подписывайтесь на канал, чтобы ничего не пропустить…