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

Библиотека Компэла