Файл: Семейство микроконтроллеров 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 |
|