Сторожевой таймер
Сторожевой таймер предназначен для принудительной перезагрузки системы в случае ее зависания. В основе таймера лежим счетчик разрядностью 32 бита со счетом «вниз». Модуль формирует регулярное прерывание INT_WDT в зависимости от запрограммированного значения. Каждый такт синхросигнала значение счетчика уменьшается на единицу. Когда значение счетчика достигает 0, формируется сигнал прерывания. Затем счетчик перезагружается и заново начинает отсчет к нулю. Если к моменту, когда счетчик достиг заново значения 0, прерывание не очищено, то в систему формируется сигнал сброса WDT_RST. Таким образом, сторожевой таймер предоставляет возможность восстановления системы после сбоя программного обеспечения. При необходимости модуль может быть выключен.
Регистры сторожевого таймера
№ | Аббревиатура | Доступ | Описание |
---|---|---|---|
2200h | WDT_LOAD0 | RW | Период счета сторожевого таймера 0 |
2201h | WDT_LOAD1 | RW | Период счета сторожевого таймера 1 |
2202h | WDT_LOAD2 | RW | Период счета сторожевого таймера 2 |
2203h | WDT_LOAD3 | RW | Период счета сторожевого таймера 3 |
2204h | WDT_VAL0 | R | Текущее значение сторожевого таймера 0 |
2205h | WDT_VAL1 | R | Текущее значение сторожевого таймера 1 |
2206h | WDT_VAL2 | R | Текущее значение сторожевого таймера 2 |
2207h | WDT_VAL3 | R | Текущее значение сторожевого таймера 3 |
2208h | WDT_CTRL | RW | Регистр управления |
220Сh | WDT_CLR | W | Регистр сброса прерывания |
2210h | WDT_INTRAW | R | Регистр исходного прерывания |
2214h | WDT_INT | R | Регистр маскируемого прерывания |
2218h | WDT_LOCK | RW | Регистр блокировки доступа к сторожевому таймеру |
221Сh | WDT_TCR | RW | Регистр перехода в тестовый режим |
2220h | WDT_TOP | W | Регистр управления в тестовом режиме |
WDT_LOAD0
Регистр содержит значение, с которого счетчик начнет уменьшаться. При перезаписи данного регистра таймер немедленно стартует с записанного значения. Минимальное допустимое значение для WDT_LOAD равно 1. 32-х разрядное значение поместится в регистр сторожевого таймера в момент записи в данный регистр.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | VALUE | |||||||
Начальное значение | 0 |
VALUE – период счета сторожевого таймера, младшая часть.
WDT_LOAD1
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | VALUE | |||||||
Начальное значение | 0 |
VALUE – период счета сторожевого таймера, биты <15:8>.
WDT_LOAD2
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | VALUE | |||||||
Начальное значение | 0 |
VALUE – период счета сторожевого таймера, биты <23:160>.
WDT_LOAD3
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | VALUE | |||||||
Начальное значение | 0 |
VALUE – период счета сторожевого таймера, старшая часть.
WDT_VAL0
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | CURRENT_VALUE | |||||||
Начальное значение | 0 |
CURRENT_VALUE – текущее значение таймера, младшая часть.
WDT_VAL1
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | CURRENT_VALUE | |||||||
Начальное значение | 0 |
CURRENT_VALUE – текущее значение таймера, биты <15:8>.
WDT_VAL2
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | CURRENT_VALUE | |||||||
Начальное значение | 0 |
CURRENT_VALUE – текущее значение таймера, биты <23:16>.
WDT_VAL3
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | CURRENT_VALUE | |||||||
Начальное значение | 0 |
CURRENT_VALUE – текущее значение таймера, старшая часть.
WDT_CTRL
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | RST_EN | INT_EN | |||||
Начальное значение | 0 |
RST_EN – разрешение на формирование сигнала сброса по завершению счета таймера:
- 1 – сброс разрешен;
- 0 – сброс запрещен.
INT_EN – разрешение на формирование прерывания по окончанию счета таймера:
- 1 – прерывание разрешено;
- 0 – прерывание запрещено.
Сторожевой таймер начинает счет, если установлен бит INT_EN. Сторожевой таймер перестает считать, если бит INT_EN сброшен в ноль. После разрешения прерывания, если пользователь до этого его запрещал, счетчик автоматически перезагрузится со значения из регистра WDT_LOAD.
WDT_CLR
Запись любого значения в данный регистр очищает прерывание сторожевого таймера и перезагружает счетчик значением из регистра WDT_LOAD.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | CLEAR | |||||||
Начальное значение | 0 |
WDT_INTRAW
Данный регистр указывает на необработанное прерывание от счетчика. На основании данного сигнала формируется маскируемое прерывание.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | RAW_WDT | ||||||
Начальное значение | 0 |
RAW_WDT – исходное прерывание таймера:
- 1 – прерывание произошло;
- 0 – прерывание отсутствует.
WDT_INT
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | INT_WDT | ||||||
Начальное значение | 0 |
INT_WDT – маскируемое прерывание таймера:
- 1 – прерывание произошло;
- 0 – прерывание отсутствует.
Данное прерывание формируется на основании битов RAW_WDT и INT_EN и передается в систему.
WDT_LOCK
Данный регистр блокирует доступ на запись во все остальные регистры сторожевого таймера. Запись значения 55h обеспечивает доступ на запись ко всем регистрам. Запись любого другого значения блокирует доступ. По умолчанию запись во все регистры сторожевого таймера заблокирована.
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | LOCK_WDT | ||||||
Начальное значение | 0 | 1 |
LOCK_WDT – блокирование записи в регистры:
- 1 – запись во все регистры сторожевого таймера заблокирована;
- 0 – запись во все регистры сторожевого таймера разрешена.
WDT_TCR
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | TEST_EN | ||||||
Начальное значение | 0 |
TEST_EN – тестовый режим:
- 1 – сторо жевой таймер в тестовом режиме;
- 0 – сторожевой таймер в рабочем режиме.
В тестовом режиме пользователь непосредственно управляет маскируемым прерыванием и сбросом от сторожевого таймера через регистр WDT_TOP.
WDT_TOP
Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Назначение | Резерв | TST_INT | TST_RES | |||||
Начальное значение | 0 |
TST_INT – формирование сигнала прерывания от таймера в тестовом режиме:
- 1 – прерывание активно;
- 0 – прерывание не активно.
TST_RES – формирование сигнала сброса от таймера в тестовом режиме:
- 1 – сброс активен;
- 0 – сброс не активен.