Раздел: Документация
0 ... 125 126 127 128 129 130 131 ... 195
ATmega48x/88x/168x ATmega 164х/324х/644х ATmega640x/1280x/1281x ATmega2560x/2561x Рис. 7.32. Формат регистра WDTCSR Таблица 7.41. Биты регистра WDTCSR
Для включения/выключения сторожевого таймера используются два бита регистра WDTCR — WDE и WDCE. Если бит WDE установлен в 1, сторожевой таймер включен, если сброшен в 0 — выключен. Для сброса бита WDE необходимо выполнить следующие действия: 1.Одной командой записать лог. 1 в биты WDE и WDCE. 2.В течение следующих четырех тактов записать лог. О в бит WDE. Обратите внимание на то, что состояние флага сброса WDRF регистра MCUSR отменяет состояние бита WDE. Это означает, что бит WDE установлен всегда, когда установлен флаг WDRF, поэтому перед сбросом WDE необходимо также сбросить WDRF. Разрешение прерывания от сторожевого таймера осуществляется установкой в 1 бита WDIE регистра WDTCSR. Для индикации прерывания служит флаг WDIF того же регистра. При генерации запроса на прерывание этот флаг устанавливается в 1. Сбрасывается он аппаратно при запуске соответствующей подпрограммы обработки прерывания или же вручную, записью в него лог. 1. Как уже упоминалось, расширенный сторожевой таймер может работать в нескольких режимах (Табл. 7.42). В режиме сброса он работает как стандартный сторожевой таймер, вызывая сброс микроконтроллера через заданные промежутки времени. Как правило, этот режим используется для предотвращения зависания программы из-за сбоя в работе микроконтроллера. В режиме прерывания по тайм-ауту сторожевого таймера вместо сброса микроконтроллера генерируется прерывание. Это прерывание можно использовать для вывода микроконтроллера из «спящего» режима или же в качестве системного таймера, например для ограничения времени выполнения какой-либо операции. Режим прерывания включается установкой бита WDIE при сброшенном бите WDE. Третий режим — режим прерывания и сброса — объединяет в себе два предыдущих. В этом режиме по первому тайм-ауту сторожевого таймера генерируется прерывание, после завершения обработки которого сторожевой таймер автоматически переключается в режим сброса. Соответственно при последующем тайм-ауте выполняется сброс микроконтроллера. Данный режим позволяет перед сбросом микроконтроллера сохранить различные критические переменные программы. Режим сброса и прерывания включается одновременной установкой битов WDE и WDIE. При выполнении подпрограммы обработки прерывания флаги WDIE и WDIF автоматически сбрасываются (таймер переключается в режим сброса). Чтобы сторожевой таймер остался в режиме сброса и прерывания, бит WDIE необходимо устанавливать после каждого прерывания, причем это рекомендуется осуществлять вне обработчика прерывания. Таблица 7.42. Режимы работы сторожевого таймера
Период тайм-аута сторожевого таймера задается с помощью битов WDP3...WDP0 регистра WDTCSR согласно Табл. 7.43. Для изменения периода тайм-аута необходимо выполнить следующие действия: 1.Одной командой записать лог. 1 в биты WDE и WDCE. 2.В течение следующих четырех тактов записать требуемое значение в биты WDP3:0 и WDE, одновременно сбрасывая бит WDCE. Перед изменением битов WDP3:0 сторожевой таймер рекомендуется сбрасывать. Таблица 7.43. Задание периода сторожевого таймера
0 ... 125 126 127 128 129 130 131 ... 195
|