MSP430_Final
.pdf13.2. Функционирование Таймера B 331
Тактовый сигнал таймера
Таймер |
TBR(max) –1 TBR (max) |
0h |
1h |
TBR(max) –1 TBR (max) |
0h |
Установка TBIFG
Рис. 13.5. Установка флага прерывания в режиме непрерывного счёта.
Использование режима непрерывного счёта
Режим непрерывного счёта может использоваться для формирования незави симых временных интервалов и сигналов разных частот. Каждый раз при завер шении очередного интервала генерируется прерывание. В процедуре обработки прерывания длительность следующего интервала прибавляется к содержимому защёлки TBCLx. На Рис. 13.6 показано формирование двух временных интерва лов длительностью t0 и t1 (эти значения прибавляются к содержимому регистров захвата/сравнения). В данном случае формирование временных интервалов осу ществляется аппаратно, и задержка обработки прерывания не сказывается на их длительности. С помощью блоков захвата/сравнения можно формировать до 3 (модуль Timer_B3) или до 7 (модуль Timer_B7) независимых временных интерва лов или сигналов с разными частотами.
|
TBCL1b |
TBCL1c |
TBCL0d |
|
TBCL0b |
TBCL0c |
|
TBR (max) |
|
||
|
|
|
|
|
TBCL1a |
|
TBCL1d |
TBCL0a |
|
|
|
0h |
|
|
|
Прерывание |
|
|
|
EQU0 |
t 0 |
t 0 |
t 0 |
Прерывание |
|
|
|
EQU1 |
t 1 |
t 1 |
t 1 |
Рис. 13.6. Формирование временных интервалов в режиме непрерывного счёта. |
Временные интервалы можно формировать и в других режимах, использую щих регистр TBCL0 в качестве регистра периода. Однако при этом необходимо предусмотреть обработку ситуации, когда сумма старого содержимого TBCLx и нового периода оказывается больше значения TBCL0. В таком случае для получе ния корректного результата из получившейся суммы необходимо вычесть значе ние TBCL0 + 1.
13.2. Функционирование Таймера B 333
TBCL0. Новое содержимое TBCCR0 защёлкивается в TBCL0 сразу же после за писи, однако формирование периода с новой длительностью начнётся только после достижения счётчиком нулевого значения.
Если в момент загрузки нового значения периода в защёлку TBCL0 таймер считает в прямом направлении и загруженное значение больше или равно старо му значению периода или же больше текущего значения таймера, то смена на правления счёта произойдёт после достижения таймером нового значения перио да. Если новый период меньше текущего значения таймера, то таймер сразу же начинает считать в обратном направлении, однако перед сменой направления может возникнуть один дополнительный отсчёт.
Использование реверсивного режима счёта
Режим реверсивного счёта может использоваться в случаях, когда требуется наличие «мёртвых зон» между выходными сигналами (см. подраздел 13.2.5 «Мо дуль вывода»). Так, на выводах, используемых для управления H мостом, не до пускается одновременное появление ВЫСОКОГО уровня во избежание перегруз ки элементов моста.
В примере, показанном на Рис. 13.9, величина tdead определяется как tdead = ttimer (TBCL1 – TBCL3),
где tdead — интервал времени, в течение которого оба вывода должны быть неак тивными («мёртвое» время);
ttimer — период тактового сигнала таймера; TBCLx — содержимое защёлки сравнения x.
Возможность одновременной загрузки значений в несколько регистров защё лок, объединённых в одну группу, гарантирует наличие «мёртвого» времени тре буемой длительности.
TBR(max)
TBCL0 |
|
|
|
|
|
|
TBCL1 |
|
|
|
|
|
|
TBCL3 |
|
|
|
|
|
|
0h |
|
|
|
|
|
|
|
|
|
|
|
|
«Мёртвое» время |
|
|
|
|
|
|
Режим 6: Переключение/установка |
|
|
|
|
|
|
Режим 2: Переключение/сброс |
TBIFG |
EQU1 |
EQU1 |
TBIFG |
EQU1 |
EQU1 |
События, генерирующие |
EQU0 |
|
EQU0 |
прерывания |
|||
|
|
|
||||
EQU3 |
EQU3 EQU3 |
|
EQU3 |
|
||
|
Рис. 13.9. Модуль вывода в режиме реверсивного счёта. |
334 Глава 13. Таймер B
13.2.4. Блоки захвата/сравнения
В Таймере B в зависимости от модели микроконтроллера имеется три или семь идентичных блоков захвата/сравнения. Любой из блоков может использо ваться для захвата значения таймера и формирования временных интервалов.
Режим захвата
Режим захвата включается при CAP = 1. Этот режим используется для регист рации временных событий. Он может быть использован для вычисления скоро сти или измерения временных параметров. Входы захвата CCIxA и CCIxB под ключены к выводам микроконтроллера или же к его внутренним шинам. Выбор конкретного входа захвата осуществляется битами CCISx. Биты CMx определяют активный фронт сигнала захвата (нарастающий, спадающий или оба), по которо му выполняется операция захвата. При выполнении этой операции:
значение таймера копируется в соответствующий регистр TBCCRx;
устанавливается флаг прерывания CCIFG.
Уровень входного сигнала можно в любой момент времени определить по со стоянию бита CCI. В зависимости от модели на входы CCIxA и CCIxB могут пос тупать различные сигналы. Для получения более подробной информации обрати тесь к документации на конкретный микроконтроллер.
Сигнал захвата может быть асинхронным по отношению к тактовому сигналу таймера, что приведёт к возникновению «гонок». При установленном бите SCS операция захвата синхронизируется с тактовым сигналом таймера. Рекомендует ся всегда устанавливать этот бит. Синхронизация сигнала захвата показана на Рис. 13.10.
Тактовый сигнал таймера
Таймер |
n–2 |
n–1 |
n |
n+1 |
n+2 |
n+3 |
n+4 |
CCI
Захват
Установка TBCCRx CCIFG
Рис. 13.10. Сигнал захвата при SCS = 1.
Для каждого регистра захвата/сравнения предусмотрена схема переполнения, служащая для индикации выполнения операции захвата до считывания результа та предыдущей операции. При возникновении такой ситуации устанавливается бит COV, как показано на Рис. 13.11. Бит COV должен сбрасываться программно.
|
|
|
13.2. Функционирование Таймера B 335 |
|
|
Ожидание |
|
|
Захват |
|
Чтение регистра захвата |
|
|
|
|
Захват |
|
Захват |
Чтение |
не |
|
захваченного |
|
|
выполнен |
||
выполнен |
|
значения |
|
|
|
||
|
|
|
Захват |
|
|
|
Чтение регистра захвата, |
|
|
|
Захвата нет |
Захват
Сброс бита COV регистра TBCCTLx
Выполнен 2 й захват Ожидание
COV = 1
Захват
Рис. 13.11. Цикл захвата.
Захват, инициируемый программно
Захват может быть инициирован программно. Для выполнения захвата по обоим фронтам можно установить биты CMx = 11. После этого в программе до статочно установить бит CCIS1 и изменить состояние бита CCIS0 для формиро вания фронта сигнала захвата. Захват будет инициироваться при каждом измене нии бита CCIS0:
MOV |
#CAP+SCS+CCIS1+CM_3,&TBCCTLx |
; |
Настроим TBCCTLx |
XOR |
#CCIS0,&TBCCTLx |
; |
TBCCTLx = TBR |
Режим сравнения
Режим сравнения включается при CAP = 0. Этот режим используется для ге нерации сигналов с широтно импульсной модуляцией или для формирования прерываний с заданной периодичностью. При достижении таймером в процессе счёта значения, находящегося в защёлке TBCLx:
устанавливается флаг прерывания CCIFG;
формируется внутренний сигнал EQUx = 1;
сигнал EQUx воздействует на выход в соответствии с режимом работы мо дуля вывода.
336 Глава 13. Таймер B
Регистры.защёлки TBCLx
В регистрах защёлках блоков захвата/сравнения TBCLx хранятся значения, используемые для сравнения с текущим значением таймера в режиме сравнения. Каждая из защёлок TBCLx буферирована регистром TBCCRx. Наличие буфери зации даёт пользователю возможность управлять моментом обновления содержи мого защёлки. Напрямую защёлки TBCLx для пользователя недоступны. Сравни ваемое значение заносится в регистр TBCCRx, откуда автоматически перегружа ется в TBCLx. Момент пересылки содержимого TBCCRx в TBCLx задаётся пользователем при помощи битов CLLDx в соответствии с Табл. 13.2.
Таблица 13.2. Варианты загрузки защёлок TBCLx
CLLDx |
Описание |
|
|
00 |
Новое значение перегружается из TBCCRx в TBCLx одновременно с его записью в регистр |
|
TBCCRx |
|
|
01 |
Новое значение перегружается из TBCCRx в TBCLx при достижении таймером в процессе |
|
счёта нулевого значения |
|
|
10 |
В режимах прямого и непрерывного счёта новое значение перегружается из TBCCRx в |
|
TBCLx при достижении таймером в процессе счёта нулевого значения. В режиме реверсив |
|
ного счёта новое значение перегружается из TBCCRx в TBCLx при достижении таймером в |
|
процессе счёта старого значения TBCL0 или же нулевого значения |
|
|
11 |
Новое значение перегружается из TBCCRx в TBCLx при достижении таймером в процессе |
|
счёта старого значения TBCLx |
|
|
Группирование регистров.защёлок
Для одновременного обновления содержимого нескольких регистров защё лок они могут быть сгруппированы при помощи битов TBCLGRPx. При исполь зовании группирования момент загрузки новых значений в защёлки группы оп ределяется битами CCLDx, относящимися к регистру TBCCRx с наименьшим номером, за исключением варианта TBCLGRP = 3 (Табл. 13.3).
Таблица 13.3. Группирование регистров защёлок
TBCLGRPx |
Группирование |
Управление загрузкой |
|
|
|
00 |
Нет |
Индивидуально |
|
|
|
01 |
TBCL1 + TBCL2 |
TBCCR1 |
|
TBCL3 + TBCL4 |
TBCCR3 |
|
TBCL5 + TBCL6 |
TBCCR5 |
|
|
|
10 |
TBCL1 + TBCL2 + TBCL3 |
TBCCR1 |
|
TBCL4 + TBCL5 + TBCL6 |
TBCCR4 |
|
|
|
11 |
TBCL0 + TBCL1 + TBCL2 + |
TBCCR1 |
|
TBCL3 + TBCL4 + TBCL5 + TBCL6 |
|
|
|
|
При этом значение битов CLLDx управляющего регистра TBCCRx должно быть отличным от нуля. Если все биты CCLDx управляющего регистра TBCCRx сброшены, то обновление содержимого всех защёлок сравнения производится при записи в соответствующие регистры TBCCRx; группирование в этом случае отсутствует.
Для загрузки новых значений в регистры защёлки при использовании груп пирования необходимо выполнение двух условий. Во первых, новое значение
13.2. Функционирование Таймера B 337
должно быть записано во все регистры TBCCRx группы, даже если оно совпадает со старым. Во вторых, должно наступить соответствующее событие.
13.2.5. Модуль вывода
Каждый блок захвата/сравнения содержит модуль вывода. Этот модуль ис пользуется для генерации различных сигналов, в том числе сигналов с ШИМ. Каждый модуль вывода имеет восемь режимов работы, которые используются для формирования различных сигналов в соответствии с внутренними сигналами EQU0 и EQUx. Один из выводов микроконтроллера, имеющий альтернативную функцию TBOUTH, может быть использован для перевода выходов Таймера B в высокоимпедансное состояние. При выборе для вывода порта данной функции и подаче на этот вывод сигнала ВЫСОКОГО уровня все выходы Таймера B пере ключаются в состояние с высоким входным сопротивлением.
Режимы модуля вывода
Режимы работы модуля вывода определяются битами OUTMODx и перечис лены в Табл. 13.4. Сигнал OUTx изменяется по нарастающему фронту тактового сигнала таймера во всех режимах, кроме режима 0. Режимы 2, 3, 6 и 7 не приме нимы к 0 му модулю вывода, поскольку в этом случае EQUx = EQU0.
Таблица 13.4. Режимы работы модуля вывода
OUTMODx |
Режим |
Описание |
|
|
|
000 |
Вывод |
Выходной сигнал OUTx определяется состоянием бита OUTx. Выходной |
|
|
сигнал изменяется сразу же после изменения бита OUTx |
|
|
|
001 |
Установка |
При достижении таймером в процессе счёта значения, записанного в |
|
|
защёлке TBCLx, выход устанавливается. Это состояние сохраняется до |
|
|
тех пор, пока таймер не будет сброшен или пока не будет задан новый |
|
|
режим работы модуля вывода с последующим воздействием на выход |
|
|
|
010 |
Переключе |
При достижении таймером в процессе счёта значения, записанного в |
|
ние/ сброс |
защёлке TBCLx, выход переключается. Выход сбрасывается при дости |
|
|
жении таймером значения, записанного в защёлке TBCL0 |
|
|
|
011 |
Установка/ |
При достижении таймером в процессе счёта значения, записанного в |
|
сброс |
защёлке TBCLx, выход устанавливается. Выход сбрасывается при дости |
|
|
жении таймером значения, записанного в защёлке TBCL0 |
|
|
|
100 |
Переключе |
Выход переключается при достижении таймером в процессе счёта зна |
|
ние |
чения, записанного в защёлке TBCLx. Период выходного сигнала равен |
|
|
удвоенному периоду таймера |
|
|
|
101 |
Сброс |
При достижении таймером в процессе счёта значения, записанного в |
|
|
защёлке TBCLx, выход сбрасывается. Это состояние сохраняется до тех |
|
|
пор, пока не будет задан новый режим работы модуля вывода с последу |
|
|
ющим воздействием на выход |
|
|
|
110 |
Переключе |
При достижении таймером в процессе счёта значения, записанного в |
|
ние/ уста |
защёлке TBCLx, выход переключается. Выход устанавливается при до |
|
новка |
стижении таймером значения, записанного в защёлке TBCL0 |
|
|
|
111 |
Сброс/ |
При достижении таймером в процессе счёта значения, записанного в |
|
установка |
защёлке TBCLx, выход сбрасывается. Выход устанавливается при дости |
|
|
жении таймером значения, записанного в защёлке TBCL0 |
|
|
|
338 Глава 13. Таймер B
Использование модуля вывода — таймер в режиме прямого счёта
Сигнал OUTx изменяется при достижении таймером в процессе счёта значе ния, записанного в защёлке TBCLx, а также при переходе таймера от значения, записанного в защёлке TBCL0, к нулевому значению. На Рис. 13.12 показано формирование выходного сигнала в различных режимах работы модуля вывода с использованием защёлок TBCL0 и TBCL1.
TBR(max)
TBCL0 |
TBCL1 |
0h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 1: Установка |
|
|
|
|
|
|
|
|
|
|
Режим вывода 2: Переключение/сброс |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 3: Установка/сброс |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 4: Переключение |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 5: Сброс |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 6: Переключение/установка |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 7: Сброс/установка |
|
|
|
|
|
|
|
|
|
|||
EQU0 |
EQU1 EQU0 |
EQU1 EQU0 |
События, генерирующие |
|||||||
TBIFG |
|
|
TBIFG |
|
TBIFG |
|||||
|
|
|
прерывания |
|||||||
|
|
|
|
|
|
|
|
|
|
Рис. 13.12. Формирование выходного сигнала — таймер в режиме прямого счёта.
13.2. Функционирование Таймера B 339
Использование модуля вывода — таймер в режиме непрерывного счёта
Сигнал OUTx изменяется при достижении таймером в процессе счёта значе ний, записанных в защёлках TBCLx и TBCL0. На Рис. 13.13 показано формиро вание выходного сигнала в различных режимах работы модуля вывода с исполь зованием защёлок TBCL0 и TBCL1.
TBR(max) |
TBCL0 |
TBCL1 |
0h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 1: Установка |
||
|
|
|
|
|
|
|
Режим вывода 2: Переключение/сброс |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 3: Установка/сброс |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 4: Переключение |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 5: Сброс |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 6: Переключение/установка |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим вывода 7: Сброс/установка |
||
|
|
|
|
|
|
|
|
|
События, генерирующие |
TBIFG EQU1 EQU0 TBIFG EQU1 EQU0 |
|
|
|||||||
|
|
прерывания |
|||||||
|
|
|
|
|
|
|
|
|
Рис. 13.13. Формирование выходного сигнала — таймер в режиме непрерывного счёта.
Использование модуля вывода — таймер в режиме реверсивного счёта
Сигнал OUTx изменяется при достижении таймером в процессе счёта значе ния, записанного в защёлке TBCLx (вне зависимости от направления счёта), а также при достижении значения, записанного в защёлке TBCL0. На Рис. 13.14 показано формирование выходного сигнала в различных режимах работы модуля вывода с использованием защёлок TBCL0 и TBCL3.
Примечание. Переключение между режимами модуля вывода
При переходе от одного режима работы модуля вывода к другому, один из битов OUTMODx в процессе переключения обязательно должен оставаться в установ ленном состоянии, за исключением переключения в режим 0. В противном случае