Таймер В
Таймер В - это 16-разрядный таймер/счетчик со несколькими регистрами захвата/сравнения. В этом разделе описывается работа таймера В. Таймер В3 (с тремя регистрами захвата/сравнения) реализован в устройствах MSP430x13x и MSP430x15x. Таймер В7 (с семью регистрами захвата/сравнения) реализован в устройствах MSP430x14x и MSP430x16x.
12.1 Введение в таймер В
Таймер В – это 16-разрядный таймер/счетчик с тремя или семью регистрами захвата/сравнения. Таймер В может поддерживать несколько режимов захвата/сравнения, вывод ШИМ-сигналов и выдержку временных интервалов. Таймер В также имеет расширенные возможности прерываний. Прерывания могут быть сгенерированы при переполнении счетчика и от каждого из регистров захвата/сравнения.
Таймер В обладает следующими возможностями:
- Асинхронный 16-разрядный таймер/счетчик с четырьмя режимами работы и четырьмя настраиваемыми длительностями
- Выбираемые и конфигурируемые источники тактирования
- Три или семь конфигурируемых регистров захвата/сравнения
- Конфигурируемые выходы с возможностью ШИМ
- Защелки сравнения с двойной буферизацией и синхронизируемой загрузкой
- Регистр вектора прерывания для быстрого декодирования всех прерываний таймера В
Блок-схема таймера В показана на рис.12-1.
Примечание: Использование слова «счет»
«Счет» используется везде в этом разделе. Это способ показать, что счетчик должен быть в процессе подсчета для выполняемого действия во взятом месте. Если в счетчик напрямую записывается конкретное значение, соответствующе действие не происходит.
|
12.1.1 Сходства и различия с таймером А
Таймер В идентичен таймеру А, но со следующими исключениями:
- Длина таймера В программируется и может составлять 8, 10, 12 или 16 бит
- Регистры TBCCRx таймера В имеют двойную буферизацию и могут группироваться
- Все выходы таймера В могут быть переведены в третье (высокоимпедансное) состояние
- Функция бита SCCI не реализована в таймере В.
Рис.12-1 Блок-схема таймера В
12.2 Работа таймера В
Модуль таймера В конфигурируется программным обеспечением пользователя. Настройка и работа таймера В рассматривается в следующих разделах
12.2.1 16-разрядный счетчик таймера
16-разрядный регистр таймера/счетчика TBR инкрементируется и декрементируется (в зависимости от режима работы) по каждому нарастающему фронту тактового сигнала. Регистр TBR может программно читаться и записываться. Помимо этого, таймер может генерировать прерывание при его переполнении.
Регистр TBR может быть очищен установкой бита TBCLR. Установка TBCLR также очищает делитель тактовой частоты и направление счета для режима «вверх/вниз».
Примечание: Модификация регистров таймера В
Рекомендуется останавливать таймер перед изменением режима работы (кроме операций с флагом прерывания и разрешения прерывания) во избежание его ошибочной работы.
Когда TBCLK асинхронен тактовой частоте ЦПУ, любое чтение из TBR должно выполняться при неработающем таймере, в противном случае результат может оказаться непредсказуемым. Любая запись в TBR приведет к немедленному результату.
|
Длина TBR
Таймер В конфигурируется для работы в качестве 8, 10, 12 или 16-разрядного таймера с помощью битов CNTLx. Максимальное значение счета TBR(max) для выбранной длины соответственно составит 0FFh, 03FFh, 0FFFh и 0FFFFh. Данные, записанные в регистр TBR в 8-ми, 10-ти и 12-разрядном режиме выравниваются по правому знаку с нулями впереди.
Выбор источника тактирования и делитель
В качестве источников тактовой частоты TBCLK могут выступать ACLK, SMCLK или внешние сигналы, поступающие через TBCLK или INCLK. Источник тактирования выбирается битами TBSSELx. Выбранный источник тактирования может подключаться к таймеру напрямую или через делитель на 2, 4 или 8 с помощью битов IDx.
12.2.2 Старт таймера
Таймер может быть запущен или перезапущен следующими способами:
Таймер считает, когда MCx > 0 и активен источник тактовых сигналов
Когда таймер находится в режиме счета «вверх» или «вверх/вниз», его можно остановить загрузкой нуля в TBCL0. Таймер может быть тогда и перезапущен при загрузке ненулевого значения в TBCL0. В этом случае таймер начинает инкрементирование вверх от нуля.
12.2.3 Управление режимом таймера
Таймер имеет четыре режима работы, описанных в таблице 12-1: «стоп», «вверх», «непрерывный» и «вверх/вниз». Рабочий режим выбирается с помощью битов MCx.
Таблица 12-1. Режимы таймера.
MCx |
Режим |
Описание |
00 |
Стоп |
Останов таймера |
01 |
Вверх |
Таймер многократно считает от нуля до значения в регистре сравнения TBCL0 |
10 |
Непрерывный |
Таймер многократно считает от нуля до значения, выбранного битами TBCNTLx. |
11 |
Вверх/вниз |
Таймер многократно считает от нуля вверх до значения в TBCL0 и назад до нуля. |
Режим «вверх»
Режим «вверх» используется, если период таймера должен быть отличен от количества отсчетов TBR(max). Таймер многократно считает вверх до значения в защелке сравнения TBCL0, которое определяет период, как показано на рис.12-2. Количество отсчетов таймера в периоде равно TBCL0+1. Когда значение таймера равно TBCL0, таймер перезапускается на счет с нуля. Если режим «вверх» выбран, когда значение таймера больше чем в TBCL0, таймер немедленно перезапускается на отсчет с нуля.
Рис.12-2 Режим «вверх»
Флаг прерывания TBCCR0 CCIFG устанавливается, когда значение таймера равно значению TBCL0. Флаг прерывания TBIFG устанавливается, когда таймер пересчитывает от TBCL0 к нулю. На рис.12-3 показан цикл установки флагов.
Рис.12-3 Установка флагов в режиме «вверх»
Изменение регистра периода TBCL0
При изменении TBCL0 во время работы таймера, когда TBCL0 находится в режиме непосредственной загрузки, если новый период больше старого или больше текущего значения счета, таймер считает вверх к новому периоду. Если новый период меньше текущего значения счета, таймер обнуляется. Однако, может произойти один дополнительный отсчет перед обнулением счетчика.
Непрерывный режим
В непрерывном режиме таймер многократно считает вверх до значения TBR(max) и перезапускается от нуля, как показано на рис.12-4. Защелка сравнения TBCL0 работает подобно другим регистрам захвата/сравнения.
Рис.12-4 Непрерывный режим
Флаг прерывания TBIFG устанавливается, когда таймер считает от TBR(max) к нулю. На рис.12-5 показан цикл установки флагов.
Рис.12-5 Установка флагов в непрерывном режиме
Использование непрерывного режима
Непрерывный режим может использоваться для генерации независимых временных интервалов и выходных частот. Каждый раз по завершении интервала генерируется прерывание. Следующий временной интервал добавляется к защелке TBCLx в процедуре обработки прерывания. На рис.12-6 показаны два раздельных временных интервала t0 и t1, добавляемые к регистрам захвата/сравнения. Выдержка временных интервалов осуществляется аппаратно, без участия программного обеспечения и без воздействия задержек прерывания. Может быть сгенерировано до трех (таймер В3) или до семи (таймер В7) независимых временных интервалов или выходных частот при использовании регистров захвата/сравнения.
Рис.12-6 Временные интервалы в «непрерывном» режиме
Временные интервалы могут быть реализованы также в других режимах, в которых TBCL0 используется как регистр периода. Работа с ними более комплексна, т.к. сумма старого значения TBCLx и нового периода может оказаться больше значения TBCL0. Когда сумма предыдущего значения TBCLx плюс tx больше содержимого TBCL0, для получения правильного временного интервала необходимо вычитать старое значение TBCL0.
Режим «вверх/вниз»
Режим «вверх/вниз» используется, если период таймера должен отличаться от величины отсчетов TBR(max), а также если требуется генерация симметричных импульсов. Таймер многократно считает вверх до значения в защелке сравнения TBCL0 и назад к нулю, как показано на рис.12-7. Период в этом случае равен удвоенному значению TBCL0.
Примечание: TBCL0 > TBR(max)
Если TBCL0 > TBR(max), счетчик работает так, как если бы был сконфигурирован для непрерывного режима. Счет вниз от TBR(max) до нуля не производится.
|
Рис.12-7 Режим «вверх/вниз»
Направление счета защелкивается. Это позволяет таймеру останавливаться и перезапускаться с тем направлением счета, которое было до его останова. Если это не желательно, для сброса направления нужно использовать бит TBCLR. Бит TBCLR также очищает значение TBR и делитель TBCLK.
В режиме «вверх/вниз» флаг прерывания TBCCR0 CCIFG и флаг прерывания TBIFG устанавливаются один раз в период, разделяясь 1/2-ой периода таймера. Флаг прерывания TBCCR0 CCIFG устанавливается, когда таймер считает от TBCL0-1 до TBCL0, а TBIFG устанавливается, когда таймер завершает счет вниз от 0001h к 0000h. На рис.12-8 показан цикл установки флагов.
Рис.12-8 Установка флагов в режиме «вверх/вниз»
Изменение значение регистра периода TBCL0
Когда изменяется TBCL0 во время работы таймера при выбранном направлении счета вниз и установленном непосредственном режиме загрузке TBCL0, таймер продолжает отсчет вниз до нуля. Новый период будет активизирован после завершения счета счетчика до нуля.
Если таймер считает вверх, когда новый период защелкнут в TBCL0, и новый период больше или равен старому периоду или же больше текущего значения счета, таймер считает вверх до нового периода перед счетом вниз. Когда таймер считает вверх, а новый период меньше текущего значения счета в момент загрузки TBCL0, таймер начинает считать вниз. Однако, может произойти один дополнительный отсчет прежде, чем счетчик начнет считать вниз.
Использование режима «вверх/вниз»
Режим «вверх/вниз» поддерживает приложения, требующие наличия «мертвого» времени между выходными сигналами (см. раздел Модуль вывода Таймера В). К примеру, чтобы избежать режима перегрузки, два выхода, управляющие H-мостом никогда не должны иметь высокий уровень одновременно. В примере, показанном на рис.12-9 «мертвое» время tdead задается так:
tdead = ttimer * (TBCL1 – TBCL3), где:
tdead – время, в течение которого оба выхода не активны;
ttimer – время цикла такта таймера;
TBCLx – содержимое защелки сравнения х.
Возможность одновременной загрузки сгруппированных защелок гарантирует наличие «мертвого» времени.
Рис.12-9 Модуль вывода в режиме «вверх/вниз»
12.2.4 Блоки захвата/сравнения
Три или семь идентичных блоков захвата/сравнения TBCCRx представлены в таймере В. Любой из блоков может использоваться для захвата данных таймера или для генерации временных интервалов.
Режим захвата
Режим захвата выбирается, когда CAP=1. Режим захвата используется для регистрации временных событий. Он может быть использован для выполнения быстрых вычислений или измерений времени. Входы захвата CCIxA и CCIxB подключаются к внешним выводам или внутренним сигналам и выбираются с помощью битов CCISx. Биты CMx позволяют задать, как будет происходить захват: по переднему, по заднему или по обеим фронтам входного сигнала. Захват происходит по выбранному фронту входного сигнала. Если захват произошел, то:
- Значение таймера копируется в регистр TBCCRx
- Устанавливается флаг прерывания CCIFG
Уровень входного сигнала может быть прочитан в любое время через бит CCI. Устройства семейства MSP430x1xx могут иметь различные сигналы, подключенные к CCIxA и CCIxB. См. справочное руководство конкретного устройства для выяснения подробностей подключения этих сигналов.
Сигнал захвата может быть асинхронен тактовой частоте таймера и вызывать состояние гонки сигналов. При установке бита SCS захват синхронизируется со следующим тактовым импульсом таймера. Рекомендуется устанавливать бит SCS для синхронизации сигнала захвата с тактовыми импульсами таймера. Это иллюстрируется на рис.12-10.
Рис.12-10 Сигнал захвата (SCS=1)
Логика переполнения предусмотрена в каждом регистре захвата/сравнения для индикации в случае, если произошел второй захват перед прочтением значения первого захвата. Когда это происходит, устанавливается бит COV, как показано на рис.12-11. Бит COV должен сбрасываться программно.
Рис.12-11 Цикл захвата
Захват, инициируемый программным обеспечением
Захваты могут быть инициированы программно. Биты CMx могут устанавливаться для выполнения захвата на обоих фронтах. В этом случае программное обеспечение устанавливает бит CСIS1=1 и переключает бит CCIS0 для переключения сигнала захвата между VCC и GND, инициируя захват каждый раз, когда CCISO изменяет состояние:
MOV #CAP+SCS+CCIS1+CM_3,&TBCCTLx ; Настройка TBCCTLx
XOR #CCIS0,&TBCCTLx ; TBCCTLx = TBR
Режим сравнения
Режим сравнения выбирается, когда 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. |
10 |
Новые данные переносятся из TBCCRx в TBCLx, когда TBR досчитывает до 0 в режимах «вверх» и «непрерывный». Новые данные переносятся из 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 |
Нет |
Индивидуальное |
01 |
TBCL1 + TBCL2 TBCL3 + TBCL4 TBCL5 + TBCL6 |
TBCCR1 TBCCR3 TBCCR5 |
10 |
TBCL1 + TBCL2 + TBCL3 TBCL4 + TBCL5 + TBCL6 |
TBCCR1 TBCCR4 |
11 |
TBCL0 + TBCL1 + TBCL2 + TBCL3 + TBCL4 + TBCL5 + TBCL6 |
TBCCR1 |
12.2.5 Модуль вывода
Каждый блок захвата/сравнения содержит модуль вывода. Модуль вывода используется для генерации выходных сигналов, таких как ШИМ-сигналы. Каждый модуль вывода имеет восемь рабочих режимов, которые генерируют сигналы, основываясь на сигналах EQU0 и EQUx. Функция ножки TBoutH может использоваться для установки всех выходов таймера В в «третье» (высокоимпедансное) состояние. Когда для ножки выбрана функция TBoutH и на вывод подан высокий лог. уровень, все выходы таймера В находятся в «третьем» состоянии.
Режимы вывода
Режимы вывода задаются битами OUTMODx, а их описание приведено в таблице 12-4. Сигнал OUTx изменяется по нарастающему фронту тактового сигнала таймера во всех режимах, кроме режима 0. Режимы вывода 2, 3, 6 и 7 не используются для модуля вывода 0, поскольку EQUx=EQU0.
Таблица 12-4. Режимы вывода.
OUTMODx |
Режим |
Описание |
000 |
Вывод |
Выходной сигнал OUTx определяется битом OUTx. Сигнал OUTx изменяется немедленно при изменении OUTx. |
001 |
Установка |
Выход устанавливается, когда таймер досчитывает до значения в TBCLx. Он остается установленным до сброса таймера или до выбора другого режима вывода и воздействия на выход. |
010 |
Переключение/сброс |
Выход переключается, когда таймер досчитывает до значения TBCLx. Он сбрасывается, когда таймер досчитывает до значения TBCL0. |
011 |
Установка/сброс |
Выход устанавливается, когда таймер досчитывает до значения TBCLx. Он сбрасывается, когда таймер досчитывает до значения TBCL0. |
100 |
Переключение |
Выход переключается, когда таймер досчитывает до значения TBCLx. Период выходного сигнала равен удвоенному периоду таймера. |
101 |
Сброс |
Выход сбрасывается, когда таймер досчитывает до значения TBCLx. Он остается сброшенным до выбора другого режима вывода и воздействия на выход. |
110 |
Переключение/установка |
Выход переключается, когда таймер досчитывает до значения TBCLx. Он устанавливается, когда таймер досчитывает до значения TBCL0. |
111 |
Сброс/установка |
Выход сбрасывается, когда таймер досчитывает до значения TBCLx. Он устанавливается, когда таймер досчитывает до значения TBCL0. |
Пример вывода – таймер в режиме «вверх»
Сигнал OUTx изменяется, когда таймер досчитывает вверх до значения TBCLx и обратно от TBCL0 к нулю, в зависимости от режима вывода. Пример с использованием TBCL0 и TBCL1 показан на рис.12-12.
Рис.12-12 Пример вывода – таймер в режиме «вверх»
Пример вывода – таймер в непрерывном режиме
Сигнал OUTx изменяется, когда таймер достигает значений TBCLx и TBCL0, в зависимости от режима вывода. Пример с использованием TBCL0 и TBCL1 показан на рис.12-13.
Рис.12-13 Пример вывода – таймер в «непрерывном» режиме
Пример вывода – таймер в режиме «вверх/вниз»
Сигнал OUTx изменяется, когда таймер равен TBCLx при любом направлении счета, либо когда таймер равен TBCL0, в зависимости от режима вывода. Пример с использованием TBCL0 и TBCL3 показан на рис.12-14.
Рис.12-14 Пример вывода – таймер в режиме «вверх/вниз»
Примечание: Переключение между режимами вывода
При переключении между режимами вывода один из битов OUTMODx должен оставаться установленным во время перехода между режимами, кроме переключения в режим 0. В противном случае может произойти сбой, поскольку режим вывода 0 декодирует элемент NOR (НЕ-ИЛИ). Безопасный метод переключения между режимами вывода заключается в использовании режима вывода 7 как переходного состояния:
BIS #OUTMOD_7,&TBCCTLx ; Установка режима вывода =7
BIC #OUTMODx,&TBCCTLx ; Очистка ненужных битов
|
12.2.6 Прерывания Таймера В
С 16-разрядным модулем таймера В связаны два вектора прерываний:
- Вектор прерывания TBCCR0 для TBCCR0 CCIFG
- Вектор прерывания TBIV для всех других флагов CCIFG и TBIFG
В режиме захвата любой флаг CCIFG устанавливается, когда значение таймера зафиксировано в соответствующем регистре TBCCRx. В режиме сравнения устанавливается любой флаг CCIFG, если TBR досчитал до соответствующего значения TBCLx. Программное обеспечение может также устанавливать или очищать любой флаг CCIFG. Все флаги CCIFG запрашивают прерывания, когда установлены их соответствующие биты CCIE и бит GIE.
Вектор прерывания TBCCR0
Флаг TBCCR0 CCIFG обладает наивысшим приоритетом прерывания Таймера B и имеет специализированный вектор прерывания, как показано на рис.12-15. Флаг TBCCR0 CCIFG автоматически сбрасывается, когда обслуживается запрос на прерывание TBCCR0.
Рис.12-15 Флаг прерывания TBCCR0 захвата/сравнения
Генератор вектора прерывания TBIV
Флаг TBIFG и флаги TBCCRx CCIFG (кроме TBCCR0 CCIFG) распределены по приоритетам и объединены в источник одного вектора прерывания. Регистр вектора прерывания TBIV используется для определения, какой флаг запросил прерывание.
Разрешенное прерывание с наивысшим приоритетом (кроме TBCCR0 CCIFG) генерирует число в регистре TBIV (см. описание регистра). Можно оценить это число или добавить его к программному счетчику для автоматического входа в соответствующую процедуру программы. Запрещенные прерывания таймера В не воздействуют на значение TBIV.
Любой тип доступа: чтение или запись регистра TBIV автоматически сбрасывает флаг наивысшего ожидающего прерывания. Если установлен другой флаг прерывания, будет немедленно сгенерировано другое прерывание после обработки изначального прерывания. К примеру, если флаги TBCCR1 и TBCCR2 CCIFG установлены, когда процедура обработки прерывания обращается к регистру TBIV, флаг TBCCR1 CCIFG автоматически сбрасывается. После выполнения команды процедуры обработки прерывания RETI, флаг TBCCR2 CCIFG генерирует другое прерывание.
Пример программного обеспечения, использующего TBIV
Приведенный далее пример программного обеспечения показывает рекомендуемое использование TBIV и величину издержек времени на управление. Значение TBIV добавляется к программному счетчику РС для автоматического перехода к соответствующей программной процедуре.
Числа в правом поле показывают необходимое количество циклов ЦПУ для каждой команды. Программные издержки различных источников прерывания включают задержку прерывания и циклы возврата из прерывания, но не учитывают собственно время обработки задачи. Задержки делятся на:
Блок захвата/сравнения CCR0 |
11 циклов |
Блоки захвата/сравнения с CCR1 по CCR6 |
16 циклов |
Переполнение таймера TBIFG |
14 циклов |
Следующий пример программного обеспечения показывает рекомендуемое использование TBIV для таймера В3:
; Обработчик прерывания для TBCCR0 CCIFG. Циклы
СCIFG_0_HND
... ; Начало времени задержки обработчика прерывания 6
RETI 5
; Обработчик прерывания для TBIFG, TBCCR1 и TBCCR2 CCIFG.
TB_HND $ ; Задержка прерывания 6
ADD &TBIV,PC ; Добавление смещения к таблице переходов 3
RETI ; Вектор 0: Нет прерывания 5
JMP CCIFG_1_HND ; Вектор 2: Модуль 1 2
JMP CCIFG_2_HND ; Вектор 4: Модуль 2 2
RETI ; Вектор 6
RETI ; Вектор 8
RETI ; Вектор 10
RETI ; Вектор 12
TBIFG_HND ; Вектор 14: Флаг TIMOV
... ; Задача стартует здесь
RETI 5
CCIFG_2_HND ; Вектор 4: Модуль 2
... ; Задача стартует здесь
RETI ; Назад к главной программе 5
; Модуль 1 обработчика позволяет узнать, что ожидается
; любое другое прерывание: на это тратится 5 циклов, но
; 9 циклов можно сэкономить, если ожидается другое прерывание
CCIFG_1_HND ; Вектор 6: Модуль 3
... ; Задача стартует здесь
JMP TB_HND ; Просмотр ожидающих прерываний 2
12.3 Регистры таймера В
Перечень регистров таймера В приведен в таблице 12-5.
Таблица 12-5. Регистры Таймера В.
Регистр |
Краткое обозначение |
Тип регистра |
Адрес |
Исходное состояние |
Управление Таймером В |
TBCTL |
Чтение/запись |
0180h |
Сброс с POR |
Счетчик Таймера В |
TBR |
Чтение/запись |
0190h |
Сброс с POR |
Регистр 0 управления захватом/сравнением таймера В |
TBCCTL0 |
Чтение/запись |
0182h |
Сброс с POR |
Регистр 0 захвата/сравнения таймера В |
TBCCR0 |
Чтение/запись |
0192h |
Сброс с POR |
Регистр 1 управления захватом/сравнением таймера В |
TBCCTL1 |
Чтение/запись |
0184h |
Сброс с POR |
Регистр 1 захвата/сравнения таймера В |
TBCCR1 |
Чтение/запись |
0194h |
Сброс с POR |
Регистр 2 управления захватом/сравнением таймера В |
TBCCTL2 |
Чтение/запись |
0186h |
Сброс с POR |
Регистр 2 захвата/сравнения таймера В |
TBCCR2 |
Чтение/запись |
0196h |
Сброс с POR |
Регистр 3 управления захватом/сравнением таймера В |
TBCCTL3 |
Чтение/запись |
0188h |
Сброс с POR |
Регистр 3 захвата/сравнения таймера В |
TBCCR3 |
Чтение/запись |
0198h |
Сброс с POR |
Регистр 4 управления захватом/сравнением таймера В |
TBCCTL4 |
Чтение/запись |
018Ah |
Сброс с POR |
Регистр 4 захвата/сравнения таймера В |
TBCCR4 |
Чтение/запись |
019Ah |
Сброс с POR |
Регистр 5 управления захватом/сравнением таймера В |
TBCCTL5 |
Чтение/запись |
018Ch |
Сброс с POR |
Регистр 5 захвата/сравнения таймера В |
TBCCR5 |
Чтение/запись |
019Ch |
Сброс с POR |
Регистр 6 управления захватом/сравнением таймера В |
TBCCTL6 |
Чтение/запись |
018Eh |
Сброс с POR |
Регистр 6 захвата/сравнения таймера В |
TBCCR6 |
Чтение/запись |
019Eh |
Сброс с POR |
Вектор прерывания Таймера В |
TBIV |
Только чтение |
011Eh |
Сброс с POR |
TBCTL, регистр управления таймером В
Не исполь зуется |
TBCLGRPx |
CNTLx |
Не исполь зуется |
TBSSELx |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
IDx |
MCx |
Не исполь зуется |
TBCLR |
TBIE |
TBIFG |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
w-(0) |
rw-(0) |
rw-(0) |
Не исполь зуется |
Бит 15 |
Не используется |
TBCLGRP |
Биты 14-13 |
Группировка TBCLx
00 |
Каждая защелка TBCLx загружается независимо |
01 |
TBCL1+TBCL2 (биты TBCCR1 CLLDx управляют обновлением)
TBCL3+TBCL4 (биты TBCCR3 CLLDx управляют обновлением)
TBCL5+TBCL6 (биты TBCCR5 CLLDx управляют обновлением)
TBCL0 независим |
10 |
TBCL1+TBCL2+TBCL3 (биты TBCCR1 CLLDx управляют обновлнием)
TBCL4+TBCL5+TBCL6 (биты TBCCR4 CLLDx управляют обновлением)
TBCL0 независим |
11 |
TBCL0+TBCL1+TBCL2+TBCL3+TBCL4+TBCL5+TBCL6
(биты TBCCR1 CLLDx управляют обновлением) |
|
CNTLx |
Биты 12-11 |
Длина счетчика
00 16-разрядный, TBR(max) = 0FFFFh
01 12-разрядный, TBR(max) = 0FFFh
10 10-разрядный, TBR(max) = 03FFh
11 8-разрядный, TBR(max) = 0FFh
|
Не исполь зуется |
Бит 10 |
Не используется |
TBSSELx |
Биты 9-8 |
Выбор источника тактирования таймера В
00 TBCLK
01 ACLK
10 SMCLK
11 INCLK
|
IDx |
Биты 7-6 |
Входной делитель. Эти биты позволяют выбрать коэффициент деления для входной тактовой частоты.
00 /1
01 /2
10 /4
11 /8
|
MCx |
Биты 5-4 |
Выбор режима. Установка MCx=00h, когда таймер В не используется, позволяет уменьшить потребляемую мощность.
00 |
Режим «останов»: таймер остановлен |
01 |
Режим «вверх»: таймер считает вверх к TBCL0 |
10 |
Непрерывный режим: таймер считает вверх к значению, установленному TBCNTLx |
11 |
Режим «вверх/вниз»: таймер считает вверх к TBCL0, затем вниз к 0000h |
|
Не используется |
Бит 3 |
Не используется |
TBCLR |
Бит 2 |
Очистка таймера В. Установка этого бита сбрасывает TBR, IDx и выбранное направление счета. Бит TBCLR автоматически сбрасывается и всегда читается как нуль. |
TBIE |
Бит 1 |
Разрешение прерывания от таймера В. Этот бит разрешает запрос прерывания TBIFG.
0 Прерывание запрещено
1 Прерывание разрешено
|
TBIFG |
Бит 0 |
Флаг прерывания таймера В
0 Прерывание не ожидается
1 Ожидается прерывание
|
TBR, регистр таймера В
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
TBRx |
Биты 15-0 |
Регистр таймера В. Регистр TBR является счетчиком таймера В. |
TBCCTLx, регистр управления захватом/сравнением
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
r-(0) |
rw-(0) |
OUTMODx |
CCIE |
CCI |
OUT |
COV |
CCIFG |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
r |
rw-(0) |
rw-(0) |
rw-(0) |
CMx |
Биты 15-14 |
Режим захвата
00 Нет захвата
01 Захват по нарастающему (переднему) фронту
10 Захват по заднему фронту
11 Захват как по переднему, так и по заднему фронтам
|
CCISx |
Биты 13-12 |
Выбор входа захвата/сравнения. Этими битами выбирается входной сигнал TBCCRx. См. справочное руководство конкретного устройства для выяснения подробностей подключения сигналов.
00 CCIxA
01 CCIxB
10 GND
11 VCC
|
SCS |
Бит 11 |
Синхронизация источника захвата. Этот бит используется для синхронизации
входного сигнала захвата с тактовым сигналом.
0 Асинхронный захват
1 Синхронный захват
|
CLLDx |
Бит 10-9 |
Загрузка защелки сравнения. Эти биты определяют, какое событие вызовет загрузку защелки сравнения.
00 TBCLx загружается при записи в TBCCRx
01 TBCLx загружается, когда TBR досчитывает к нулю
10 TBCLx загружается, когда TBR досчитывает к нулю
(непрерывный режим или режим «вверх»)
11 TBCLx загружается, когда TBR досчитывает к TBCLx
|
CAP |
Бит 8 |
Режим захвата.
0 Режим сравнения
1 Режим захвата
|
OUTMODx |
Биты 7-5 |
Режим вывода. Режимы 2, 3, 6 и 7 не используются для TBCL0, поскольку EQUx=EQU0.
000 Значение бита OUT
001 Установка
010 Переключение/сброс
011 Установка/сброс
100 Переключение
101 Сброс
110 Переключение/установка
111 Сброс/установка
|
CCIE |
Бит 4 |
Разрешение прерывания по захвату/сравнению. Этот бит разрешает запрос прерывания от соответствующего флага CCIFG.
0 Прерывание запрещено
1 Прерывание разрешено
|
CCI |
Бит 3 |
Вход захвата/сравнения. Выбранный входной сигнал может быть прочитан этим битом. |
OUT |
Бит 2 |
Выход. Этот бит указывает состояние вывода. Если выбран режима вывода 0, этот бит напрямую управляет состоянием выхода.
0 Низкий уровень выхода
1 Высокий уровень выхода
|
COV |
Бит 1 |
Переполнение захвата. Этот бит указывает, что произошло переполнение захвата. Бит COV должен быть сброшен программно.
0 Переполнения захвата не произошло
1 Произошло переполнение захвата
|
CCIFG |
Бит 0 |
Флаг прерывания захвата/сравнения
0 Прерывание не ожидается
1 Ожидается прерывание
|
TBIV, регистр вектора прерывания таймера В
r0 |
r0 |
r0 |
r0 |
r-(0) |
r-(0) |
r-(0) |
r0 |
TBIVx |
Биты 15-0 |
Значение вектора прерывания таймера В |
Содержимое TBIV |
Источник прерывания |
Флаг прерывания |
Приоритет прерывания |
00h |
Прерывание не ожидается |
- |
|
02h |
Захват/сравнение 1 |
TBCCR1 CCIFG |
Высший |
04h |
Захват/сравнение 2 |
TBCCR2 CCIFG |
|
06h |
Захват/сравнение 3* |
TBCCR3 CCIFG |
|
08h |
Захват/сравнение 4* |
TBCCR4 CCIFG |
|
0Ah |
Захват/сравнение 5* |
TBCCR5 CCIFG |
|
0Ch |
Захват/сравнение 6* |
TBCCR6 CCIFG |
|
0Eh |
Переполнение таймера |
TBIFG |
Низший |
* Только в устройствах MSP430x14x, MSP430x16x.
|