Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2837
Скачиваний: 1
MSP430x1xxFamily
Тактирование
таймера
Таймер |
TBCL0•1 TBCL0 |
0h |
1h |
TBCL0•1 TBCL0 |
0h |
Установка TBIFG
Установка TBCCR0 CCIFG
Рис. 12-3. Установка флагов в режиме «вверх»
больше текущего значения счета, таймер считает вверх к новому периоду. Если новый период меньше текущего значения счета, таймер обнуляется. Однако, может произойти один дополнительный отсчет перед обнулением счетчика.
Непрерывный режим
В непрерывном режиме таймер многократно считает вверх до значения TBR(max) и перезапускается от нуля, как показано на рис. 12-4. Защелка сравнения TBCL0 работает подобно другим регистрам захвата/сравнения.
TBR(max)
0h
Рис. 12-4. Непрерывный режим
Флаг прерывания TBIFG устанавливается, когда таймер считает от TBR(max) к нулю. На рис. 12-5 показан цикл установки флагов.
Тактирование
таймера
Таймер |
TBR(max)•1 TBR(max) |
0h |
1h |
TBR(max)•1 TBR(max) |
0h |
Установка TBIFG
Рис. 12-5. Установка флагов в непрерывном режиме
Использование непрерывного режима
Непрерывный режим может использоваться для генерации независимых временных интервалов и выходных частот. Каждый раз по завершении интервала
204 |
Библиотека Компэла |
|
Раздел XII. |
Таймер B |
генерируется прерывание. Следующий временной интервал добавляется к защелке TBCLx в процедуре обработки прерывания. На рис. 12-6 показаны два раздельных временных интервала t0 и t1, добавляемые к регистрам захвата/сравнения. Выдержка временных интервалов осуществляется аппаратно, без участия программного обеспечения и без воздействия задержек прерывания. Может быть сгенерировано до трех (таймер В3) или до семи (таймер В7) независимых временных интервалов или выходных частот при использовании регистров захвата/сравнения.
TBCL1b |
TBCL1c |
||
TBCL0b |
TBCL0c |
TBCL0d |
|
TBR(max) |
|||
TBCL1a |
TBCL1d |
||
TBCL0a |
|||
0h |
|||
Прерывание EQU0 |
t0 |
t0 |
t0 |
Прерывание EQU1 |
t1 |
t1 |
t1 |
Рис. 12-6. Временные интервалы в «непрерывном» режиме
Временные интервалы могут быть реализованы также в других режимах, в которых TBCL0 используется как регистр периода. Работа с ними более комплексна, т.к. сумма старого значения TBCLx и нового периода может оказаться больше значения TBCL0. Когда сумма предыдущего значения TBCLx плюс tx больше содержимого TBCL0, для получения правильного временного интервала необходимо вычитать старое значение TBCL0.
Режим «вверх/вниз»
Режим «вверх/вниз» используется, если период таймера должен отличаться от величины отсчетов TBR(max), а также если требуется генерация симметричных импульсов. Таймер многократно считает вверх до значения в защелке сравнения TBCL0 и назад к нулю, как показано на рис. 12-7. Период в этом случае равен удвоенному значению TBCL0.
Примечание: TBCL0 > TBR(max)
Если TBCL0 > TBR(max), счетчик работает так, как если бы был сконфигурирован для непрерывного режима. Счет вниз от TBR(max) до нуля не производится.
Направление счета защелкивается. Это позволяет таймеру останавливаться и перезапускаться с тем направлением счета, которое было до его остано-
Библиотека Компэла |
205 |
|
MSP430x1xxFamily |
TBCL0 |
0h |
Рис. 12-7. Режим «вверх/вниз» |
ва. Если это не желательно, для сброса направления нужно использовать бит TBCLR. Бит TBCLR также очищает значение TBR и делитель TBCLK.
В режиме «вверх/вниз» флаг прерывания TBCCR0 CCIFG и флаг прерывания TBIFG устанавливаются один раз в период, разделяясь 1/2-ой периода таймера. Флаг прерывания TBCCR0 CCIFG устанавливается, когда таймер считает от TBCL0-1 до TBCL0, а TBIFG устанавливается, когда таймер завершает счет вниз от 0001h к 0000h. На рис. 12-8 показан цикл установки флагов.
Изменение значение регистра периода TBCL0
Когда изменяется TBCL0 во время работы таймера при выбранном направ-
Тактирование
таймера
Таймер |
TBCL0•1 TBCL0 TBCL0•1 TBCL0•2 |
1h |
0h |
1h |
Вверх/вниз
Установка TBIFG
Установка TBCCR0 CCIFG
Рис. 12-8. Установка флагов в режиме «вверх/вниз»
лении счета вниз и установленном непосредственном режиме загрузке TBCL0, таймер продолжает отсчет вниз до нуля. Новый период будет активизирован после завершения счета счетчика до нуля.
Если таймер считает вверх, когда новый период защелкнут в TBCL0, и новый период больше или равен старому периоду или же больше текущего значения счета, таймер считает вверх до нового периода перед счетом вниз. Когда таймер считает вверх, а новый период меньше текущего значения счета в момент загрузки TBCL0, таймер начинает считать вниз. Однако, может произойти один дополнительный отсчет прежде, чем счетчик начнет считать вниз.
206 |
Библиотека Компэла |
|
Раздел XII. |
Таймер B |
Использование режима «вверх/вниз»
Режим «вверх/вниз» поддерживает приложения, требующие наличия «мертвого» времени между выходными сигналами (см. раздел Модуль вывода Таймера В). К примеру, чтобы избежать режима перегрузки, два выхода, управляющие H-мостом никогда не должны иметь высокий уровень одновременно. В примере, показанном на рис. 12-9 «мертвое» время tdead задается так:
CBR(max)
TBCL0 |
|||||||
TBCL1 |
|||||||
TBCL3 |
|||||||
0h |
"Мертвое" время |
||||||
Режим вывода 6: |
|||||||
"Переключение/Установка" |
|||||||
Режим вывода 2: |
|||||||
"Переключение/Сброс" |
|||||||
TBIFG |
EQU1 |
EQU1 |
TBIFG |
EQU1 |
EQU1 |
Генерируемые |
|
EQU0 |
EQU0 |
прерывания |
|||||
EQU3 |
EQU3 |
||||||
EQU3 |
EQU3 |
||||||
Рис. 12-9. Модуль вывода в режиме «вверх/вниз»
tdead = ttimer × (TBCL1 – TBCL3), где:
tdead – время, в течение которого оба выхода не активны; ttimer – время цикла такта таймера;
TBCLx – содержимое защелки сравнения х.
Возможность одновременной загрузки сгруппированных защелок гарантирует наличие «мертвого» времени.
12.2.4. Блоки захвата/сравнения
Три или семь идентичных блоков захвата/сравнения TBCCRx представлены в таймере В. Любой из блоков может использоваться для захвата данных таймера или для генерации временных интервалов.
Режим захвата
Режим захвата выбирается, когда CAP=1. Режим захвата используется для регистрации временных событий. Он может быть использован для выполнения быстрых вычислений или измерений времени. Входы захвата CCIxA и CCIxB под-
Библиотека Компэла |
207 |
|
MSP430x1xxFamily
ключаются к внешним выводам или внутренним сигналам и выбираются с помощью битов CCISx. Биты CMx позволяют задать, как будет происходить захват: по переднему, по заднему или по обеим фронтам входного сигнала. Захват происходит по выбранному фронту входного сигнала. Если захват произошел, то:
•Значение таймера копируется в регистр TBCCRx
•Устанавливается флаг прерывания CCIFG
Уровень входного сигнала может быть прочитан в любое время через бит CCI. Устройства семейства MSP430x1xx могут иметь различные сигналы, подключенные к CCIxA и CCIxB. См. справочное руководство конкретного устройства для выяснения подробностей подключения этих сигналов.
Сигнал захвата может быть асинхронен тактовой частоте таймера и вызывать состояние гонки сигналов. При установке бита SCS захват синхронизируется со следующим тактовым импульсом таймера. Рекомендуется устанавливать бит SCS для синхронизации сигнала захвата с тактовыми импульсами таймера. Это иллюстрируется на рис. 12-10.
Тактирование
таймера
Таймер |
n•2 |
n•1 |
n |
n+1 |
n+2 |
n+3 |
n+4 |
CCI
Захват
Установка TBCCRx CCIFG
Рис. 12-10. Сигнал захвата (SCS=1)
Логика переполнения предусмотрена в каждом регистре захвата/сравнения для индикации в случае, если произошел второй захват перед прочтением значения первого захвата. Когда это происходит, устанавливается бит COV, как показано на рис. 12-11. Бит COV должен сбрасываться программно.
Захват, инициируемый программным обеспечением
Захваты могут быть инициированы программно. Биты CMx могут устанавливаться для выполнения захвата на обоих фронтах. В этом случае программное обеспечение устанавливает бит CСIS1=1 и переключает бит CCIS0 для переключения сигнала захвата между VCC и GND, инициируя захват каждый раз, когда CCISO изменяет состояние:
MOV #CAP+SCS+CCIS1+CM_3,&TBCCTLx |
;Настройка TBCCTLx |
||
XOR #CCIS0,&TBCCTLx |
;TBCCTLx = TBR |
||
Библиотека Компэла |
|||
208 |
|||
Раздел XII. |
Таймер B |
||
Ожидание |
|||
Захват |
Чтение захвата |
||
Захват |
Захват |
Чтение |
|
принятого |
|||
не принят |
принят |
||
захвата |
|||
Захват |
|||
Чтение захвата, |
|||
захвата нет |
|||
Захват |
|||
Очистка бита COV |
|||
в регистре TBCCTLx |
Принят |
||
второй |
захват |
Ожидание |
COV = 1 |
Рис. 12-11. Цикл захвата
Режим сравнения
Режим сравнения выбирается, когда CAP=0. Режим сравнения используется для генерации выходных ШИМ – сигналов или прерываний через заданные временные интервалы. Когда TAR досчитывает до значения в TBCLx, происходит следующее:
•Устанавливается флаг прерывания CCIFG
•Внутренний сигнал EQU=1
•EQU воздействует на вывод согласно режиму вывода
Защелка сравнения TBCLx
Защелка сравнения TBCCRx TBCLx хранит данные для сравнения со значением таймера в режиме сравнения. TBCLx буферизирована TBCCRx. Буферизация защелки сравнения дает пользователю контроль над обновлением периода сравнения. Пользователь не имеет прямого доступа к TBCLx. Сравниваемые данные записываются в каждый регистр TBCCRx и автоматически переносятся в TBCLx. Синхронизация переноса из TBCCRx в TBCLx выбирается пользователем с помощью битов CLLDx в соответствии с описанным в таблице 12-2.
Таблица 12-2. Варианты загрузки TBCLx
CLLDx |
Описание |
00 Новые данные переносятся из TBCCRx в TBCLx немедленно, когда записывается TBCCRx.
01 Новые данные переносятся из TBCCRx в TBCLx, когда TBR досчитывает до 0.
Библиотека Компэла |
209 |
|
MSP430x1xxFamily
CLLDx |
Описание |
Новые данные переносятся из TBCCRx в TBCLx, когда TBR досчитывает до 0 в режимах
10«вверх» и «непрерывный». Новые данные переносятся из TBCCRx в TBCLx, когда TBR досчитывает до старого значения TBCL0 или до 0 в режиме «вверх/вниз».
11
Новые данные переносятся из TBCCRx в TBCLx, когда TBR досчитывает до старого значения TBCLx.
Группировка защелок сравнения
Несколько защелок сравнения могут быть сгруппированы вместе для одновременного обновления с помощью битов TBCLGRPx. При использовании групп биты CLLDx самого младшего TBCCRx в группе определяют вариант загрузки для каждой защелки группы, кроме случая, когда TBCLGRP=3, как показано в таблице 12-3. Биты CLLDx, управляющие TBCCRx, не должны устанавливаться в ноль. Когда биты CLLDx управления регистром TBCCRx установлены в ноль, все защелки сравнения немедленно обновляются при выполнении записи в их соответствующие регистры TBCCRx – группировки защелок сравнения не происходит.
При загрузке сгруппированных защелок сравнения необходимо соблюдать два условия. Во-первых, все регистры группы должны быть обновлены, даже когда новые данные TBCCRx равны старым данным TBCCRx. Во-вторых, должно произойти событие загрузки.
Таблица 12-3. Рабочие режимы защелок сравнения
TBCLGRPx |
Группировка |
Управление обновлением |
|
00 |
Нет |
Индивидуальное |
|
TBCL1 + TBCL2 |
TBCCR1 |
||
01 |
TBCL3 + TBCL4 |
TBCCR3 |
|
TBCL5 + TBCL6 |
TBCCR5 |
||
10 |
TBCL1 + TBCL2 + TBCL3 |
TBCCR1 |
|
TBCL4 + TBCL5 + TBCL6 |
TBCCR4 |
||
11 |
TBCL0 + TBCL1 + TBCL2 +TBCL3 |
TBCCR1 |
|
+ TBCL4 + TBCL5 + TBCL6 |
|||
12.2.5. Модуль вывода
Каждый блок захвата/сравнения содержит модуль вывода. Модуль вывода используется для генерации выходных сигналов, таких как ШИМ-сигналы. Каждый модуль вывода имеет восемь рабочих режимов, которые генерируют сигналы, основываясь на сигналах EQU0 и EQUx. Функция ножки TBOUTH может использоваться для установки всех выходов таймера В в «третье» (высокоимпедансное) состояние. Когда для ножки выбрана функция TBOUTH и на вывод подан высокий лог. уровень, все выходы таймера В находятся в «третьем» состоянии.
210 |
Библиотека Компэла |
|