Сторожевой таймер

Лекция №7

Асинхронный режим

В некоторых моделях микроконтроллеров таймер может работать в асин­хрониом режиме. В этом режиме на вход таймера подается либо частота от внутреннего кварцевого генератора, либо от внешнего генератора. Счетчик не вырабатывает никаких прерываний и дополнительных сигналов. В этом режиме он работает в качестве часов реального времени. Микроконтроллер может предустанавливать содержимое счетного регистра. А затем в любой момент он может считать это содержимое, получив, таким образом, текущее значение реального времени.

Общие сведения

Сторожевой таймер (Watchdog Timer, WDT) - одно из самых полезных уст­ройств в составе микроконтроллеров, потому, что он применяется на практике почти во всех разрабатываемых приложениях. Причем его полезность не всегда очевидна: в нормальном режиме работы, когда все настроено идеально, он, в общем-то, и вовсе не ну­жен.

Однако особенностью функционирования МК-систем управления является то, что они практически всегда работают в автономном режиме (без участия или контроля со стороны человека- оператора). Причем МК-системы зачастую формируют коды управляющих воздействий для исполнительных механизмов и ошибки, а тем более неконтролируемые действия могут стоить очень дорого, поэтому они должны быть исключены независимо от вариантов развития событий.

Например, вполне реальными представляются следующие ситуации: МК настроен на обработку некоторой совокупности данных, при этом возможно возникновение их сочетания, которое не предусмотрено программистом, что может привести к зацикливанию программы. Или на практике достаточно распространенным является случай сбоя программного кода при перепадах напряжения, что также может привести к непредвиденным ситуациям. Наиболее разумным выходом в данных и им подобных ситуациях является перезапуск программного кода (перезапуск контроллера), который должен быть выполнен без участия человека.

Перезапуск контроллера - выполнение полного сброса системы (переинициализации путем сброса и запуска с нуля).

Идентификация аварийного состояния (аварийного хода выполнения программы) может быть проведена путем оценки времени выполнения совокупности стандартных операций (основного цикла) МК-системы.

В принципе эту работу может выполнить один из стандартных таймеров счетчиков МК, однако здесь есть свои особенности. Во-первых стандартные Т/С необходимы для решения задач управления, а кроме того, это устройство должно тактироваться отдельным генератором, для того, чтобы иметь возможность управлять выходом из различных режимов энергосбережения.

Перечисленные выше задачи и решает WDT, который сбросит МК по истечении некоторого срока, если его вовремя не остановить.

Для предотвращения перехода микроконтроллера в режим бесконечного цик­ла, когда на него невозможно повлиять извне (такие ситуации возникают при ошибках в программах пользователя) компания Atmel оснастила все микрокон­троллеры базовой серии семейства АVR так называемыми сторожевыми таймерами - WDT.

WDT подклю­чается к автономному RC-генератору с частотой примерно 1 МГц при пита­нии 5В (в старых моделях эта частота могла уменьшаться пропорционально снижению питания МК, в Mega ее стабильность несколько повышена).

Сторожевой интервал может принимать одно из 8 значений от 16 до2048 мс посредством установки коэффициента встроенного предделителя (управляется специальными битами).

Если по истечении настраиваемого времени задержки программа пользовате­ля не выполнит команду сброса системы, это сделает сторожевой таймер. После сброса сторожевого таймера отсчет времени задержки возобновляется. Если тре­буется контролировать ход выполнения программы, то программист должен акти­визировать сторожевой таймер и через регулярные отрезки времени включать в программу команду сброса, которая обеспечивает своевременный сброс перед началом нового отсчета времени.

Когда отсчет времени сторожевым таймером прекращается, выполнение про граммы продолжается с адреса $000, как по сигналу сброса при включении питания.

Кроме того к функциям WDT относится и пробуждение системы, находящейся в одном из режимов энергосбережения, если "пробу­ждающее" событие не наступило. В отличие от выхода из "сна" через внеш­нее событие, при этом выполнится не прерывание, а начальная процедура RESET, как при включении. Отметим, что включенный WDT потребляет ток примерно 70 мкА.

Для того чтобы вследствие какой-нибудь помехи WDT не запустился и, глав­ное, не выключился случайно, и для запуска и для выключения его преду­смотрена довольно "навороченная" процедура. Для того чтобы предотвратить непреднамеренное отключение сторожевого таймера, необ­ходимо придерживаться определенной процедуры, описанной ниже в разделе, по­священном регистру управления WDTCR.

Причем процедура эта различается для МКсемейств Tiny, Classic и Mega, что дало зачем-то авторам техдокументации основание для ввода специальных "уровней управления" режимом WDT.

Если в какой-либо простой программе контроль с помощью сторожевого тай­мера не требуется, то его можно отключить. По умолчанию, сторожевой таймер после поступления сигнала сброса по включению питания отключается.


Функциональная схема и управление WDT.

Упрощенная функциональная схема сторожевого таймера приведена на рис._________.

Рис. 6.9. Устройство сторожевого таймера


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: