Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_
.pdf9.2. Функционирование супервизора 291
VCC
AVCC
|
|
|
|
|
Сброс при |
|
|
|
AVCC |
|
D |
|
снижении |
|
|
|
|
|
напряжения |
|
|
||
|
|
G |
S |
|
|
||
|
|
питания (BOR) |
|
|
|||
|
|
|
|
|
|
||
SVSIN |
|
|
|
~ 50 мкс |
|
|
|
|
1111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0001 |
|
– |
|
|
|
SVS_POR |
|
|
|
|
|
|
||
|
0010 |
|
+ |
|
|
|
|
|
|
|
|
|
|
t Reset ~ 50 мкс |
|
|
1011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SVSOUT |
|
1100 |
1.2 В |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
G |
S |
|
|
|
|
|
Сброс |
|
|
|
|
|
|
|
битов |
|
|
|
|
|
|
|
SVSCTL |
|
|
|
|
|
|
Установка |
|
|
|
|
|
|
|
SVSFG |
|
|
VLD |
|
|
PORON |
SVSON |
SVSOP |
SVSFG |
Рис. 9.1. Блок схема супервизора напряжения питания.
VLDx > 0. Бит SVSON для включения супервизора не используется. Он только отображает его состояние и может применяться для определения, включён ли су первизор.
При LVDx = 1111 выбирается внешний канал SVSIN. Напряжение на входе SVSIN сравнивается с напряжением от внутреннего источника, составляющим приблизительно 1.2 В.
9.2.2. Функционирование компаратора супервизора
Состояние пониженного напряжения возникает при снижении AVCC ниже за данного порога или при снижении внешнего напряжения ниже уровня 1.25 В. Любое из этих событий вызывает установку бита SVSFG.
Бит PORON разрешает или запрещает сброс микроконтроллера супервизо ром. Если PORON = 1, то при установке бита SVSFG генерируется сигнал POR.
292 Глава 9. Супервизор напряжения питания
Если PORON = 0, то снижение контролируемого напряжения ниже порогового значения вызывает только установку бита SVSFG, сигнал POR при этом не гене рируется.
При установке бита SVSFG его значение фиксируется. Это даёт пользователю возможность узнать о снижении напряжения, произошедшем ранее. Бит SVSFG должен сбрасываться программно. Если на момент сброса бита SVSFG напряже ние всё ещё будет ниже порогового значения, то сразу же после сброса этого бита супервизор установит его повторно.
9.2.3. Изменение битов VLDx
При изменении содержимого битов VLDx с нулевого значения на любое дру
гое, отличное от нуля, автоматически формируется задержка td(SVSon), необходи мая для установления схемы супервизора. Длительность задержки td(SVSon) состав ляет около 50 мкс. В течение этого времени бит SVSON будет сброшен, а суперви
зор не будет реагировать на понижение напряжения. Проверяя в программе состояние данного бита, можно определить момент окончания задержки и начала мониторинга напряжения модулем SVS. Запись в регистр SVSCTL при
SVSON = 0 прервёт формирование задержки td(SVSon) и немедленно переключит модуль супервизора в активный режим. В этом случае схема супервизора может
не успеть установиться, что приведёт к её непредсказуемому поведению.
При изменении содержимого битов VLDx с одного ненулевого значения на другое для установления схемы супервизора требуется задержка tsettle. Длитель
ность задержки tsettle составляет не более ~12 мкс (см. документацию на конкрет ный микроконтроллер). Во время этой задержки блокирование установки флага
SVSFLG и/или генерации сигнала сброса устройства не производится. Переклю чение пороговых значений супервизора рекомендуется выполнять следующим образом:
; Первоначальное включение супервизора напряжения:
MOV.B #080h,&SVSCTL ; Порог 2.8 В, сигнал POR не генерируется
;...
;Изменяем порог срабатывания супервизора
MOV.B |
#000h,&SVSCTL |
; |
Временно выключаем SVS |
MOV.B |
#018h,&SVSCTL |
; |
Порог 1.9 В, сигнал POR генерируется |
; ... |
|
|
|
9.2.4. Рабочий диапазон супервизора
Каждое пороговое значение модуля SVS имеет некоторый гистерезис, позво ляющий уменьшить чувствительность схемы к небольшим изменениям напряже ния питания в тех случаях, когда величина AVCC близка к установленному порогу. Работа супервизора и его взаимодействие со схемой BOR показаны на Рис. 9.2.
9.3. Регистры супервизора 293
Программная установка VLD > 0
AVCC |
Vhys(SVS_IT–) |
|
V(SVS_IT–) |
|
|
|
|
|
V(SVSstart) |
Vhys(B_IT–) |
|
|
|
|
V(B_IT–) |
|
|
VCC(start) |
|
|
|
Область |
Область |
Выход |
BOR |
BOR |
схемы BOR |
|
|
1 |
|
|
0 |
|
|
SVSOUT |
td(BOR) |
td(BOR) |
1 |
|
Схема SVS активна |
|
|
0 |
|
td(SVSon) |
t |
SVS_POR |
d(SVSR) |
1 |
|
0 |
|
— неопределённое состояние
Рис. 9.2. Блок схема супервизора напряжения питания.
9.3.Регистры супервизора
Список регистров супервизора приведён в Табл. 9.1.
Таблица 9.1. Регистры супервизора
Регистр |
Обозначение |
Тип регистра |
Адрес |
Исходное состояние |
|
|
|
|
|
Регистр управления супервизора |
SVSCTL |
Чтение/запись |
056h |
Сбрасывается после BOR |
|
|
|
|
|
294 Глава 9. Супервизор напряжения питания
SVSCTL, регистр управления супервизора
7 |
6 |
|
5 |
4 |
|
3 |
2 |
|
1 |
0 |
|
|
VLDx |
|
|
|
PORON |
SVSON |
|
SVSOP |
SVSFG |
|
|
|
|
|
|
|
|
|
|
|
rw–0* |
rw–0* |
rw–0* |
rw–0* |
|
rw–0* |
r* |
|
r* |
rw–0* |
|
* Сбрасываются только при BOR, а не при POR или PUC. |
|
|
|
|
||||||
VLDx |
Биты |
Контролируемый уровень напряжения. Эти биты включают суперви |
||||||||
|
7…4 |
зор и определяют номинальное значение порогового напряжения. |
||||||||
|
|
Прочие параметры супервизора приведены в документации на конк |
||||||||
|
|
ретные модели. |
|
|
|
|
|
|
|
|
|
|
0000 |
Супервизор выключен |
|
|
|
|
|||
|
|
0001 |
1.9 В |
|
|
|
|
|
|
|
|
|
0010 |
2.1 В |
|
|
|
|
|
|
|
|
|
0011 |
2.2 В |
|
|
|
|
|
|
|
|
|
0100 |
2.3 В |
|
|
|
|
|
|
|
|
|
0101 |
2.4 В |
|
|
|
|
|
|
|
|
|
0110 |
2.5 В |
|
|
|
|
|
|
|
|
|
0111 |
2.65 В |
|
|
|
|
|
|
|
|
|
1000 |
2.8 В |
|
|
|
|
|
|
|
|
|
1001 |
2.9 В |
|
|
|
|
|
|
|
|
|
1010 |
3.05 В |
|
|
|
|
|
|
|
|
|
1011 |
3.2 В |
|
|
|
|
|
|
|
|
|
1100 |
3.35 В |
|
|
|
|
|
|
|
|
|
1101 |
3.5 В |
|
|
|
|
|
|
|
|
|
1110 |
3.7 В |
|
|
|
|
|
|
|
|
|
1111 |
Сравнивается напряжение на входе SVSIN с уровнем 1.25 В |
|||||||
PORON |
Бит 3 Разрешение POR. Этот бит разрешает генерирование сигнала сброса |
|||||||||
|
|
POR при установке флага SVSFG. |
|
|
|
|
||||
|
|
0 Бит SVSFG не влияет на сигнал POR |
|
|
||||||
|
|
1 Бит SVSFG вызывает генерацию POR |
|
|
||||||
SVSON |
Бит 2 Включение супервизора. Данный бит отражает состояние супервизо |
|||||||||
|
|
ра. Этот бит НЕ используется для включения супервизора. Модуль |
||||||||
|
|
SVS включается установкой значения VLDx > 0. |
|
|
||||||
|
|
0 |
Супервизор выключен |
|
|
|
|
|||
|
|
1 |
Супервизор включен |
|
|
|
|
|
||
SVSOP |
Бит 1 Выход супервизора. Этот бит отражает состояние выхода компарато |
|||||||||
|
|
ра модуля SVS. |
|
|
|
|
|
|
|
|
|
|
0 На выходе компаратора НИЗКИЙ уровень |
|
|
||||||
|
|
1 На выходе компаратора ВЫСОКИЙ уровень |
|
|||||||
SVSFG |
Бит 0 Флаг супервизора. Этот бит отражает наличие пониженного напря |
|||||||||
|
|
жения. Бит SVSFG остаётся установленным после выхода из данного |
||||||||
|
|
состояния. Сбрасывается программно. |
|
|
0Состояние пониженного напряжения отсутствует
1Состояние пониженного напряжения либо присутствует в дан ный момент, либо имело место раньше
10.1. Введение 295
ГЛАВА 10
СТОРОЖЕВОЙ ТАЙМЕР
Усовершенствованный сторожевой таймер (WDT+) представляет собой 16 битный таймер, который может использоваться в качестве сторожевого либо ин тервального таймера. В этой главе описывается функционирование модуля усо вершенствованного сторожевого таймера, реализованного во всех микроконт роллерах семейства MSP430x2xx.
10.1. Введение
Основная функция модуля WDT+ заключается в выполнении управляемого перезапуска системы при некорректном функционировании программы. При «зависании» программы на время, превышающее заданный интервал, модуль ге нерирует сигнал системного сброса. Если сторожевой таймер в приложении не требуется, то модуль может использоваться в качестве обычного интервального таймера, генерирующего прерывания с заданной периодичностью.
Модуль усовершенствованного сторожевого таймера WDT+ имеет следую щие особенности:
четыре временных интервала, выбираемые программно;
режим сторожевого таймера;
режим интервального таймера;
парольная защита доступа к регистру управления модуля;
управление функционированием вывода RST/NMI;
возможность выбора источника тактового сигнала;
возможность останова для уменьшения тока потребления;
защита от пропадания тактового сигнала.
Блок схема модуля WDT+ приведена на Рис. 10.1.
Примечание. Работа модуля WDT+ после подачи напряжения питания
После появления сигнала PUC модуль WDT+ автоматически запускается в режи ме сторожевого таймера с интервалом сброса, равным 32 768 тактам сигнала DCOCLK. Пользователь должен сконфигурировать или остановить сторожевой таймер до истечения этого интервала.
10.2. Функционирование сторожевого таймера 297
RST/NMI. Регистр WDTCTL — это защищённый паролем 16 битный регистр, доступный как для чтения, так и для записи. Любые обращения к данному регис тру должны производиться с использованием команд, оперирующих 2 байтными операндами, причём при операциях записи в старшем байте записываемого зна чения должно содержаться число 0A5h. Запись в регистр WDTCTL значения, старший байт которого не равен 0A5h, вызовет нарушение ключа защиты с после дующим формированием сигнала сброса PUC, независимо от режима работы мо дуля. При чтении регистра WDTCTL в старшем байте возвращается значение 069h. Частота тактового сигнала сторожевого таймера должна быть меньше или равна частоте системного тактового сигнала (MCLK).
10.2.1. Счётчик сторожевого таймера
Счётчик сторожевого таймера WDTCNT представляет собой 16 битный сум мирующий счётчик, который напрямую из программы не доступен. Управление счётчиком, в том числе задание временных интервалов, осуществляется при по мощи регистра управления WDTCTL.
Счётчик WDTCNT может тактироваться от сигналов ACLK или SMCLK. Ис точник тактового сигнала задаётся битом WDTSSEL.
10.2.2. Режим сторожевого таймера
После сброса по включению питания модуль WDT+ начинает работать в ре жиме сторожевого таймера с интервалом сброса, равным 32 768 тактам сигнала DCOCLK. Пользователь должен перенастроить, остановить или сбросить сторо жевой таймер до истечения этого интервала, в противном случае сигнал сброса PUC будет сгенерирован повторно. При работе модуля в режиме сторожевого таймера сигнал сброса PUC генерируется либо при записи в регистр WDTCTL с некорректным паролем, либо по истечении выбранного интервала времени. При появлении сигнала PUC модуль WDT+ сбрасывается в исходное состояние, а вы вод RST/NMI конфигурируется как вход аппаратного сброса.
10.2.3. Режим интервального таймера
Установка бита WDTTMSEL в 1 переводит модуль WDT+ в режим интерваль ного таймера. Этот режим может использоваться для периодической генерации прерываний. В режиме интервального таймера по истечении выбранного интер вала устанавливается флаг WDTIFG. Сигнал сброса PUC в данном режиме не ге нерируется, а состояние бита разрешения прерывания WDTIE регистра WDTIFG не изменяется.
Если биты WDTIE и GIE установлены, то при установке флага WDTIFG гене рируется запрос прерывания. Флаг прерывания WDTIFG сбрасывается автомати чески при вызове процедуры обработки этого прерывания или может быть сбро шен программно. Адрес вектора прерывания в режиме интервального таймера от личается от адреса вектора в режиме сторожевого таймера.
298 Глава 10. Сторожевой таймер
Примечание. Изменение состояния сторожевого таймера
Изменение интервала сторожевого таймера необходимо выполнять одновременно (в одной команде) с установкой бита WDTCNTCL, чтобы исключить несанкцио нированную генерацию сигнала PUC или прерывания.
Перед сменой источника тактового сигнала модуль WDT+ необходимо останав ливать, чтобы предотвратить возможную установку некорректного интервала.
10.2.4. Прерывания сторожевого таймера
Для управления прерываниями модуля WDT+ используются два бита регист ров специальных функций:
флаг прерывания WDTIFG (IFG1.0);
бит разрешения прерывания WDTIE (IE1.0).
При работе модуля WDT+ в режиме сторожевого таймера флаг WDTIFG яв ляется одним из источников вектора сброса. Этот флаг можно использовать в процедуре обработки сброса для определения причины сброса микроконтролле ра. Установленный флаг WDTIFG означает, что сброс был инициирован сторо жевым таймером по истечении заданного интервала времени или в результате на рушения ключа защиты. Если же флаг WDTIFG сброшен, то причина сброса бы ла иной.
При работе модуля WDT+ в режиме интервального таймера флаг WDTIFG устанавливается по истечении выбранного интервала времени и, если установле ны биты WDTIE и GIE, генерирует запрос прерывания. Вектор прерывания ин тервального таймера не совпадает с вектором сброса, используемого в режиме сторожевого таймера. В режиме интервального таймера флаг WDTIFG сбрасыва ется автоматически при обработке прерывания либо может быть сброшен про граммно.
10.2.5. Отказоустойчивое тактирование сторожевого таймера
Модуль WDT+ имеет функцию защиты от пропадания тактового сигнала, ко торая блокирует отключение источника тактового сигнала модуля при его ис пользовании в режиме сторожевого таймера. То есть выбор источника тактового сигнала модуля WDT+ влияет на возможность использования того или иного ре жима пониженного энергопотребления. Например, если сторожевой таймер так тируется сигналом ACLK, то режим LPM4 будет недоступен, поскольку модуль WDT+ не позволит отключить источник ACLK. Кроме того, в случае пропадания сигнала ACLK или SMCLK, используемого для тактирования модуля, стороже вой таймер автоматически переключится на сигнал MCLK. Если сигнал MCLK формируется кварцевым генератором, то в случае неисправности последнего (или при отсутствии резонатора) модуль WDT+ активирует DCO и задействует его в качестве источника сигнала MCLK.
10.3. Регистры сторожевого таймера 299
10.2.6.Функционирование в режимах пониженного энергопотребления
Микроконтроллеры MSP430 имеют несколько режимов пониженного энер гопотребления. В разных режимах пользователю доступны различные источники тактовых сигналов. Соответственно, конфигурация модуля WDT+ определяется требованиями конкретного приложения и режимом работы модуля синхрониза ции микроконтроллера. Например, если пользователь предполагает задейство вать режим LPM3, то модуль WDT+ не должен использоваться в режиме сторо жевого таймера с тактированием от сигнала SMCLK, поскольку модуль WDT+ не позволит выключить источник этого сигнала, что приведет к повышенному пот реблению в режиме LPM3. Если сторожевой таймер не используется, то с помо щью бита WDTHOLD можно остановить счётчик WDTCNT, уменьшая тем са мым потребление микроконтроллера.
10.2.7. Примеры кода
Любые операции записи в регистр WDTCTL должны производиться с исполь зованием команд, оперирующих 2 байтными операндами, при этом в старшем байте записываемого значения должно содержаться число 0A5h (WDTPW).
; Периодический сброс активного сторожевого таймера MOV #WDTPW+WDTCNTCL,&WDTCTL
;
; Изменение интервала сторожевого таймера MOV #WDTPW+WDTCNTL+WDTSSEL,&WDTCTL
;
; Останов сторожевого таймера MOV #WDTPW+WDTHOLD,&WDTCTL
;
; Переключение модуля WDT+ в режим интервального таймера с периодом clock/8192 MOV #WDTPW+WDTCNTCL+WDTTMSEL+WDTIS0,&WDTCTL
10.3. Регистры сторожевого таймера
Список регистров сторожевого таймера приведён в Табл. 10.1.
Таблица 10.1. Регистры сторожевого таймера
Регистр |
Обозначение |
Тип регистра |
Адрес |
Исходное состояние |
|
|
|
|
|
Регистр управления сторожевого |
WDTCTL |
Чтение/запись |
0120h |
06900h после PUC |
таймера |
|
|
|
|
|
|
|
|
|
Регистр разрешения прерываний 1 |
IE1 |
Чтение/запись |
0000h |
Сбрасывается после PUC |
|
|
|
|
|
Регистр флагов прерываний 1 |
IFG1 |
Чтение/запись |
0002h |
Сбрасывается после PUC* |
* Бит WDTIFG сбрасывается после POR.
300 Глава 10. Сторожевой таймер
WDTCTL, регистр управления модуля WDT+
15 |
|
14 |
13 |
12 |
|
11 |
10 |
9 |
8 |
|
|
|
|
|
|
Читается как 069h |
|
|
|
||
|
|
|
|
WDTPW, должен записываться как 05Ah |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
7 |
|
6 |
5 |
4 |
|
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
||||
WDTHOLD |
WDTNMIES |
WDTNMI |
WDTTMSEL |
WDTCNTCL |
WDTSSEL |
WDTISx |
||||
|
|
|
|
|
|
|
|
|
|
|
rw–0 |
|
rw–0 |
|
rw–0 |
rw–0 |
|
r0(w) |
rw–0 |
rw–0 |
rw–0 |
*Отсутствуют в микроконтроллерах MSP430x20xx. |
|
|
|
|
||||||
WDTPW |
Биты |
Ключ защиты WDT+. Всегда читается как 069h. При записи должен |
||||||||
|
|
15…8 |
быть равен 05Ah, в противном случае будет генерироваться сигнал |
|||||||
|
|
|
PUC. |
|
|
|
|
|
|
|
WDTHOLD |
Бит 7 |
Останов модуля WDT+. Этот бит используется для останова модуля |
||||||||
|
|
|
WDT+. Установка бита WDTHOLD = 1 при неиспользуемом модуле |
|||||||
|
|
|
позволяет уменьшить ток потребления микроконтроллера. |
|
||||||
|
|
|
0 Модуль WDT+ не остановлен |
|
|
|
1Модуль WDT+ остановлен
WDTNMIES Бит 6 Выбор фронта NMI. Этот бит используется для выбора активного фронта немаскируемого прерывания при WDTNMI = 1. Изменение данного бита может вызвать генерацию немаскируемого прерыва ния. Чтобы избежать этого, бит WDTNMIES следует изменять при WDTIE = 1.
0Немаскируемое прерывание генерируется по нарастающему фронту
1Немаскируемое прерывание генерируется по спадающему фронту
WDTNMI Бит 5 Выбор NMI. С помощью этого бита задаётся режим работы вывода RST/NMI микроконтроллера.
0Вход аппаратного сброса
1Вход немаскируемого прерывания
WDTTMSEL Бит 4 Выбор режима модуля WDT+.
0Режим сторожевого таймера
1Режим интервального таймера
WDTCNTCL Бит 3 Сброс счётчика модуля WDT+. Установка бита WDTCNTCL = 1 вы зывает загрузку в счётчик значения 0000h. Бит WDTCNTCL сбрасы вается автоматически.
0Нет действия
1WDTCNT = 0000h
WDTSSEL Бит 2 Выбор тактового сигнала модуля WDT+. 0 SMCLK
1ACLK
WDTISx Биты Выбор интервала модуля WDT+. Эти биты определяют временной 1…0 интервал, по истечении которого устанавливается флаг WDTIFG
и/или генерируется сигнал PUC.
00 Частота тактового сигнала /32768
01 Частота тактового сигнала /8192
10Частота тактового сигнала /512
11Частота тактового сигнала /64