Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2846

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

MSP430x1xxFamily

Таблица 11-2. (Окончание)

OUTMODx

Режим

Описание

Выход сбрасывается, когда таймер досчитывает до 111 Сброс/Установка значения TACCRx. Он устанавливается, когда таймер

досчитывает до значения TACCR0.

Пример вывода – таймер в режиме «вверх»

Сигнал OUTx изменяется, когда таймер досчитывает вверх до значения TACCRx и обратно от TACCR0 к нулю, в зависимости от режима вывода. Пример с использованием TACCR0 и TACCR1 показан на рис. 11-12.

0FFFFh

TACCR0

TACCR1

0h

Режим вывода 1: Установка

Режим вывода 2:

Переключение/Сброс

Режим вывода 3:

Установка/Сброс

Режим вывода 4:

Переключение

Режим вывода 5:

Сброс

Режим вывода 6:

Переключение/Установка

Режим вывода 7:

Сброс/Установка

События, вызывающие

EQU0

EQU1

EQU0

EQU1

EQU0

TAIFG

TAIFG

TAIFG

прерывание

Рис. 11-12. Пример вывода – таймер в режиме «вверх»

Библиотека Компэла

190


Раздел XI.

Таймер A

Пример вывода – таймер в непрерывном режиме

Сигнал OUTx изменяется, когда таймер достигает значений TACCRx и

TACCR0, в зависимости от режима вывода. Пример с использованием TACCR0 и

TACCR1 показан на рис. 11-13.

0FFFFh

TACCR0

TACCR1

0h

Режим вывода 1:

Установка

Режим вывода 2:

Переключение/Сброс

Режим вывода 3:

Установка/Сброс

Режим вывода 4:

Переключение

Режим вывода 5:

Сброс

Режим вывода 6:

Переключение/Установка

Режим вывода 7:

Сброс/Установка

TAIFG

EQU1

EQU0

TAIFG

EQU1

EQU0

События, вызывающие

прерывание

Рис. 11-13. Пример вывода – таймер в непрерывном режиме

Пример вывода – таймер в режиме «вверх/вниз»

Сигнал OUTx изменяется, когда таймер становится равным TACCRx в каждом направлении счета, а также когда таймер равен TACCR0, в зависимости от режима вывода. Пример с использованием TACCR0 и TACCR2 показан на рис. 11-14.

Примечание: Переключение между режимами вывода

При переключении между режимами вывода один из битов OUTMODx должен оставаться установленным во время перехода, кроме переключения в режим 0. В противном случае может произойти сбой, поскольку режим вывода 0 декодирует элемент NOR (НЕ-ИЛИ). Безопасный метод переключения между

Библиотека Компэла

191


MSP430x1xxFamily

0FFFFh

TACCR0

TACCR2

0h

Режим вывода 1:

Установка

Режим вывода 2:

Переключение/Сброс

Режим вывода 3:

Установка/Сброс

Режим вывода 4:

Переключение

Режим вывода 5:

Сброс

Режим вывода 6:

Переключение/Установка

Режим вывода 7:

Сброс/Установка

EQU2

EQU2

EQU2

EQU2

TAIFG

EQU0

TAIFG

EQU0

События, вызывающие

прерывание

Рис. 11-14. Пример вывода – таймер в режиме «вверх/вниз»

режимами вывода заключается в использовании режима вывода 7 как переходного состояния:

BIS

#OUTMOD_7,&TACCTLx

;Установка режима вывода 7

BIC

#OUTMODx,&TACCTLx

;Очистка лишних битов

11.2.6.Прерывания Таймера А

С16-разрядным модулем таймера А связаны два вектора прерываний:

Вектор прерывания TACCR0 для TACCR0 CCIFG

Вектор прерывания TAIV для всех других флагов CCIFG и TAIFG

Врежиме захвата любой флаг CCIFG устанавливается, когда значение таймера зафиксировано в соответствующем регистре TACCRx. В режиме сравнения устанавливается любой флаг CCIFG, если TAR досчитал до соответствую-

192

Библиотека Компэла


Раздел XI.

Таймер A

щего значения TACCRx. Программное обеспечение может также устанавливать или очищать любой флаг CCIFG. Все флаги CCIFG запрашивают прерывание, когда установлены их соответствующие биты CCIE и бит GIE.

Прерывание TACCR0

Флаг TACCR0 CCIFG обладает наивысшим приоритетом прерывания Таймера А и имеет специализированный вектор прерывания, как показано на рис. 11-15. Флаг TACCR0 CCIFG автоматически сбрасывается, когда обслуживается запрос на прерывание TACCR0.

Захват

EQU0

D

Set

CAP

Q

Тактирование

Reset

таймера

CCIE

IRQ, запрос обработки

прерывания

IRACC, прием запроса

POR

на прерывание

Рис. 11-15. Флаг прерывания захвата/сравнения TACCR0

Генератор вектора прерывания TAIV

Флаги TACCR1 CCIFG, TACCR2 CCIFG и TAIFG распределены по приоритетам и объединены в источник одного вектора прерывания. Регистр вектора прерывания TAIV используется для определения, какой флаг запросил прерывание.

Разрешенное прерывание с наивысшим приоритетом генерирует число в регистре TAIV (см. описание регистра). Можно оценить это число или добавить его к программному счетчику для автоматического входа в соответствующую программную процедуру. Запрещенные прерывания Таймера А не воздействуют на значение TAIV.

Любое обращение – чтение или запись регистра TAIV – автоматически сбрасывает флаг наивысшего ожидающего прерывания. Если установлен другой флаг прерывания, будет немедленно сгенерировано другое прерывание после обработки начального прерывания. Например, если флаги TACCR1 и TACCR2 CCIFG установлены, когда процедура обработки прерывания обращается к регистру TAIV, флаг TACCR1 CCIFG автоматически сбрасывается. После выполнения команды RETI процедуры обработки прерывания, флаг TACCR2 CCIFG генерирует другое прерывание.

Библиотека Компэла

193