Перейти к основному содержимому

Сторожевой таймер

Сторожевой таймер предназначен для принудительной перезагрузки системы в случае ее зависания. В основе таймера лежим счетчик разрядностью 32 бита со счетом «вниз». Модуль формирует регулярное прерывание INT_WDT в зависимости от запрограммированного значения. Каждый такт синхросигнала значение счетчика уменьшается на единицу. Когда значение счетчика достигает 0, формируется сигнал прерывания. Затем счетчик перезагружается и заново начинает отсчет к нулю. Если к моменту, когда счетчик достиг заново значения 0, прерывание не очищено, то в систему формируется сигнал сброса WDT_RST. Таким образом, сторожевой таймер предоставляет возможность восстановления системы после сбоя программного обеспечения. При необходимости модуль может быть выключен.

Регистры сторожевого таймера​

№АббревиатураДоступОписание
2200hWDT_LOAD0RWПериод счета сторожевого таймера 0
2201hWDT_LOAD1RWПериод счета сторожевого таймера 1
2202hWDT_LOAD2RWПериод счета сторожевого таймера 2
2203hWDT_LOAD3RWПериод счета сторожевого таймера 3
2204hWDT_VAL0RТекущее значение сторожевого таймера 0
2205hWDT_VAL1RТекущее значение сторожевого таймера 1
2206hWDT_VAL2RТекущее значение сторожевого таймера 2
2207hWDT_VAL3RТекущее значение сторожевого таймера 3
2208hWDT_CTRLRWРегистр управления
220СhWDT_CLRWРегистр сброса прерывания
2210hWDT_INTRAWRРегистр исходного прерывания
2214hWDT_INTRРегистр маскируемого прерывания
2218hWDT_LOCKRWРегистр блокировки доступа к сторожевому таймеру
221СhWDT_TCRRWРегистр перехода в тестовый режим
2220hWDT_TOPWРегистр управления в тестовом режиме

WDT_LOAD0​

Регистр содержит значение, с которого счетчик начнет уменьшаться. При перезаписи данного регистра таймер немедленно стартует с записанного значения. Минимальное допустимое значение для WDT_LOAD равно 1. 32-х разрядное значение поместится в регистр сторожевого таймера в момент записи в данный регистр.

Бит76543210
НазначениеVALUE
Начальное значение0

VALUE – период счета сторожевого таймера, младшая часть.

WDT_LOAD1​

Бит76543210
НазначениеVALUE
Начальное значение0

VALUE – период счета сторожевого таймера, биты <15:8>.

WDT_LOAD2​

Бит76543210
НазначениеVALUE
Начальное значение0

VALUE – период счета сторожевого таймера, биты <23:16>.

WDT_LOAD3​

Бит76543210
НазначениеVALUE
Начальное значение0

VALUE – период счета сторожевого таймера, старшая часть.

WDT_VAL0​

Бит76543210
НазначениеCURRENT_VALUE
Начальное значение0

CURRENT_VALUE – текущее значение таймера, младшая часть.

WDT_VAL1​

Бит76543210
НазначениеCURRENT_VALUE
Начальное значение0

CURRENT_VALUE – текущее значение таймера, биты <15:8>.

WDT_VAL2​

Бит76543210
НазначениеCURRENT_VALUE
Начальное значение0

CURRENT_VALUE – текущее значение таймера, биты <23:16>.

WDT_VAL3​

Бит76543210
НазначениеCURRENT_VALUE
Начальное значение0

CURRENT_VALUE – текущее значение таймера, старшая часть.

WDT_CTRL​

Бит76543210
НазначениеРезервRST_ENINT_EN
Начальное значение0

RST_EN – разрешение на формирование сигнала сброса по завершению счета таймера:

  • 1 – сброс разрешен;
  • 0 – сброс запрещен.
     

INT_EN – разрешение на формирование прерывания по окончанию счета таймера:

  • 1 – прерывание разрешено;
  • 0 – прерывание запрещено.

Сторожевой таймер начинает счет, если установлен бит INT_EN. Сторожевой таймер перестает считать, если бит INT_EN сброшен в ноль. После разрешения прерывания, если пользователь до этого его запрещал, счетчик автоматически перезагрузится со значения из регистра WDT_LOAD.

WDT_CLR​

Запись любого значения в данный регистр очищает прерывание сторожевого таймера и перезагружает счетчик значением из регистра WDT_LOAD.

Бит76543210
НазначениеCLEAR
Начальное значение0

WDT_INTRAW​

Данный регистр указывает на необработанное прерывание от счетчика. На основании данного сигнала формируется маскируемое прерывание.

Бит76543210
НазначениеРезервRAW_WDT
Начальное значение0

RAW_WDT – исходное прерывание таймера:

  • 1 – прерывание произошло;
  • 0 – прерывание отсутствует.

WDT_INT​

Бит76543210
НазначениеРезервINT_WDT
Начальное значение0

INT_WDT – маскируемое прерывание таймера:

  • 1 – прерывание произошло;
  • 0 – прерывание отсутствует.

Данное прерывание формируется на основании битов RAW_WDT и INT_EN и передается в систему.

WDT_LOCK​

Данный регистр блокирует доступ на запись во все остальные регистры сторожевого таймера. Запись значения 55h обеспечивает доступ на запись ко всем регистрам. Запись любого другого значения блокирует доступ. По умолчанию запись во все регистры сторожевого таймера заблокирована.

Бит76543210
НазначениеРезервLOCK_WDT
Начальное значение01

LOCK_WDT – блокирование записи в регистры:

  • 1 – запись во все регистры сторожевого таймера заблокирована;
  • 0 – запись во все регистры сторожевого таймера разрешена.

WDT_TCR​

Бит76543210
НазначениеРезервTEST_EN
Начальное значение0

TEST_EN – тестовый режим:

  • 1 – сторожевой таймер в тестовом режиме;
  • 0 – сторожевой таймер в рабочем режиме.

В тестовом режиме пользователь непосредственно управляет маскируемым прерыванием и сбросом от сторожевого таймера через регистр WDT_TOP.

WDT_TOP​

Бит76543210
НазначениеРезервTST_INTTST_RES
Начальное значение0

TST_INT – формирование сигнала прерывания от таймера в тестовом режиме:

  • 1 – прерывание активно;
  • 0 – прерывание не активно.

TST_RES – формирование сигнала сброса от таймера в тестовом режиме:

  • 1 – сброс активен;
  • 0 – сброс не активен.