Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 14. Режимы энергосбережения и сторожевой таймер 379 Смысл этой процедуры в том , чтобы woтcR никогда не оставался с обнуленными бита ми woPx, - это означает минимальное время срабатывания (около 1 6 мс) , и если WDT был близок к срабатыванию, то теоретически не исключена ситуация, что он успеет сбросить систему до окончательного выключения. Для расширенного варианта WDT при его остановке рекомендуется тем же способом очистить бит прерывания ( woRF в регистре мcusR ) , чтобы оно случайно не возникло после выключения. На практике это, однако, чистая перестраховка - все равно WDT перед внесением каких-то изме нений нужно сбрасывать командой wctr . Возможно, так надо делать в ответственных приборах на всякий случай , но если мы следим за временами в своей программе, не сложно вероятность такого совпадения исключить. Составляя программу, о включенном WDT нужно помнить : если встречаются дли тельные процедуры, которые нельзя прерывать (например, запись в EEPROM не скольких байтов подряд, отправка по UART большого массива, запись/чтение внешней памяти и т. п. ), то надо не забывать WDT периодически сбрасывать командой wdr, а если это по какой-то причине невозможно, то перед выполнением таких процедур сторожевой таймер нужно принудительно запрещать, а потом опять разрешать. П римеры использования WDT Рассмотрим сначала простой классический вариант на примере АTmega8 . Подклю чите к его выводу 1 4 (РВО) светодиод. Больше можно ничего не подключать - за вести контроллер можно в нашем случае от любой частоты любого источника. Программа будет такой (листинг 4 .6) . . device AТmegaB ; 4 МГц ( важно только для задержки ) . include "mBdef . inc " . def temp =rl б . def RazrO . def Razr l . def Razr2 rl 7 ; разряды задержки r l B r l 9 ; ============ прерывания rjmp RESET ; Reset Handle ; ========== программа ============ . macro Delay2 0 ; процедура задержки до 2 0 с при 4 МГц ldi Razr2 , @ 0 ; старший байт задержки ldi Razrl , @ l ; средний байт задержки ldi Razr0 , @ 2 ;мпадший байт задержки R suЬ : suЬi RazrO , l
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==