Таймеры/счетчики – это, наиболее часто используемые модули микроконтроллеров. С их помощью можно измерять промежутки времени и частоту, определять ширину импульсов, вычислять скорость и т.д. Хотя они и используются для измерения времени, на самом деле речь идет об обычных двоичных счетчиках.
В микроконтроллерах AVR используются как 8-ми, так и 16-ти разрядные таймеры/счетчики. Разрядность определяет момент переполнения счетчика (возврат в нулевое состояние). Так, для 8-разрядного счетчика переполнение наступает, когда счет достигает 255, а для 16-разрядного – 65535.
Количество таймеров/счетчиков и их разрядность в микроконтроллерах отличается в зависимости от модели, и потому в данном разделе будут рассмотрены только общие вопросы, имеющие отношение к использованию таймеров/счетчиков.
Если таймер/счетчик функционирует в качестве счетчика, то он подсчитывает число импульсов, поступающих на определенный вход микроконтроллера. В этом случае соответствующий вывод должен быть сконфигурирован в инициализационной части программы как вход.
В случае использования в качестве таймера, частота тактирования таймера/счетчика является производной величиной от такта системной синхронизации внутреннего кварцевого осциллятора. При этом таймеры/счетчики используют в качестве тактового сигнала разделенный такт системной синхронизации. Коэффициент деления предварительного делителя частоты может настраиваться индивидуально для каждого из таймеров с помощью мультиплексора, управляемого разрядами из регистра управления таймера/счетчика.