Установка с уровнем защиты – 1.
Для семейства Mega процедура несколько сложнее: сначала нужно установить биты WDCE И WDE одновременно, потом повторно разрешить работу установкой WDE и одновременно установить коэффициент деления, но при сброшенном WDCE: (листинг 7.3).
Листинг 7.3 |
сli
wdr
ldi tmp, (l<<WDCE) I (l<<WDE)
out WDTCR,tmp
ldi tinр, (l«WDE) I (l«WDP2) I (l«WDPl.) I (l«WDP0)
out WDTCR,tmp
sei
Процедура выключения одинакова для всех моделей и аналогична включению в предыдущем случае (листинг 7.4).
Листинг 7.4 |
cli
wdr
ldi tmp, (l«WDCE) I (l«WDE)
out WDTCR,tmp
ldi tmp, (O«WDE)
out WDTCR,tmp
sei
После того как мы разобрались с включением, WDT начинает постоянно "молотить" (в том числе и в режиме энергосбережения), и чтобы избежать сброса МК в нормальном режиме работы программы, таймер следует периодически сбрасывать командой wdr - paньше, чем истечет заданный период. Обычно это делается по какому-либо прерыванию, например:
ЕХТ INT0:
wdr ;сброс сторожевого таймера
Предположим, что мы установили WDT на период 2 с, а прерывание должно возникать каждую секунду, то командой wdr мы сбрасываем таймер WDT заведомо раньше, чем он сработает, и тогда он начнет отсчет выдержки сначала. Если же что-то (часы или программа) "повиснет", то произойдет общий сброс МК.
Дата добавления: 2015-08-14; просмотров: 423;