Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2855
Скачиваний: 1
Раздел XI. |
Таймер A |
0FFFFh |
|
TACCR0 |
|
0h |
|
Рис. 11-2. Режим «Вверх» |
Флаг прерывания TACCR0 CCIFG устанавливается, когда значение таймера равно содержимому TACCR0. Флаг прерывания TAIFG устанавливается, когда таймер считает от TACCR0 к нулю. На рис. 11-3 показан цикл установки флагов.
Тактирование
таймера
Таймер |
CCR0•1 CCR0 |
0h |
1h |
CCR0•1 CCR0 |
0h |
Установка TAIFG
Установка TACCR0 CCIFG
Рис. 11-3. Установка флагов в режиме «Вверх»
Изменение регистра периода TACCR0
Когда изменяется TACCR0 во время работы таймера, таймер продолжает отсчет вверх до новой границы периода, если новый период больше или равен старому или больше текущего значения счета. Если новый период меньше величины текущего значения счета, таймер обнуляется. Однако до обнуления счетчика может произойти один дополнительный отсчет.
Непрерывный режим
В непрерывном режиме таймер многократно считает вверх до 0FFFFh и перезапускается от нуля, как показано на рис. 11-4. Регистр захвата/сравнения TACCR0 работает подобно другим регистрам захвата/сравнения.
0FFFFh |
0h |
Рис. 11-4. Непрерывный режим |
Библиотека Компэла |
183 |
|
MSP430x1xxFamily
Флаг прерывания TAIFG устанавливается, когда таймер считает от 0FFFFh к нулю. На рис. 11-5 показан цикл установки флага.
Тактирование
таймера
Таймер |
FFFEh |
FFFFh |
0h |
1h |
FFFEh |
FFFFh |
0h |
Установка TAIFG
Рис. 11-5. Установка флага в непрерывном режиме
Использование непрерывного режима
Непрерывный режим может использоваться для генерации независимых временных интервалов и выходных частот. Каждый раз по завершении интервала генерируется прерывание. Следующий временной интервал добавляется к регистру TACCRx в процедуре обработки прерывания. На рис. 11-6 показаны два раздельных временных интервала t0 и t1, добавляемые к регистрам захвата/ сравнения. При таком использовании временные интервалы управляются аппаратно, без программного обеспечения, без влияния времени задержки прерывания. При использовании всех трех регистров захвата/сравнения можно сгенерировать до трех независимых временных интервалов или выходных частот.
Временные интервалы можно реализовать также в других режимах, где TACCR0 используется как регистр периода. Их обработка более комплексна, поскольку сумма старого значения TACCRx и нового периода может быть выше
TACCR1b |
TACCR1c |
|
TACCR0b |
TACCR0c |
TACCR0d |
0FFFFh |
||
TACCR1a |
TACCR1d |
|
TACCR0a |
t0 |
t0 |
t0 |
||||||
t1 |
t1 |
t1 |
||||||
Рис. 11-6. Временные интервалы непрерывного режима |
||||||||
Библиотека Компэла |
||||||||
184 |
||||||||
Раздел XI. |
Таймер A |
значения TACCR0. Когда предыдущее значение TACCRx плюс tx больше величины TACCR0, значение TACCR0 должно быть вычтено для получения правильного временного интервала.
Режим «вверх/вниз»
Режим «вверх/вниз» используется, если период таймера должен отличаться от значения 0FFFFh и необходима генерация симметричных импульсов. Таймер непрерывно считает вверх до значения, находящегося в регистре сравнения TACCR0 и назад к нулю, как показано на рис. 11-7. Период составляет удвоенную величину значения в TACCR0.
0FFFFh |
TACCR0 |
0h |
Рис. 11-7. Режим «вверх/вниз» |
Направление счета запоминается. Это позволяет таймеру останавливаться и запускаться в том же направлении отсчета, которое было до останова. Если это нежелательно, для очистки направления нужно установить бит TACLR. Бит TACLR также очищает значения в TAR и в делителе TACLK.
В режиме «вверх/вниз» флаг прерывания TACCR0 CCIFG и флаг прерывания TAIFG устанавливаются только однажды во время периода, разделяясь 1/2 периода таймера. Флаг прерывания TACCR0 CCIFG устанавливается, когда таймер считает от TACCR0-1 к TACCR0, а флаг TAIFG устанавливается, когда таймер завершает счет вниз от 0001h к 0000h. На рис. 11-8 показан цикл установки флагов.
Тактирование
таймера
Таймер |
CCR0•1 |
CCR0 |
CCR0•1 |
CCR0•2 |
1h |
0h |
Вверх/вниз
Установка TAIFG
Установка TACCR0 CCIFG
Рис. 11-8. Установка флагов в режиме вверх/вниз
Библиотека Компэла |
185 |
|
MSP430x1xxFamily |
||||||||
Изменение регистра периода TACCR0 |
||||||||
При изменении TACCR0 во время работы таймера и счете вниз, таймер |
||||||||
продолжает счет до нуля. Новый период начинает действовать после заверше- |
||||||||
ния отсчета вниз до нуля. |
||||||||
Когда таймер выполняет отсчет вверх и новый период больше или ра- |
||||||||
вен старому периоду или же больше текущего отсчитанного значения, таймер |
||||||||
считает вверх до конца нового периода перед отсчетом вниз. Когда же таймер |
||||||||
производит отсчет вверх, а величина нового периода меньше текущего отсчи- |
||||||||
танного значения, таймер начинает считать вниз. Однако может произойти один |
||||||||
дополнительный отсчет до начала счета вниз. |
||||||||
Использование режима вверх/вниз |
||||||||
Режим «вверх/вниз» поддерживает приложения, требующие наличия |
||||||||
«мертвого» времени между выходными сигналами (см. раздел «Модуль вы- |
||||||||
вода Таймера А»). К примеру, чтобы избежать перегрузки, два выхода, управ- |
||||||||
ляющие H-мостом никогда не должны одновременно иметь высокий уровень. |
||||||||
В примере, показанном на рис.11-9 величина времени простоя tdead составляет: |
||||||||
tdead = ttimer × (TACCR1 – TACCR2), где: |
||||||||
tdead – интервал времени, в течение которого оба выхода должны быть не- |
||||||||
активны |
||||||||
ttimer – время цикла тактирования таймера |
||||||||
0FFFFh |
||||||||
TACCR0 |
||||||||
TACCR1 |
||||||||
TACCR2 |
||||||||
0h |
"Мертвое" время |
|||||||
Режим вывода 6: |
||||||||
"Переключение/Установка" |
||||||||
Режим вывода 2: |
||||||||
"Переключение/Сброс" |
||||||||
TAIFG |
EQU1 |
EQU1 |
TAIFG |
EQU1 |
EQU1 |
Генерируемые |
||
EQU0 |
EQU0 |
прерывания |
||||||
EQU2 |
EQU2 |
EQU2 |
||||||
EQU2 |
||||||||
Рис. 11-9. Модуль вывода в режиме «вверх/вниз» |
||||||||
186 |
Библиотека Компэла |
|
Раздел XI. |
Таймер A |
TACCRx – содержимое регистра захвата/сравнения x
Регистры TACCRx не буферизированы. Когда в них производится запись, они немедленно модифицируются. Поэтому, любое требуемое «мертвое» время не будет поддерживаться автоматически.
11.2.4.Блоки захвата/сравнения
Втаймере А представлено три одинаковых блока захвата/сравнения TACCRx. Любой из блоков может быть использован для фиксации (захвата) данных таймера или для генерации временных интервалов.
Режим захвата
Режим захвата выбирается, когда CAP=1. Режим захвата используется для регистрации временных событий. Это может потребоваться для быстрых вычислений или для измерения времени. Входы захвата CCIxA и CCIxB подключаются к внешним выводам или к внутренним сигналам и выбираются с помощью битов CCISx. Биты CMx определяют, как будет происходит захват: по фронту входного сигнала, по его спаду или в обоих случаях. Захват происходит по выбранному фронту входного сигнала. Если захват произошел, тогда:
•Значение таймера копируется в регистр TACCRx
•Устанавливается флаг прерывания CCIFG
Уровень входного сигнала может быть прочитан в любое время через бит CCI. К входам CCIxA и CCIxB в устройствах семейства MSP430x1xx могут подключаться различные сигналы. См. справочное руководство конкретного устройства для выяснения особенностей подключения этих сигналов.
Сигнал захвата может быть асинхронен тактовой частоте таймера и вызывать состояние гонки сигналов. Установка бита SCS будет синхронизировать захват со следующим тактовым импульсом таймера. Рекомендуется устанавливать бит SCS для синхронизации сигнала захвата с тактовыми импульсами таймера. Это иллюстрируется на рис. 11-10.
Тактирование
таймера
Таймер |
n•2 |
n•1 |
n |
n+1 |
n+2 |
n+3 |
n+4 |
CCI
Захват
Установка TACCRx CCIFG
Рис. 11-10. Сигнал захвата (SCS=1)
Библиотека Компэла |
187 |
|
MSP430x1xxFamily
Ожидание |
|||
Захват |
Чтение захвата |
||
Захват |
Захват |
Чтение |
|
принятого |
|||
не принят |
принят |
||
захвата |
|||
Захват |
|||
Чтение захвата, |
|||
захвата нет |
|||
Захват |
|||
Очистка бита COV |
|||
в регистре TACCTLx |
Принят |
||
второй |
захват |
Ожидание |
COV = 1 |
Рис. 11-11. Цикл захвата
Логика переполнения предусмотрена в каждом регистре захвата/сравнения для индикации в случае, если произошел второй захват перед прочтением значения первого захвата. Когда это происходит, устанавливается бит COV, как показано на рис. 11-11. Бит COV должен сбрасываться программно.
Инициирование захвата программным обеспечением
Захваты могут быть инициированы программно. Биты CMx могут быть установлены для выполнения захвата по обоим фронтам. В этом случае программное обеспечение устанавливает CCI=1 и переключает бит CCISO для переключения сигнала захвата между VCC и GND, инициируя захват каждый раз, когда CCISO изменяет состояние:
MOV |
#CAP+SCS+CCIS1+CM_3,&TACCTLx |
;Настройка |
TACCTLx |
XOR |
#CCIS0,&TACCTLx |
;TACCTLx = |
TAR |
Режим сравнения
Режим сравнения выбирается, когда CAP=0. Режим сравнения используется для генерации выходных ШИМ-сигналов или прерываний через конкретные временные интервалы. Когда TAR досчитывает до значения в TACCRx, происходит следующее:
188 |
Библиотека Компэла |
|
Раздел XI. |
Таймер A |
•Устанавливается флаг прерывания CCIFG
•Внутренний сигнал EQU=1
•EQUx воздействует на выход согласно режиму вывода
•Входной сигнал CCI фиксируется в SCCI
11.2.5. Модуль вывода
Каждый блок захвата/сравнения содержит модуль вывода. Модуль вывода используется для генерации выходных сигналов, в т.ч. таких, как ШИМ-сигна- лы. Каждый модуль вывода имеет восемь рабочих режимов, которые генерируют сигналы, основываясь на сигналах EQU0 и EQUx.
Режимы вывода
Режимы вывода устанавливаются битами OUTMODx, их описание приведено в таблице 11-2. Сигнал OUTx изменяется с нарастающим фронтом тактового сигнала таймера во всех режимах, кроме режима 0. Режимы вывода 2, 3, 6 и 7 не используются для модуля вывода 0, потому что EQUx=EQU0.
Таблица 11-2. Режимы вывода. |
|||||
OUTMODx |
Режим |
Описание |
|||
Выходной сигнал OUTx определяется битом OUTx. |
|||||
000 |
Вывод |
Сигнал OUTx изменяется немедленно при изменении |
|||
OUTx. |
|||||
Выход устанавливается, когда таймер досчитывает |
|||||
001 |
Установка |
до значения в TACCRx. Он остается установленным |
|||
до сброса таймера или до выбора другого режима |
|||||
вывода и воздействия на выход. |
|||||
Выход переключается, когда таймер досчитывает до |
|||||
010 |
Переключение/Сброс |
значения TACCRx. Он сбрасывается, когда таймер |
|||
досчитывает до значения TACCR0. |
|||||
Выход устанавливается, когда таймер досчитывает |
|||||
011 |
Установка/Сброс |
до значения TACCRx. Он сбрасывается, когда таймер |
|||
досчитывает до значения TACCR0. |
|||||
Выход переключается, когда таймер досчитывает до |
|||||
100 |
Переключение |
значения TACCRx. Период выходного сигнала равен |
|||
удвоенному периоду таймера. |
|||||
Выход сбрасывается, когда таймер досчитывает до |
|||||
101 |
Сброс |
значения TACCRx. Это остается сброшенным до выбо- |
|||
ра другого режима вывода и воздействия на выход. |
|||||
Выход переключается, когда таймер досчитывает до |
|||||
110 |
Переключение/Установка |
значения TACCRx. Он устанавливается, когда таймер |
|||
досчитывает до значения TACCR0. |
|||||
Библиотека Компэла |
|||||
189 |
|||||