
- •Микроконтроллеры msp430 Введение
- •1. Центральный процессор msp430
- •1.1. Адресное пространство микроконтроллеров msp430f1xx
- •1.2. Регистровый файл
- •1.3. Байтовая и словная формы инструкций.
- •1.4. Режимы адресации
- •1.4.1 Регистровая адресация
- •1.4.2. Индексная адресация
- •1.4.3 Символьная адресация
- •1.4.4 Абсолютная адресация
- •1.4.5. Косвенная адресация
- •1.4.6. Косвенная адресация с автоинкрементом
- •1.4.7 Непосредственная адресация
- •2. Система команд msp микроконтроллеров
- •2.1. Двухадресные команды
- •2.2 Одноадресные команды
- •2.3 Команды переходов
- •2.4. Эмулируемые команды
- •3. Периферийные устройства микроконтроллеров msp430f1xx
- •3.1 Внешние выводы микроконтроллера msp430f149
- •3.2 Система прерываний
- •3.3 Система тактирования
- •3.4 Сторожевой таймер
- •3.5 Аппаратный умножитель
- •3.6 Порты ввода/вывода
- •3.7 Таймер a3
- •3.8 Таймер b7
- •3.9 Интерфейс usart
- •3.9.1 Режим uart
- •3.9.1.1 Передача данных
- •3.9.1.2 Передача данных
- •3.9.1.3 Поддержка коммуникации в многопроцессорных системах
- •3.9.1.4 Обнаружение стартового бита при приеме
- •3.9.1.5 Скорость передачи
- •3.9.1.6 Регистры usart
- •3.9.2 Режим spi
- •3.9.3 Режим i2c
- •3.10 Аналоговый компаратор
- •3.11 Аналого-цифровой преобразователь adc12
- •3.12 Flash контроллер
- •3.12.1 Стирание Flash памяти
- •3.12.2 Запись Flash памяти
- •3.12.3 Регистры Flash контроллера
3.4 Сторожевой таймер
Сторожевой таймер (WatchDog Timer) предназначен для сброса CPU, в том случае если программа, в результате каких-либо сбоев, начинает исполнять несанкционированные команды. Сторожевой таймер, как правило, организуется в виде свободно бегущего таймера-счетчика, который при его переполнении вызывает аппаратный сброс всего микроконтроллера. Для исключения непредусмотренного сброса, программа должна сама периодически сбрасывать этот таймер.
В MSP микроконтроллерах 16-ти битный сторожевой таймер может работать собственно в режиме WatchDog или в режиме интервального таймера. В режиме интервального таймера аппаратный сброс при переполнении не производится. Вместо этого генерируется прерывание с адресом вектора FFF4h.
Период переполнения зависит, во-первых, от частоты тактирования таймера, и, во-вторых, от коэффициента делителя входной частоты.
Регистры управления модуля сторожевого таймера приведены в таблице 8.
Таблица 8
-
Наименование
Назначение
Адрес
Началь. Значение
WDTCTL
Регистр управления
120h
6900h
IE1
Регистр разрешения прерывания
0
0
IFG1
Регистр флагов прерывания
2
0
Регистр управления WDTCTL содержит также биты управления режимом внешнего вывода RESET/NMI. К этому регистру необходимо обращаться только с помощью словных форм инструкций. Регистры IE1 и IFG1, содержащие биты разрешения и флаги прерываний соответственно были рассмотрены в разделе 3.2
WDTCTL (WatchDog Timer Control) – регистр управления сторожевым таймером.
15 8
-
WDTPW
7 6 5 4 3 2 1 0
-
WDTHOLD
WDTNMIES
WDTNMI
WDTMSEL
WDTCNTCL
WDTSSEL
WDTIS 1,0
Биты 15 – 8 – WDTPW ( WDT Password) – пароль для обращения к регистру WDTCTL. При чтении это поле всегда содержит значение 69h. При записи в это поле необходимо записывать значение 5Ah, в противном случае будет генерироваться системный сброс.
Бит 7 – WDTHOLD – остановка сторожевого таймера.
0 – таймер активен;
1 – таймер остановлен.
Бит 6 – WDTNMIES (NMI Edge Select) – выбор активного фронта вывода NMI.
0 – активен растущий фронт;
1 – активен падающий фронт.
Бит 5 – WDTNMI – определяет функцию вывода RESET/NMI
0 – вывод функционирует как RESET;
1 – вывод функционирует как NMI.
Бит 4 – WDTMSEL (WDT Mode Select) – выбор режима сторожевого таймера
0 – сторожевой таймер;
1 – интервальный таймер.
Бит 3 – WDTCNTCL (WDT Counter Clear) – сброс сторожевого таймера. Запись логической 1 в этот бит приводит к сбросу сторожевого таймера. В том случае, если сторожевой таймер разрешен (WDTHOLD=0) программа должна периодически устанавливать этот бит во избежание системного сброса. Этот бит сбрасывается в 0 автоматически, поэтому при чтении содержимое этого бита всегда 0.
Бит 2 – WDTSSEL (WDT Source Select) – выбор источника тактирования.
0 – тактирование осуществляется частотой SMCLK;
1 – тактирование осуществляется частотой ACLK.
Бит 1,0 – WDTIS (WDT Interval Select) – выбор интервала переполнения сторожевого таймера. Комбинация состояния этих бит дает возможность установить период переполнения счетчика. Если F – частота тактирования счетчика в Герцах, то период переполнения в секундах определиться следующим образом:
-
WDTIS1
WDTIS0
Интервал
0
0
32768 / F
0
1
8192 / F
1
0
512 / F
1
1
64 / F
Следует помнить, что даже в тех приложениях, где планируется использовать сторожевой таймер, подключать его имеет смысл только тогда, когда вся программы отлажена. Поэтому обычно на этапе разработке программы его отключают. Сделать это можно, например, командой
mov #5A80h, &WDTCTL
или
mov #WDTPW+WDTHOLD, &WDTCTL
ПРИМЕР. Сбросить сторожевой таймер и установить его режим работы для интервала переполнения в диапазоне 0.1 – 0.5 секунды. Тактирование осуществлять от ACLK = 32768 Hz.
Если выбрать комбинацию WDTIS = 01b, то период переполнения определиться как
T = 8196/32768 = 0.25 s.
Для установки режима и сброса таймера необходимо выполнить команду
mov #WDTPW+WDTCNTCL+WDTSSEL+WDTIS0, &WDTCTL
или более короткий эквивалент этой команды
mov #5A0Dh, &WDTCTL