Сторожевой таймер
Mикроконтроллер Atmega128 имеeт в своем составе сторожевой таймер, предназначенный для защиты микроконтроллера от сбоев в процессе работы. Cтруктурная схема сторожевого таймера приведена на Рис.5.15. Сторожевой таймер имеет независимый тактовый генератор, поэтому он работает даже во время нахождения микроконтроллера в любом из спящих режимов. Типовое значение частоты этого генератора равно 1МГц при V CC = 5.0 В. Если сторожевой таймер включен, то через промежутки времени, равные его периоду, он выполняет сброс микроконтроллера. Чтобы избежать сброса при нормальном выполнении программы, сторожевой таймер необходимо регулярно сбрасывать через промежутки времени,меньшие его периода. Сброс сторожевого таймера осуществляется командой WDR.
Рис.5.1 5. Структурная схема сторожевого таймера Для управления сторожевым таймером предназначен регистр WDTCR, который расположен по адресу $21 ($41). Формат этого регистра приведен на Рис.5.16, а описание его разрядов — в Табл.5.18. Рис.5.18. Формат регистра WDTCR
Таблица5.18. Разряды регистра WDTCR
Для включения/выключения сторожевого таймера используются два разряда регистра WDTCR — WDE и WDCE. Если разряд WDE установлен в «1», сторожевой таймер включен, если сброшен в «0» — выключен. Непосредственно перед включением таймера рекомендуется выполнять его сброс командой WDR. Для выключения сторожевого таймера, а в некоторых случаях и для изменения периода тайм_аута необходимо выполнить определенную последовательность команд. Это сделано для того, чтобы свести к минимуму вероятность непреднамеренного изменения конфигурации сторожевого таймера. Для изменения периода тайм_аута необходимо одной командой записать лог. 1 в разряды WDE и WDTCE, а в течение следующих четырех машинных циклов записать требуемое значение в разряды WDP2…0, одновременно сбрасывая разряд WDCE. Значение, записываемое в разряд WDE, безразлично.Период тайм_аута сторожевого таймера задается с помощью разрядов WDP2…WDP0 регистра WDTCR согласно Табл. 5.19. Таблица5.19. Задание периода сторожевого таймера Чтобы избежать непреднамеренного сброса микроконтроллера при изменении периода сторожевого таймера, необходимо перед записью разрядов WDP2…WDP0 либо запретить сторожевой таймер, либо сбросить его.
Глава 6. Аналоговый компаратор
|