СТОРОЖЕВОЙ ТАЙМЕР
Лекция №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.
Если в какой-либо простой программе контроль с помощью сторожевого таймера не требуется, то его можно отключить. По умолчанию, сторожевой таймер после поступления сигнала сброса по включению питания отключается.
Дата добавления: 2015-08-14; просмотров: 542;