
Принцип работы таймера
Таймер-счетчик О(ТО) выполняет лишь простые операции формирования временных интервалов и подсчета числа внешних событий. Основной блок таймера — восьмиразрядный счетчик, на вход которого поступают тактирующие сигналы с выхода мультиплексора МUХ8->1. Мультиплексор в зависимости от адресующего кода С50С52 выбирает для подачи на вход счетчика один из восьми сигналов. Выбор "заземленного" входа мультиплексора отключает счетчик, внешний сигнал может быть подан на счетчик в двух вариантах — как прямой или как инвертированный, а тактовые сигналы процессора — непосредственно или через делитель частоты с коэффициентами деления 8, 16, 256, 1024,согласно рисунка 3.
Рисунок 3 - Структура таймера 0 микросхемы А\/Р
Получая входные сигналы, счетчик ведет их подсчет и при переполнении (переходе от кода РРН к коду ООН) генерирует запрос на прерывание. Разрешение или запрещение прерываний от таймера регламентируются установкой или сбросом соответствующего бита в регистре масок прерываний. Таким образом, таймер ТО генерирует метки времени. Интервалы между этими метками зависят от выбора коэффициента деления делителя частоты. В режиме подсчета внешних событий содержимое счетчика инкрементируется от фронтов сигналов, выражающих факт наступления события. Счетчик доступен для записи и чтения в любое время.
Таймер 1 (Т1) тоже называется таймером-счетчиком, но он сложнее, чем таймер ТО, и способен выполнять и дополнительные функции. В его структуре повторяются схемы, входящие в состав таймера ТО, и присутствуют новые блоки, согласно рисунка 4.
Рисунок 4 - Структура таймера-счетчика Т1
В части схемы, подобной схеме таймера ТО, отличие состоит лишь в разрядности счетчика (счетного регистра). В таймере Т1 он не восьмиразрядный, а 16-разрядный. Новыми являются блоки 16-разрядного регистра захвата, двух 16-разрядных компараторов и двух 16-разрядных регистров совпадения (А и В).
К новым функциям относятся работа в режиме таймера событий или генератора ШИМ - сигналов. В первом из этих режимов используется регистр захвата, который в произвольный момент времени, задаваемый сигналом на внешнем входе или сигналом от аналогового компаратора, запоминает текущее состояние счетного регистра (захватывает его). При этом сигнал от внешнего входа защищен от действия помех специальными приемами подавления "дребезга контактов". Кроме того, компараторами фиксируется равенство содержимого счетного регистра и некоторых величин, заданных в регистрах совпадений, что может служить сигналом для определенных действий (сброса счетного регистра, изменения состояния какого-либо вывода МК).
Признаки состояний счетчика (переполнение, совпадение, захват) отображаются в регистре прерываний от таймера соответствующими флажками, а разрешение или запрещение прерываний задается битами регистра маскирования прерываний. Счетный регистр в любое время доступен для записи и чтения.
В режиме генерации ШИМ – сигнала (ШИМ - режиме) счетный регистр работает как реверсивный счетчик, а сама широтно-импульсная модуляция заключается в выработке импульсных сигналов с программируемыми частотой и скважностью.
В ШИМ - режиме содержимое счетчика изменяется от нулевого до некоторого максимального (ТОР - значения), затем направление счета изменяется и содержимое счетчика, уменьшаясь, возвращается к нулевому значению, после чего такой цикл вновь повторяется, согласно рисунка 5.
Рисунок 5 - К пояснению процесса генерации
ШИМ - сигнала таймером Т1
Пренебрегая ступенчатым характером изменения кода в счетчике, можно считать, что содержимое счетчика изменяется по пилообразному закону. Частота и амплитуда пилообразного сигнала зависят от входной частоты счетчика и его модуля и от ТОР - значения. Код в регистре совпадения может меняться в моменты достижения счетчиком ТОР - значения. Компаратор сравнивает содержимое счетчика с величиной модулирующего воздействия, отображаемого кодом в регистре совпадения, выделяя во времени интервалы по признаку "больше" или "меньше" для указанных кодов.
Сторожевой таймер предназначен для отслеживания ситуаций, в которых МК неправильно выполняет программу, что может быть следствием воздействия помех, особенно опасных при работе МК в окружении мощного силового оборудования. Сторожевой таймер, переполняясь, вызывает сброс МК, если таймер не будет сброшен в течение определенного промежутка времени. Сброс МК означает его перезапуск, после чего начинается новое выполнение программы. Таким образом, сторожевой таймер защищает работу системы от сбоев. Если программа выполняется правильно, она должна периодически сбрасывать сторожевой таймер через промежуток времени, меньший его периода. Для управления работой сторожевого таймера (его включения/выключения и задания периода переполнения, называемого тайм-аутом) используются биты соответствующего управляющего регистра, согласно рисунку 6.
Рисунок 6 - Структура сторожевого таймера
Сторожевой таймер имеет независимый генератор тактовых сигналов (в МК АVR частота независимого генератора при напряжении питания 5 В равна 1 МГц, а при напряжении питания 3 В это 350 кГц). Независимый генератор сохраняет рабочее состояние сторожевого таймера даже в режиме глубокого понижения мощности Роwer Down, так что этот таймер может быть использован для "пробуждения" микроконтроллера, т. е. вывода его из состояния Роwer Down. Сбросы таймера происходят под воздействием команды WDR, а импульсы сброса/запуска контроллера выбираются мультиплексором с одного из восьми выходов счетчика. Коэффициенты деления входной частоты счетчика для этих выходов различны, а периоды тайм-аута в зависимости от выбора того или иного выхода составляют 16, 32, 64, 128, 256, 512, 1024 или 2048 мс. Величина таймаута выбирается трехразрядным кодом WDP0 – WDP2, загруженным в регистр WDTCR. Включение сторожевого таймера производится установкой бита WDE в том же управляющем регистре.