Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





 

 

«Watchdog Timer»–независимо работающий таймер, который запускает сброс если периодически не очищается специфической последовательностью инструкций. Он перезапускает программу при аварийном зацикливании.

Особенности сторожевого таймера:

– сбрасывает C2833x, если ЦП сбоит;

– сторожевой таймер работает независимо от ЦП4;

– если счетчик переполнился, происходит сброс или прерывание (выбирается пользователем);

– ЦП должен записать правильную ключевую последовательность для сброса счетчика до его переполнения;

– сторожевой таймер должен быть обслужен (или отключен) в течении ~4,37мс после сброса (30 МГц внешняя тактовая частота);

– за этот период выполняется 645000 инструкций, если CPU работает на частоте 150MHz.

Блок–схема сторожевого таймера приведена на рис.2.19.

Сторожевой таймер всегда активен, когда на DSС подано питание. Если периодически не заботиться о сторожевом таймере, он запустит СБРОС. Выключить таймер можно посредством установки бита 6 регистра WDCR в 1. Конечно это не мудрое решение, поскольку сторожевой таймер является гарантией безопасности и реальный проект должен всегда включать как можно больше доступных элементов безопасности.

Предделитель–счетчик может использоваться для увеличения периода переполнения сторожевого таймера. Логические контрольные биты (WDCHK) является другой областью безопасности. Все обращения записи к регистру WDCR должны включать битовую комбинацию «101», для этого используется 3 битовая область, в противном случае доступ запрещается и СБРОС запускается немедленно.

Разряд Признака (WDFLAG) может использоваться, чтобы различать нормальный сброс по включению питания (WDFLAG = 0) и сброс по переполнению сторожевого таймера (WDFLAG = 1).

Примечание: чтобы очистить этот флаг программным обеспечением, мы должны написать «1» в этот бит.

Регистр управления сторожевым таймером показан на рис.2.20.

Если по некоторой причине внешние синхроимпульсы перестают поступать, сторожевой таймер перестает считать. В приложении мы можем поймать этот сбой периодически читая регистр счетчика сторожевого таймера. В случае потери синхроимпульсов, содержимое этого регистра больше не будет увеличиваться. F2833x будет продолжать работу, при этом выходом PLL будут синхроимпульсы частотой между 1 и 4 MHz в так называемом «limp»–режиме.

Чтобы очистить регистр сторожевого таймера перед переполнением необходимо записать «действительную ключевую» последовательность в регистр WDKEY.

Допустимые значения к записи:

– 55h – сброс счетчика разрешен при последующей записи AAh;

– AAh – счетчик сброшен в ноль если сброс разрешен.

 

 

Рисунок 2.19 – Сторожевой таймер

Рисунок 2.20 – Регистр управления сторожевым таймером

Запись любого другого значения эффекта не имеет.

Сторожевой таймер должен обслуживаться не только в прерывании. Если сбой в основном коде, а прерывания работают, то сторожевой таймер не обнаружит сбой. Необходимо размещать ввод 55h WDKEY в основном коде, и AAh WDKEY в прерывании; это позволит определить сбои и в прерываниях и в основном коде.

Различные варианты реакции сторожевого таймера на запись в WDKEY приведены в таблице 2.4.

 

Таблица 2.4 – Результаты записи в регистр WDKEY

 

 

Шаги   Значение в WDKEY   Результат  
  AAh AAh 55h 55h 55h AAh AAh 55h AAh 55h 23h AAh 55h AAh Нет действия Нет действия Разрешение сброса WD при следующей записи AAh Разрешение сброса WD при следующей записи AAh Разрешение сброса WD при следующей записи AAh Сброс счетчика WD Нет действия Разрешение сброса WD при следующей записи AAh Сброс счетчика WD Разрешение сброса WD при следующей записи AAh Нет действия; WD не сбросится при записи AAh Нет действия. Предыдущее значение неверно Разрешение сброса WD при следующей записи AAh Сброс счетчика WD

 

Регистр SCSR (рис.2.21) определяет вызывает ли сторожевой таймер СБРОС (WDENINT = 0) или вызывает прерывание (WDENINT = 1). Состояние по умолчанию после сброса – запустить СБРОС.

WDOVERRIDE – бит «только очистка», как только мы закрыли этот ключ записав 1 в бит, мы не можем открыть этот ключ снова (см. рис. 2.20). В этом случае WD–disable – бит неэффективен, так что нет пути, чтобы вывести из строя сторожевой таймер.

Бит 2 (WDINTS) является битом только чтения, который показывает статус прерывания сторожевого таймера.

 

 

Рисунок 2.21 – регистр SCSR

 

Date: 2015-06-06; view: 565; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию