Режим прерывания
Управление режимами работы в процессе функционирования
Режимы работы WDT
Сторожевые таймеры в общем случае допускают следующие режимы работы:
- режим прерывания;
- режим сброса системы;
- режим прерывания и сброса системы;
- таймер остановлен.
Установка режимов работы таймера может осуществляться как в процессе функционирования системы, так и на этапе программирования.
Рассмотрим сначала возможности управления режимами работы таймера, которые могут быть реализованы в процессе функционирования системы. Установка указанных режимов осуществляется установкой соответствующих бит регистра управления WDTCR.
В табл. 7.2 показаны все режимы сторожевого таймера.
WDTON | WDE | WDIE | Режим работы WDT | Действие по истечении контрольного времени |
Таймер остановлен | Нет | |||
Режим прерывания | Вызов прерывания | |||
Режим сброса | Системный сброс | |||
Режим прерывания и сброса | Вызов прервания и переход к системному сбросу | |||
х | Х | Режим сброса | Системный сброс |
Если оба флага (WDE и WDIE) сброшены, то сторожевой таймер остановлен.
Нормальный режим работы (режим сброса)
Если установлен только бит WDE – то сторожевой таймер работает в режиме системного сброса. В нормальном режиме работы необходимо, чтобы программа периодически сбрасывала охранный таймер при помощи команды WDR. Программа должна быть написана таким образом, чтобы команда сброса всегда приходила раньше, чем содержимое таймера достигнет конца. Если система зависнет и перестанет перезапускать счетчик, то он досчитает конца. Это вызовет прерывание или системный сброс. В результате программа начнет работать сначала.
Если установлен только бит WDIE – то сторожевой таймер работает в режиме прерывания.
В режиме прерываний при истечении заданного времени система WDT вырабатывает запрос на прерывание. Этот запрос может использоваться для пробуждения микроконтроллера из любого спящего режима.
Пробуждение происходит таким же образом, как в случае прерывания от системного таймера. Один из вариантов использования такого режима – ограничение максимального времени выполнения некоторых операций. Таймер вызывает прерывание, если выполнение операции происходит дольше, чем положено.
Если оба флага (WDE и WDIE) установлены, охранный таймер переходит в режим прерывания со сбросом. В этом режиме первое срабатывание охранного таймера установит флаг WDIF. Как только начнется процедура обработки прерывания, флаги WDIE и WDIF автоматически очистятся, а сторожевой таймер перейдет в режим сброса.
Этот режим объединяет возможности двух первых режимов. Сначала вызывается прерывание, а затем происходит системный сброс. Этот режим применяется, например, в том случае, когда перед вызовом системного сброса необходимо сохранить важные параметры.
Это повышает надежность работы охранного таймера по сравнению с обычным режимом работы по прерыванию. Если процедура обработки прерывания затянется непозволительно долго, произойдет очередное срабатывание сторожевого таймера, которое уже вызовет системный сброс микроконтроллера.
В случае успешного завершения процедуры обработки прерывания сторожевой таймер все равно останется в режиме системного сброса для того, чтобы сторожевой таймер постоянно оставался в режиме прерывания, необходимо устанавливать этот режим программным путем после каждого прерывания.
Таймеры, реализующие режимы прерывания имеют несколько усложненную функциональную схему формирования сигналов сброса и прерывания (рис.7.2.)
Рис.7.2. Функциональная схема МК AVR AT2313.