Скачиваний:
17
Добавлен:
01.05.2014
Размер:
165.38 Кб
Скачать

Описание работы Сторожевого таймера.

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

Сторожевой таймер имеет осциллятор с частотой работы 400 kHz. При работе Сторожевой таймер может использовать частоту осциллятора или частоту PCLK (см. схему 1), выбор осуществляется путем конфигурирования бита WDCLK в контрольном регистре Сторожевого таймера – WDCON.

Схема 1 - Делитель частоты.

Для управления Сторожевым таймером используются следующие регистры:

  • Watchdog Control Register – WDCON,

  • Watchdog Load Register – WDL

  • Watchdog Feed Registers: WFEED1 и WFEED2.

В конфигурационном байте UCFG1 биты Watchdog Timer Enable – WDTE и Watchdog Safty Enable – WDSE используются следующим образом:

Схема 2 отображает Сторожевой таймер, работающий в основном режиме. Он содержит программируемый 13-ти разрядный делитель частоты и 8-ми разрядный понижающий счетчик. Счетчик считает (декрементирует) по сигналу, исходящему от делителя частоты. Делитель частоты использует частоту осциллятора или частоту PCLK, выбор происходит в зависимости от бита WDCLK в регистре WDCON.

Если произошел сброс, то внутренний сброс активен в течении одного частотного цикла Сторожевого таймера (PCLK или частоты осциллятора). Если CCLK все еще запущен, то выполнение начнется сразу же после цикла сброса. Если процессор был выключен, то СТ запустит осциллятор и выполнение кода будет продолжено.

Схема 2.

Контрольный регистр Сторожевого таймера и 8-ми разрядный счетчик не загружаются пользователем напрямую. Пользователь загружает регистры WDCON и WDL. В конце цикла значения из WDCON и WDL записываются в Контрольный регистр и счетчик.

Инструкции для WFEED1 должны писаться в A5H, а для WFEED2 – в 5АН. Неправильное заполнение регистров приведет к немедленному сбросу.

Пример:

CLR EA ; запрещаем прерывание

MOV WFEED1,#0A5h ; загрузка Feed1

MOV WFEED2,#05Ah ; загрузка Feed2

SETB EA ; разрешаем прерывания

В режиме сторожевого таймера (WDTE=1) запись в регистр WDCON должна быт произведена НЕМЕДЛЕННО после цикла работы СТ, в противном случае будет сгенерирован сигнал Reset.

Пример:

MOV ACC,WDCON ; получаем WDCON

SETB ACC.2 ; устанавливаем WD_RUN=1

MOV WDL,#0FFh ; загружаем новое значение в 8-им разрядный счетчик

CLR EA ; запрещаем прерывания

MOV WDCON,ACC ; записываем обратно в WDCON

MOV WFEED1,#0A5h ; записываем в Feed1

MOV WFEED2,#05Ah ; записываем в Feed2

SETB EA ; разрешаем прерывания

В режиме счетчика (WDTE=0) значения из WDCON записываются в Контрольный регистр каждый цикл.

Состав Контрольного регистра:

Количество тактов СТ перед окончанием высчитывается по следующей формуле:

где:

- PRE – значение делителя частоты, которое может быть установлено от 0 до 7;

- WDL – значение загрузочного регистра, которое может быть от 0 до 255;

Минимальное количество тактов – 33, максимальное – 1 048 832.

Таблица кодировок битов PRE2 – PRE0:

Схема 3 показывает работу СТ в режиме простого таймера. В этом режиме все изменения в регистре WDCON переносятся в Теневой регистр после каждого такта работы таймера. Исчерпывание СТ установит бит WDTOF. Если бит IEN0.6 установлен в 1, то исчерпывание таймера приведет к генерации прерывания.

Схема 3.

Неверное заполнение регистров в этом режиме игнорируется.

Соседние файлы в папке Материалы по микропроцессорам