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

 


По базе:  

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

реклама

 




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




Использование сторожевого таймера

Сторожевой таймер - программируемый пользователем счетчик синхроимпульсов, который может служить времязадающим генератором, таймером событий или супервизором системы. Как видно из приведенного ниже рисунка, на таймер поступают системные синхроимпульсы, прошедшие предварительное деление. Если отключены сторожевое прерывание и сторожевой сброс (EWDI = 0 и EWT = 0), то сторожевой таймер также отключается. Всякий раз, когда сторожевой таймер отключается, сторожевой интервальный таймер (биты WD1:0) и счетчик сброса, имеющий размерность 512, будут сброшены, если разрешены функции прерывания или сброса. Когда сторожевой таймер инициализируется, то перед его запуском будет задержка на 1 - 3 цикла. Коэффициент деления делителя выбирается с учетом требуемого периода переполнения сторожевого таймера. При переполнении сторожевого таймера устанавливается флаг прерывания и, е сли оно разрешено, происходит его обработка. Функция сторожевого сброса реализована в дополнение к функции сторожевого прерывания. Сброс и прерывание - полностью дискретные функции, которые могут быть признаны или проигнорированы вместе или отдельно.

Таблица 4. Биты управляющего регистра сторожевого таймера

Имя бита Описание Расположение регистра Расположение бита
EWDI Разрешение прерывания при переполнении сторожевого таймера WDCN (Fh, 8h) WDCN.6
WD1, WD0 Биты управления сторожевым интервалом WDCN.5,4
WDIF Флаг прерывания по переполнению сторожевого таймера WDCN.3
WTRF Флаг сброса при переполнении сторожевого таймера WDCN.2
EWT Разрешение сброса при переполнении сторожевого таймера WDCN.1
RWT Сброс сторожевого таймера   WDCN.0

Структурная схема сторожевого таймера
Рисунок 11. Структурная схема сторожевого таймера

Функция сброса по переполнению сторожевого таймера работает следующим образом. После инициализации правильного интервала таймаута (будет обсужден ниже), программное обеспечение может разрешить, если это необходимо, функцию сброса путем установки бита разрешения сброса при переполнении сторожевого таймера (EWT = WDCN.1). Если прерывание по переполнению сторожевого таймера уже было активизировано, то установка бита EWT приведет к сбросу/повторному запуску сторожевого таймера. В любое время программно можно установить бит сброса по переполнению сторожевого таймера (RWT = WDCN.0). Если сбросить сторожевой таймер (установить значение бита RWT, равное единице) до истечения периода таймаута, то таймер запустится. После программной установки бит RWT аппаратно обнуляется.

Если переполнение таймера произойдет при очищенном бите RWT, то, если разрешено, будет сформировано прерывание по переполнению сторожевого таймера. Если не произвести ни каких действий в течении 512 системных тактовых циклов и бит EWT=1, то произойдет аппаратный сброс микроконтроллера. Если сброс произойдет, то флаг указания причины сброса (WTRF = WDCN.2) будет автоматически установлен в единицу, однако сброс этого бита должен быть осуществлен программно.

Если по переполнению таймера сброс производить не надо, то можно просто формировать прерывание по переполнению таймера. При этом сторожевой таймер используется в качестве обыкновенного таймера с очень большим временем таймаута. Разрешение прерывания осуществляется путем установки бита (EWDI = WDCN.6). При переполнении сторожевой таймер установит флаг прерывания WDIF (WDCN.3), и, если глобальное разрешение (IGE = IC.0) и разрешение прерывания по переполнению таймера (IMS = IMR.7) осуществлены, то произойдет прерывание. Обратите внимание, что флаг WDIF устанавливается на 512 системных циклов раньше, чем потенциально возможный флаг сброса по переполнению сторожевого таймера. Установленный таким образом флаг прерывания по переполнению таймера должен быть сброшен программно.

Использование прерывания по переполнению сторожевого таймера при разработке программного обеспечения может позволить пользователю выбирать идеальные точки сброса при переполнении таймера. Сначала код прикладной программы разрабатывается при отключенном прерывании и сбросе по переполнению сторожевого таймера. После окончания разработки программы сторожевые функции прерывания разрешаются, что позволяет идентифицировать точки возникновения переполнения таймера. На этом этапе можно определить точки, в которых переполнение не должно возникать, вызывая нежелательные сбросы микроконтроллера. После этого прерывание по переполнению сторожевого таймера может быть отключено. Правильное использование прерывания и сброса по переполнению сторожевого таймера позволит избежать системе ошибочных действий.

При использовании сторожевого таймера в качестве системного монитора функция сброса при переполнении сторожевого таймера должна быть активна. Если бы использовалась функция прерывания при переполнении сторожевого таймера, то цель сторожевого таймера была бы достигнута. Например, предположите, что система выполняет ошибочный код до возникновения прерывания по переполнению сторожевого таймера. Прерывание временно перевело бы систему по вектору прерывания. Перезапуск сторожевого таймера и выход из подпрограммы обработки прерывания по команде RETI или RET вернул бы программу в ошибочную ветвь.

Использование функции сброса при переполнении сторожевого таймера приведет к перезапуску микроконтроллера, вследствие чего он перейдет в известное правильное состояние.

Выбор таймаута сторожевого таймера осуществляется путем установки/сброса битов WD1 (WDCN.5) и WD0 (WDCN.4). Сторожевой таймер имеет четыре времени таймаута, зависящие от рабочей частоты микроконтроллера. В таблице 5 приведена зависимость времени таймаута от значения установленных управляющих битов. Сброс по переполнению сторожевого таймера происходит через 512 системных циклов. Формирует сторожевой таймер сброс в течении последних четырех системных циклов.

Таблица 5. Выбор периода сторожевого таймера

Режим синхронизации системы Выбор режима синхронизации системы осуществляется путем установки битов PMME CD1, CD0 Таймаут сторожевого таймера (в количествах периодов задающего генератора)
WD1:0 = 00b WD1:0 = 01b WD1:0 = 10b WD1:0 = 11b
Деление на 1 (значение по умолчанию) 000 212 215 218 221
Деление на 2 001 213 216 219 222
Деление на 4 010 214 217 220 223
Деление на 8 011 215 218 221 224
Режим управления питанием (Деление на 256) 1xx 220 223 226 229

Таблица 6. Карта системных регистров

Замечание: Регистры, имена которых написаны наклонным шрифтом, доступны только для чтения. Регистраторы, имена которых написаны жирным шрифтом, являются 16-разрядными (кроме А[n], Acc, А[АР] для MAXQ10). Регистры с индексами 8h и могут быть адресованы в качестве получателей только при помощи префиксного регистра. Точно так же регистры с индексами 10h и выше могут быть адресованы в качество источников только при помощи префиксного регистра. Все неопределенные или неиспользованные индексы (обозначены символом тире: '-') или используются для создания операционного кода или зарезервированы для будущих разработок и не должны быть адресованы явно. Результат обращения к этим регистрам будет детерминированным, но никакого определенного значения не несет.

Таблица 7. Карта битов системных регистров

Таблица 8. Значения битов системных регистров после сброса

Замечание: биты, помеченные символом "s" остаются неизменными.



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





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