Аппаратный сторожевой таймер

Аппаратный сторожевой таймер HWDT (Hardware WatchDog Timer) производит сброс микроконтроллера при своём переполнении, что является средством против зависания системы и зацикливания программного обеспечения (не путать с режимом сторожевого таймера модуля 4 РСА). HWDT состоит из 14-битного счётчика, инкрементируемого каждый машинный цикл и SFR-регистра WDTRST. Сторожевой таймер всегда активен и увеличивает свое содержимое при работающем тактовом генераторе. Средств его запрещения нет. При сбросе микросхемы счётчик сторожевого таймера загружается нулевым значением. Для предупреждения срабатывания сторожевого таймера через каждые 16383 машинных цикла, пользовательская программа должна периодически записывать байты 01Eh и 0E1h (последовательно) в регистр WDTRST (физический адрес - 0A6h). Данный регистр доступен только по записи, а программного доступа к счётчику сторожевого таймера не существует.

Если HWDT используется по своему прямому назначению - для страховки от зависания - не рекомендуется производить регенерацию сторожевого таймера в теле процедуры обработки таймерного прерывания, поскольку оно может происходить и при зависшей основной программе. Лучшее место для встраивания команд обнуления сторожевого таймера - циклически выполняемая, с периодом меньшим, чем время срабатывания HWDT, программная секция.

При переводе 8XC51GB в режим микропотребления происходит останов внутреннего тактового генератора, а вместе с ним и сторожевого таймера. Выход из режима микропотребления возможен 2-мя путями - сбросом микросхемы или подачей на её вход внешнего прерывания, разрешённого в момент перевода прибора в состояние микропотребления. Первый способ - обнуляет HWDT. Когда же выход из режима происходит по второму способу, то сигнал прерывания должен некоторое время находиться в низком уровне для стабилизации работы тактового генератора. При переходе сигнала внешнего прерывания в состояние логической "1" происходит запуск обработчика данного прерывания. Для предупреждения срабатывания сторожевого таймера в течение времени, когда уровень внешнего сигнала находится в состоянии "0", его счётчик запускается только после появления "1" на соответствующем входе. Для большей уверенности в том, что HWDT не сработает в течение нескольких тактов-состояний во время выхода из режима микропотребления, можно сбросить его заранее при переходе в этот режим.

В режиме холостого хода, поскольку тактовый генератор активен, для предупреждения срабатывания HWDT необходимо использовать таймерное прерывание, по которому будет происходить выход из этого режима, обнуление счётчика сторожевого таймера и возвращение в режим Idle.

Приведём фрагмент кода, использующего прерывание от таймера/счётчика Т/С0 для периодической регенерации аппаратного сторожевого таймера. Первая часть программы представляет собой обработчик прерывания, а вторая производит начальную инициализацию Т/С0 и соответствующего источника прерывания. Таймер устанавливается в 16-битный режим и генерирует прерывания с интервалом 16000 тактов - для этого в таймер периодически загружается значение FFFFh-3E80h=0C1Fh. Это фрагмент программы приведён исключительно с целью демонстрации и не даёт полной гарантии от зависания микроконтроллера. Однако он прост и не требует организации циклов в теле основной программы.

Обработчик прерывания от Т/С0:
ORG 000Bh    
CLR MOV TR0 WDT, #1Eh Приостановка таймера ;очистка HWDT
MOV WDT, #0E1h  
MOV TL0, #7Fh ;запись нового интервала в Т/С0
MOV TH0, #0C1h  
SETB TR0 ;перезапуск таймера
RETI    
; Процедура инициализации Т/С0
Timer 0 Init:    
SETB EA ;разрешить прерывание от Т/С0
SETB ET0 ;
MOV TMOD, #01h ;установить режим 16-бит. Таймера
MOV TL0, #7Fh ;запись нового интервала в Т/С0
MOV TH0, #0C0h  
SETB TR0 перезапуск таймера
RET    

 








Дата добавления: 2015-10-09; просмотров: 982;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.