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