Лекция: Сторожевой таймер (Watchdog Timer)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Идея использования стоpожевого таймера предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не произойдет сброс пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса сторожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же пpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа не будет выполнена в течение достаточного вpемени и в результате пpоизойдет сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.

Рис. 22. Структура сторожевого таймера

Сторожевой таймер тактируется отдельным встроенным генератором, работающим с частотой 1 МГц при типовом напряжении питания VCC=5 В (см. типовые значения при других значениях VCC). Установкой коэффициента предварительного деления можно изменять длительность интервала до сброса по сторожевому таймеру от 16 тыс. до 2048 тыс. циклов (от 16 до 2048 мс). Команда WDR (Watchdog Reset) сбрасывает сторожевой таймер.

С момента сброса сторожевого таймера можно установить восемь периодов длительности тактового сигнала, устанавливая, таким образом длительность периода сброса (тайм-аута). Если период сброса завершается (в течение этого периода не поступил сигнал сброса сторожевого таймера), то микроконтроллер ATmega8515 сбрасывается и его работа продолжается по вектору сброса.

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

Непосредственно перед включением сторожевого таймера рекомендуется выполнить сброс командой WDR. Для выключения или смены периода тайм-аута сторожевого таймера необходимо выполнить последовательность команд. Это сделано для того, чтобы свести к минимуму вероятность непреднамеренного изменения конфигурации сторожевого таймера.

 

Регистр управления сторожевым таймером – WDTCR

(Watchdog Timer Control Register)

Таблица 16. Формат регистра WDTCR

Bits 7..5 — Res: — Зарезервированные биты. Эти биты в микроконтроллерах ATmega8515 зарезервированы и при считывании всегда будут 0.

Bit 4 — WDСE: — Разрешение отключения сторожевого таймера.Данный бит должен быть установлен в состояние 1 при очистке бита WDE. В ином случае сторожевой таймер не будет запрещен.

Bit 3 — WDE: — Разрешение сторожевого таймера.Если бит WDE установлен в состояние 1 (сторожевой таймер разрешен) и если бит WDE очищен, то функционирование сторожевого таймера запрещено. Бит WDE может быть очищен только если установлен бит WDСE.

Для запрещения разрешенного сторожевого таймера необходимо выполнить следующую процедуру:

1. В одной операции записать логическую 1 в WDСЕ и WDE. Логическая 1 должна быть записана в WDE даже если этот бит был установлен перед началом операции запрета сторожевого таймера.

2. За время последующих четырех тактовых циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен.

Bits 2..0 — WDP2, WDP1, WDP0: — биты установки коэффициента предварительного деления сторожевого таймера.Состояния битов WDP2, WDP1 и WDP0 определяют коэффициент предварительного деления тактовой частоты разрешенного сторожевого таймера. Коэффициенты и соответствующие им промежутки времени представлены в таблице17.

Таблица 17. Выбор коэффициента предварительного деления тактовой частоты сторожевого таймера

WDP2 WDP1 WDP0 Длительность цикла сторожевого таймера
16 тыс. циклов
32 тыс. циклов
64 тыс. циклов
128 тыс. циклов
256 тыс. циклов
512 тыс. циклов
1024 тыс. циклов
2048 тыс. циклов

 

МК ATmega8515 предусматривает несколько «уровней безопасности» – (0,1,2), каждый из которых накладывает определенные ограничения по изменению конфигурации сторожевого таймера.

Уровень 0 – при включении МК сторожевой таймер выключен, но он может быть включен в любой момент времени, записью логической 1 в разряд WDE Rg WDTCR.

Уровень 1– при включении МК сторожевой таймер включен. Для выключения сторожевого таймера необходимо одной командой записать логическую 1 в разряды WDE и WDСE, а в течение следующих четырех машинных циклов записать тоже одной командой 1 в WDE и 0 в WDСE. Для изменения периода тайм-аута необходимо одной командой записать логическую 1 в разряды WDE и WDTCE. В течение следующих четырех машинных циклов тоже одной командой установить WDE=1, WDTCE=0 и требуемые значения в разряды WDP2,1,0.

Уровень 2 – сторожевой таймер включен постоянно (WDE=1 всегда) и не может быть выключен. Для изменения периода тайм-аута необходимо одной командой записать логическую 1 в разряды WDE и WDСE, а в течение следующих 4 машинных циклов записать одной командой требуемые значения в разряды WDР2- WDР0, одновременно сбрасывая разряд WDСE. Значение записываемое в разряд WDE безразлично.

 

еще рефераты
Еще работы по информатике