Таймеры представляют собой обычные цифровые счётчики, которые подсчитывают импульсы от высокостабильного генератора частоты. К системной шине микропроцессора таймеры подключаются при помощи параллельных портов.
Генератор частоты, входящий в состав электронного таймера, определяет минимальный интервал времени, который может определять данная схема таймера. Интервалы времени, задаваемые электронным таймером, могут устанавливаться только из дискретного набора допустимых времён. Дискретность установки этих интервалов времени тоже определяется частотой задающего генератора, входящего в состав электронного таймера микропроцессора. Разрядность цифрового счётчика, входящего в состав таймера, определяет максимальный интервал времени, который может определять таймер.
Обычно используются 16-ти разрядные электронные таймеры времени, поэтому, для подключения такого таймера к 8-ми разрядному процессору требуется два параллельных порта. Кроме того, таймером времени нужно управлять. Таймер нужно включать и выключать, часто требуется определять не возникало ли переполнение таймера (факт переполнения легко запомнить в дополнительном триггере, подключенном к выходу переноса счетчика таймера). Этот триггер называется флагом переполнениятаймера. Триггер (флаг) включения и выключения таймера и флаг переполнения таймера подключают к системной шине микропроцессора через дополнительный порт ввода вывода.
Структурная схема таймера, построенного по описанным выше принципам, приведена на рисунке 1.
Рисунок 1. Структурная схема таймера
В зависимости от типа использованного цифрового счетчика таймеры, отсчитывающие внутреннее время микропроцессора, бывают суммирующие или вычитающие. Если в таймере, задающем системное время микропроцессора, используется суммирующий счётчик, то таймер называется суммирующим. Если в таймере используется вычитающий счётчик, то таймер называется вычитающим.
Использование вычитающего счётчика в составе таймера, задающего системное время микропроцессора, позволяет проще задавать интервалы времени. В этом случае записываемый в таймер двоичный код будет соответствовать интервалу времени:
В случае использования суммирующего таймера код, записываемый в таймер для задания интервала времени, определяется из другой формулы:
В этой формуле код, который заносится в электронный таймер, представляет собой дополнение кода интервала времени до максимального кода, который можно записать в таймер. Максимальный код таймера, а следовательно максимального интервала времени, определяется по разрядности таймера. В рассмотренном примере разрядность таймера равна 16. Это означает, что максимальное значение двоичного кода равно 65535.
Свободнобегущие таймеры
Достаточно часто в составе микропроцессорной системы суммирующие таймеры используются в режиме свободнобегущего таймера. Схема такого таймера приведена на рисунке 2.
Рисунок 2. Структурная схема свободнобегущего таймера с модулем сравнения
Свободнобегущие таймеры используются как системные часы, задающие время внутри микропроцессорной системы. Для задания промежутков времени микропроцессор считывает значение текущего системного времени и суммирует с ним код задаваемого промежутка времени. Полученный результат записывается в регистр сравнения свободнобегущего таймера. При совпадении значений таймера и регистра сравнения устанавливается (осуществляется запись единицы) флаг совпадения. Значение этого флага можно определить программным опросом (микропроцессор должен периодически читать соответствующую ячейку памяти) или воспользоваться механизмом прерывания работы процессора.
Часто с одним свободнобегущим таймером работает несколько модулей сравнения. В этом случае они образуют набор модулей сравнения (PCA). Практически все современные микроконтроллеры и сигнальные процессоры оснащены таймерами с такими наборами модулей.
Таймеры с модулями захвата
Кроме модулей сравнения с свободнобегущим таймером работают модули захвата, которые позволяют аппаратно запоминать время какого-либо внешнего события без участия центрального процессора. Структурная схема свободнобегущего таймера с модулем захвата приведена на рисунке 3.
Рисунок 3. Структурная схема свободнобегущего таймера с модулем захвата