Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MSP430_Final

.pdf
Скачиваний:
41
Добавлен:
31.05.2015
Размер:
2.03 Mб
Скачать

13.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.

332 Глава 13. Таймер B

Режим реверсивного счёта

Режим реверсивного счёта используется в случае, если период таймера дол жен быть отличным от TBR(max) и если необходимо генерировать симметричные импульсы. В этом режиме таймер циклически считает в прямом направлении до тех пор, пока его значение не станет равным содержимому защёлки сравнения TBCL0, а затем в обратном направлении до нуля, как показано на Рис. 13.7. При этом период равен удвоенному значению TBCL0.

TBCL0

0h

Рис. 13.7. Режим реверсивного счёта.

Направление счёта фиксируется, что позволяет после останова таймера и пос ледующего его запуска продолжать счёт в том же направлении, что и до останова. Если этого не требуется, то для сброса признака направления необходимо запи сать 1 в бит TBCLR. Установка бита TBCLR также вызывает очистку регистра TBR и делителя тактового сигнала таймера.

Врежиме реверсивного счёта флаг прерываний CCIFG для регистра TBCCR0

ифлаг TBIFG устанавливаются только один раз за период, причём интервал меж ду установкой этих флагов составляет 1/2 периода таймера. Флаг CCIFG устанав ливается при счёте таймера от значения TBCL0 – 1 до TBCL0, а флаг TBIFG — при счёте с 0001h до 0000h (Рис. 13.8).

Тактовый сигнал таймера

Таймер

TBCL0–1 TBCL0 TBCL0–1 TBCL0–2

1h

0h

1h

Прямой счёт/ обратный счёт

Установка TBIFG

Установка TBCCR0 CCIFG

Рис. 13.8. Установка флагов прерываний в режиме реверсивного счёта.

Изменение регистра периода TBCL0

При изменении содержимого TBCL0 во время счёта таймера в обратном на правлении, процесс счёта не прерывается даже в случае немедленной загрузки

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. В противном случае

340 Глава 13. Таймер B

из за ошибочного декодирования элементом ИЛИ НЕ режима 0 модуля возмож но появление на выходе паразитных импульсов. Безопасный метод переключения режимов модуля заключается в использовании в качестве промежуточного состоя ния режима 7.

BIS #OUTMOD_7,&TBCCTLx ; Устанавливаем режим 7 BIC #OUTMODx,&TBCCTLx ; Сбрасываем требуемые биты

TBR(max)

TBCL0

 

 

 

 

 

 

TBCL3

 

 

 

 

 

 

0h

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

Режим вывода 2: Переключение/сброс

 

 

 

 

 

 

Режим вывода 3: Установка/сброс

 

 

 

 

 

 

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

 

 

 

 

 

 

Режим вывода 5: Сброс

 

 

 

 

 

 

Режим вывода 6: Переключение/установка

 

 

 

 

 

 

Режим вывода 7: Сброс/установка

 

EQU3

EQU3

 

EQU3

EQU3

События, генерирующие

TBIFG

EQU0

TBIFG

EQU0

прерывания

Рис. 13.14. Формирование выходного сигнала — таймер в режиме реверсивного счёта.

13.2.6. Прерывания Таймера B

С модулем 16 битного Таймера B связаны два вектора прерывания:

вектор прерывания TBCCR0 для бита CCIFG, соответствующего регистру TBCCR0;

вектор прерывания TBIV для всех остальных флагов CCIFG и флага TBIFG. В режиме захвата любой из флагов CCIFG устанавливается в момент сохране

ния значения таймера в соответствующем регистре TBCCRx. В режиме сравне ния любой из флагов CCIFG устанавливается при достижении таймером в про цессе счёта значения, загруженного в соответствующую защёлку TBCLx. Кроме

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]