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

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > ARM

реклама

 




Мероприятия:




17.3 Функциональное описание

Сторожевой таймер (Watchdog Timer) предназначен для предотвращения блокировки системы при сбоях и зацикливаниях программного обеспечения, т.е. так называемых зависаниях программы. Питание таймера осуществляется от напряжения VDDCORE. Сброс процессора также вызывает сброс сторожевого таймера.

Основу сторожевого таймера составляет 12-битный счетчик, начальное содержимое которого загружается из поля WV регистра режима WDT_MR. Для тактирования счетчика используется сигнал низкочастотного тактового генератора (Slow Clock), деленный на 128, что позволяет задавать период срабатывания сторожевого таймера до 16 секунд (при типовой частоте Slow Clock, равной 32768 Гц).

Сразу после окончания сброса в поле WV регистра WDT_MR храниться значение 0xFFF, что соответствует максимальному периоду срабатывания сторожевого таймера и при этом от него разрешено формирование внешнего сброса (установлен флаг WDRSTEN). Это означает, что сразу после сброса сторожевой таймер включен: например, после включения питания. Программно возможен либо запрет работы сторожевого таймера (установка флага WDDIS в регистре WDT_MR), либо перенастройка периода его срабатывания в соответствии с требованиями программного обеспечения.

После сброса процессора запись в регистр режима WDT_MR разрешена только один раз, т.е. только для первоначальной настройки работы сторожевого таймера.

В штатном режиме работы программного обеспечения должен производиться сброс сторожевого таймера (установка флага WDRSTT в регистре управления WDT_CR) периодически примерно через примерно равные интервалы времени для предотвращения его срабатывания. При этом сразу же произойдет перезагрузка содержимого счетчика сторожевого таймера новым значением из регистра WDT_MR и его перезапуск (также сбрасывается предделитель 1:128 низкочастотного генератора). Регистр WDT_CR защищен от записи без установки соответствующего защитного ключа. Если установлен флаг WDRSTEN в регистре режима WDT_MR, то при срабатывании сторожевого таймера (исчерпание его 12-битного счетчика) будет сформирован сигнал wdt_fault, поступающий на контроллер сброса. Помимо этого будет также установлен флаг WDUNF в регистре статуса WDT_SR.

Для исключения зацикливания программы (зависания) в том месте, в котором производится сброс сторожевого таймера, в нем реализованы так называемые временные ворота: при попытке сброса сторожевого таймер вне этих временных ворот произойдет сброс процессора. Настройка временных ворот производится помощью поля WDD регистра режима WDT_MR. Сброс сторожевого таймера разрешен только при текущем содержимом его счетчика, лежащем в диапазоне от 0 до WDD (включительно). При установке флага WDRSTT происходит сброс сторожевого таймера.

Попытка сброса сторожевого таймера при содержимом его счетчика в диапазоне WDV…WDD вызывает установку соответствующего флага ошибки (WDERR) даже, если работа сторожевого таймера запрещена. В результате чего на контроллер сброса поступает сигнал wdt_fault.

Временные ворота сторожевого таймера можно отключить, записав в поле WDD регистра WDT_MR значение, равное или большее периода срабатывания таймера (поле WDV регистра WDT_MR). В этом случае сброс сторожевого таймера возможен в любое время без вызова ошибки WDERR (разумеется, не превышающее периода его срабатывания). По-умолчанию после сброса временные ворота неактивны (содержимое полей WDV и WDD равны).

Флаги статуса WDUNF (переполнение сторожевого таймера) и WDERR (ошибка сторожевого таймера) вызывают прерывание, если установлен флаг WDFIEN в регистре WDT_MR (разрешение прерываний от сторожевого таймера). Если установлен флаг WDRSTEN и контроллер сброса настроен на возможность сброса от сторожевого таймера, то при формировании сигнала wdt_fault возникнет сброс процессора и самого сторожевого таймера. В этом случае сразу после сброса происходит снятие флагов WDERR и WDUNF. Если возник сигнал сброса, или было выполнено чтение регистра статуса WDT_SR, то сразу производится очистка флагов состояния сторожевого таймера, флага прерывания и снятие сигнала wdt_fault.

Запись в регистр WDT_MR вызывает перезагрузку и перезапуск 12-битного декрементного счетчика сторожевого таймера.

В зависимости от состояния флагов WDIDLEHLT и WDDBGHLT в регистре WDT_MR работа сторожевого таймера может быть приостановлена, пока процессор находится соответственно в холостом режиме или в режиме отладки.

Механизм работы сторожевого таймера
Рисунок 17-2. Механизм работы сторожевого таймера



<--Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники