- •Содержание
- •1.6 Регистровый файл……………………….………………………...……13
- •Введение
- •1 Микроконтроллеры msp430
- •1.1 Архитектура msp430
- •1.2 Семейство микроконтроллеров msp430f5хх
- •1.3 Адресное пространство
- •1.4 Системный сброс
- •1.5 Прерывания
- •1.6 Регистровый файл
- •1.7 Режимы работы
- •1.8 Цифровые входы/выходы
- •1.9 Функционирование цифровых портов входов/выходов
- •1.10 Сторожевой таймер
- •1.11 Регистры сторожевого таймера
- •1.12 Таймер а
- •1.13 Режим прямого счёта
- •1.14 Модуль вывода таймера в режиме прямого счёта
- •1.15 Режим непрерывного счёта
- •1.16 Режим реверсивного счёта
- •1.17 Модуль вывода таймера в режиме непрерывного счёта
- •1.18 Модуль вывода таймера в режиме реверсивного счёта
- •1.19 Прерывания Таймера а
- •1.20 Регистры Таймера а
- •1.21 Лабораторный практикум
- •1.21.1 Лабораторная работа 1
- •1.21.2 Лабораторная работа 2
- •1.21.3 Лабораторная работа 3
- •1.21.4 Лабораторная работа 4
- •1.21.5 Лабораторная работа 5
- •2 Сигнальные контроллеры
- •2.1 Типовые алгоритмы dsp
- •2.2 Цифровой сигнальный контроллер tms320f2833x
- •2.2.1 Центральный Процессор (цп)
- •2.2.2 Шинная система
- •2.2.3 Структура памяти контроллера
- •2.2.4 Конвейер команд
- •2.2.5 Прямой доступ в память
- •2.2.6 Сброс – загрузка
- •2.2.7 Режимы работы f2833x
- •2.2.8 Модуль защиты кода
- •2.2.9 Подсистема цифрового ввода – вывода
- •2.2.10 Входной фильтр
- •2.2.11 Модуль тактового генератора
- •2.2.12 Сторожевой таймер
- •2.2.13 Подсистема прерываний f2833x
- •Регистр флагов прерываний (ifr)
- •Регистр разрешения прерываний (ier)
- •2.2.14 Таймеры cpu f2833x
- •2.2.15 Модули ePwm (шим)
- •2.3 Лабораторный практикум
- •2.3.1 Лабораторная работа 2.1
- •2.3.2 Лабораторная работа 2.2
- •2.3.3 Лабораторная работа 2.3
- •2.3.4 Лабораторная работа 2.4
- •2.3.5 Лабораторная работа 2.5
- •2.3.6 Лабораторная работа 2.6
- •2.3.7 Лабораторная работа 2.7
- •2.3.8 Лабораторная работа 2.8
- •2.3.9 Лабораторная работа 2.9
- •2.3.10 Лабораторная работа 2.10
- •2.3.11 Лабораторная работа 2.11
- •2.3.12 Лабораторная работа 2.12
- •2.3.13 Лабораторная работа 2.13
- •10/2012. Формат 60 х 84/16. Ум. Друк. Арк. .
- •84313, М. Краматорськ, вул. Шкадінова, 72.
2.2.12 Сторожевой таймер
«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
|
Результат
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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
