Раздел 11
Базовый таймер
Модуль базового таймера состоит из двух независимых, каскадируемых 8-битных таймеров. В этой главе описана работа модуля базового таймера Basic Timer 1. Данный модуль присутствует во всех микроконтроллерах семейства MSP430x4xx.
Содержание:
11.1 Модуль базового таймера Basic Timer 1 - введение
Модуль базового таймера обеспечивает тактирование ЖКИ и генерацию низкочастотных временных интервалов. Модуль базового таймера состоит из двух независимых 8-битных таймеров, которые могут быть каскадированы в один 16-битный таймер. Базовый таймер может быть использован в качестве:
- Часов реального времени.
- Программного таймера.
Модуль базового таймера обладает следующими особенностями:
- Выбор различных источников тактирования.
- Два независимых, каскадируемых 8-битных таймера.
- Возможность генерации прерываний.
- Генерация сигналов тактирования ЖКИ.
- Блок схема модуля тактирования модуля базового таймера Basic Timer 1 показана на рис. 11–1.
Примечание: Инициализация базового таймера
Регистры модуля базового таймера не имеют значений по умолчанию. Перед использованием обязательна программная инициализация.
|
Рис. 11-1. Блок схема модуля базового таймера Basic Timer 1
11.2 Работа модуля базового таймера Basic Timer 1
Модуль базового таймера может быть сконфигурирован как два независимых 8-битных таймера, либо один 16-битный таймер при помощи 8-битного доступного для чтения и записи управляющего регистра BTCTL. Операции чтения/записи в данный регистр должны иметь байтовый формат. Модуль базового таймера управляет частотой ЖКИ при помощи счётчика BTCNT1.
11.2.1 Счётчик №1 модуля базового таймера Basic Timer1
Счётчик №1 BTCNT1 модуля базового таймера Basic Timer1 является 8-битным счётчиком/таймером с непосредственным программным доступом. Тактовой частотой для него является вспомогательная частота тактирования ACLK, а на выходе формируется кадровая частота ЖКИ. Останов счётчика BTCNT1 осуществляется установкой в «1» бит BTHOLD и BTDIV.
11.2.2 Счётчик №2 модуля базового таймера Basic Timer1
Счётчик №2 BTCNT2 модуля базового таймера Basic Timer1 является 8-битным счётчиком/таймером с непосредственным программным доступом. Тактовой частотой для него является вспомогательная частота тактирования ACLK, дополнительная тактовая частота SMCLK или частота ACLK/256 в случае каскадирования со счётчиком BTCNT1. Выбор источника тактирования осуществляется битами BTSSEL и BTDIV. Для снижения энергопотребления счётчик BTCNT2 может быть остановлен установкой в «1» бита HOLD. Счётчик BTCNT2 может служить источником прерывания базового таймера BTIFG. Интервал прерываний задаётся битами BTIPx.
Примечание:Чтение и запись регистров BTCNT1 и BTCNT2
В случае, когда тактовая частота процессора и частота тактирования счётчика не синхронны, чтение из регистров BTCNT1 и BTCNT2 может иметь неопределённый результат. Запись значения в регистры BTCNT1 и BTCNT2 имеет незамедлительное действие.
|
11.2.3 Режим 16-битного счётчика
16-битный режим счётчика выбирается установкой управляющего бита BTDIV в «1». В таком режиме счётчики BTCNT1 и BTCNT2 каскадируются. Источником тактирования для BTCNT является частота ACLK, а для BTCNT2 – соответственно ACLK/256.
11.2.4 Работа базового таймера Basic Timer1: сигнал fLCD
Контроллер ЖКИ использует сигнал fLCD от модуля BTCNT1 для формирования управляющих сигналов для строк и сегментов ЖКИ. Источником тактирования для BTCNT1 является частота ACLK, которую считаем равной 32768 Гц, из неё формируется частота fLCD. Значение частоты fLCD определяется битами BTFRFQx и может принимать значение ACLK/256, ACLK/128, ACLK/64, или ACLK/32. Требуемая частота fLCD зависит от частоты обновления ЖКИ fFrame и его степени мультиплицирования и вычисляется как:
fLCD = 2 х mux x fFrame
Например, вычислим частоту fLCD для ЖКИ с коэффициентом мультиплицирования 3 (3-mux) с частотой обновления индикации fFrame 30 – 100 Гц:
fFrame (из документации на ЖКИ) = 30 - 100 Гц
fLCD = 2 x 3 x fFrame
fLCD(min) = 180 Гц
fLCD(max) = 600 Гц
выбираем fLCD = 32768/128 = 256 Гц или 32768/64 = 512 Гц
См. также раздел Контроллер ЖКИ (LCD Controller) , где приведена дополнительная информация по контроллеру ЖКИ.
11.2.5 Прерывания базового таймера Basic Timer1
Модуль базового таймера использует два бита в регистрах специального назначения SFR для управления прерываниями.
Флаг прерывания модуля базового таймера Basic Timer1, BTIFG, расположенный в IFG2.7
Бит разрешения прерывания модуля базового таймера Basic Timer1, BTIE, расположенный в IE2.7
Флаг прерывания BTIFG устанавливается по истечении заданного интервала времени и вызывает прерывание базового таймера Basic Timer1 в том случае, если это разрешено битами BTIE и GIE. Флаг BTIFG сбрасывается автоматически после обработки прерывания либо может быть очищен программно.
11.3 Регистры базового таймера Basic Timer1
Регистры базового таймера Basic Timer1 перечислены в таблице 11–1.
Регистр |
Краткое название |
Тип |
Адрес |
Начальное состояние |
Контроль базового таймера Basic Timer1 |
BTCTL |
Чтение/запись |
040h |
Не изменяется |
Счётчик №1 модуля базового таймера Basic Timer1 |
BTCNT1 |
Чтение/запись |
046h |
Не изменяется |
Счётчик №2 модуля базового таймера Basic Timer1 |
BTCNT2 |
Чтение/запись |
047h |
Не изменяется |
Регистр флагов прерываний 1 |
IFG2 |
Чтение/запись |
001h |
Обнулён по сбросу PUC |
Регистр разрешения прерываний 1 |
IE2 |
Чтение/запись |
003h |
Обнулён по сбросу PUC |
Примечание: Регистры модуля базового таймера BTCTL, BTCNT1, BTCNT2 не имеют значений по умолчанию. Перед использованием обязательна программная инициализация.
|
BTCTL, Контроль базового таймера Basic Timer1
BTSSEL |
BTHOLD |
BTDIV |
BTFRFQx |
BTIPx |
BTSSEL |
Бит 7 |
Выбор источника тактирования счётчика BTCNT2. Совместно с битом BTDIV определяет тактовую частоту счётчика BTCNT2. См. определение BTDIV. |
BTHOLD |
Бит 6 |
Останов базового таймера.
0 |
BTCNT1 и BTCNT2 функционируют |
1 |
BTCNT1 остановлен, в случае, если BTDIV=1 BTCNT2 остановлен |
|
BTDIV |
Бит 5 |
Делитель тактовой частоты для базового таймера Basic Timer1. Этот бит, совместно с битом BTSSEL определяет источник тактирования счётчика BTCNT2.
BTSSEL |
BTDIV |
Источник тактирования BTCNT2 |
0 |
0 |
ACLK |
0 |
1 |
ACLK/256 |
1 |
0 |
SMCLK |
1 |
1 |
ACLK/256 |
|
BTFRFQx |
Биты 4-3 |
Выбор частоты fLCD. Эти биты определяют частоту обновления индикации ЖКИ.
00 fACLK/32
01 fACLK/64
10 fACLK/128
11 fACLK/256 |
BTIPx |
Биты 2-0 |
Интервал прерываний базового таймера Basic Timer1.
000 fCLK2/2
001 fCLK2/2
010 fCLK2/8
011 fCLK2/16
100 fCLK2/32
101 fCLK2/64
110 fCLK2/128
111 fCLK2/256 |
BTCNT1, Счётчик №1 модуля базового таймера Basic Timer1
BTCNT1x |
Биты 7-0 |
Регистр BTCNT1. Значение в регистре BTCNT1 представляет собой выход счётчика BTCNT1. |
BTCNT2, Счётчик №2 модуля базового таймера Basic Timer1
BTCNT2x |
Биты 7-0 |
Регистр BTCNT2. Значение в регистре BTCNT2 представляет собой выход счётчика BTCNT2. |
IE2, Регистр разрешения прерываний 2
BTIE |
Бит 7 |
Разрешение прерывания базового таймера. Этот бит разрешает прерывание по флагу BTIFG.
Так как другие биты в регистре IE2 могут использоваться другими модулями, рекомендуется устанавливать и сбрасывать данный бит используя инструкции BIS.B или BIC.B, а не MOV.B или CLR.B.
0 – прерывание запрещено
1 – прерывание разрешено |
|
Биты 6-0 |
Эти биты могут быть использованы другими модулями. См. документацию на конкретный МК |
IFG2, Регистр флагов прерываний 2
BTIFG |
Бит 7 |
Флаг прерывания базового таймера.
Так как другие биты в регистре IE1 могут использоваться другими модулями, рекомендуется устанавливать и сбрасывать данный бит используя инструкции BIS.B или BIC.B, а не MOV.B или CLR.B.
0 – нет запроса прерывания
1 – есть запрос прерывания |
|
Биты 6-0 |
Эти биты могут быть использованы другими модулями. См. документацию на конкретный МК |
|