Учебное пособие: Микроконтроллеры AVR
Таймеры/счетчики – это, наиболее часто используемые модули микроконтроллеров. С их помощью можно измерять промежутки времени и частоту, определять ширину импульсов, вычислять скорость и т.д. Хотя они и используются для измерения времени, на самом деле речь идет об обычных двоичных счетчиках.
В микроконтроллерах AVR и PIC используются как 8-ми, так и 16-ти разрядные таймеры/счетчики. Разрядность определяет момент переполнения счетчика (возврат в нулевое состояние). Так, для 8-разрядного счетчика переполнение наступает, когда счет достигает 255, а для 16-разрядного – 65535.
Количество таймеров/счетчиков и их разрядность в микроконтроллерах отличается в зависимости от модели, и потому в данном разделе будут рассмотрены только общие вопросы, имеющие отношение к использованию таймеров/счетчиков.
Если таймер/счетчик функционирует в качестве счетчика, то он подсчитывает число импульсов, поступающих на определенный вход микроконтроллера. В этом случае соответствующий вывод должен быть сконфигурирован в инициализационной части программы как вход.
В случае использования в качестве таймера, частота тактирования таймера/счетчика является производной величиной от такта системной синхронизации внутреннего кварцевого осциллятора. При этом таймеры/счетчики используют в качестве тактового сигнала разделенный такт системной синхронизации. Коэффициент деления предварительного делителя частоты может настраиваться индивидуально для каждого из таймеров с помощью мультиплексора, управляемого разрядами из регистра управления таймера/счетчика.
Таймеры/счетчики микроконтроллеров AVR
В микроконтроллерах AVR могут использоваться следующие таймеры/счетчики:
-8-ти или 16-ти разрядный Т/С0;
-16-разрядный Т/С1;
-8-ми или 16-ти разрядный Т/С2.
Регистры управления в этом случае называются TCCR0, TCCR1 и TCCR2 (расположены в области ввода/вывода), а режим работы и коэффициент деления частоты осциллятора определяется с помощью разрядов CSx2, CSxl и CSx0 этих регистров. К примеру, для таймеров/счетчиков Т/С0 и Т/С1 выбор режима и входного такта можно определить с помощью комбинаций разрядов, представленных в табл. 4.1.
Таблица 4.1. Выбор режима и входного такта для Т/С0 и Т/С1
CSx2 | CSx1 | CSxO | Описание |
0 | 0 | 0 | Останов |
0 | 0 | 1 | Режим "Таймер", такт = такт системной синхронизации |
0 | 1 | 0 | Режим "Таймер", такт = такт системной синхронизации / 8 |
0 | 1 | 1 | Режим "Таймер", такт = такт системной синхронизации / 64 |
1 | 0 | 0 | Режим "Таймер", такт = такт системной синхронизации / 256 |
1 | 0 | 1 | Режим "Таймер", такт = такт системной синхронизации /1024 |
1 | 1 | 0 | Режим "Счетчик", такт – внешний на входе Т0 (Т1), активный фронт сигнала – ниспадающий |
1 | 1 | 1 | Режим "Счетчик", такт – внешний на входе Т0 (Т1), активный фронт сигнала – нарастающий |
Для Т/С2 комбинации разрядов CS22, CS21 и CS20 могут иметь разное значение для различных моделей микроконтроллеров.
Т/С0
Схема работы таймера/счетч?