СТОРОЖЕВОЙ ТАЙМЕР (WDT)
Сторожевой таймер WDT микроконтроллеров семейства LPC2000 обладает следующими основными особенностями:
• осуществляет внутренний сброс микроконтроллера, если не производится периодической перезагрузки WDT;
• имеет режим отладчика;
• работа WDT разрешается пользовательской программой, но для ее запрета требуется аппаратный сброс, или сброс/прерывание от WDT;
• позволяет производить некорректные/неполные варианты сброса/прерывания, если они разрешены;
• имеет флаг, выставляемый при сбросе от WDT;
• представляет собой программируемый 32-битный таймер с внутренним предделителем;
• период времени тайм-аута может быть задан от (t^ х 256 х 4) до
в единицах (множителях) fpclk х 4.
Цель работы сторожевого таймера состоит в том, чтобы сбросить микроконтроллер на некоторое разумное время (интервал тайм-аута сторожевого таймера), например, если микроконтроллер перешел в ошибочное, непредусмотренное алгоритмом состояние выполнения пользовательской программы. Когда сторожевой таймер разрешен, он генерирует системный сброс, если пользовательская программа, в течение заданного промежутка времени (тайм-аута), не осуществляет «подачу» (перезагрузку) сторожевого таймера.
Далее в этой главе описаны особенности взаимодействия сторожевого таймера и других периферийных устройств микроконтроллера, а также процедуры сброса и начальной загрузки.
19.1. Описание WDT
Сторожевой таймер состоит из предделителя с фиксированным коэффициентом деления 4 и 32-битного счётчика. Тактовые импульсы поступают на сторожевой таймер через предделитель. Счетчик сторожевого таймера считает на убывание. Минимальное значение, с которого может начаться счет на убывание, равно OxFF. Задание значения, меньшего OxFF, приводит к загрузке в счетчик значения OxFF. Таким образом, минимальная длительность сторожевого интервала (тайм-аута) составляет (/^^ х 256 х 4), максимальная — (/pc)k х 232 х 4), а дискретность задания тайм-аута составляет (tpak х 4).
Сторожевой таймер должен использоваться в приложении в соответствии со следующим алгоритмом:
• установить значение константы перезагрузки сторожевого таймера в регистре WDTC;
• задать установки режима сторожевого таймера в регистре WDMOD;
• запустить сторожевой таймер, путем записи числа ОхАА, а сразу вслед за ним — числа 0x55 в регистр WDFEED, т. е. произвести «подачу» сторожевого таймера;
• для того, чтобы предотвратить сброс/прерывание от сторожевого таймера, «подача» сторожевого таймера должна быть вновь произведена прежде, чем наступит антипереполнение" его счетчика.
Когда происходит антипереполнение счетчика сторожевого таймера, в программный счетчик микроконтроллера автоматически записывается значение 0x00000000, как и в случае внешнего сброса.
Флаг тайм-аута сторожевого таймера (WDTOF) может быть опрошен программой, чтобы определить, не был ли вызван сброс сторожевым таймером. Флаг WDTOF сбрасывается пользовательской программой.
| НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |