- •Микроконтроллеры msp430 Введение
- •1. Центральный процессор msp430
- •1.1. Адресное пространство микроконтроллеров msp430f1xx
- •1.2. Регистровый файл
- •1.3. Байтовая и словная формы инструкций.
- •1.4. Режимы адресации
- •1.4.1 Регистровая адресация
- •1.4.2. Индексная адресация
- •1.4.3 Символьная адресация
- •1.4.4 Абсолютная адресация
- •1.4.5. Косвенная адресация
- •1.4.6. Косвенная адресация с автоинкрементом
- •1.4.7 Непосредственная адресация
- •2. Система команд msp микроконтроллеров
- •2.1. Двухадресные команды
- •2.2 Одноадресные команды
- •2.3 Команды переходов
- •2.4. Эмулируемые команды
- •3. Периферийные устройства микроконтроллеров msp430f1xx
- •3.1 Внешние выводы микроконтроллера msp430f149
- •3.2 Система прерываний
- •3.3 Система тактирования
- •3.4 Сторожевой таймер
- •3.5 Аппаратный умножитель
- •3.6 Порты ввода/вывода
- •3.7 Таймер a3
- •3.8 Таймер b7
- •3.9 Интерфейс usart
- •3.9.1 Режим uart
- •3.9.1.1 Передача данных
- •3.9.1.2 Прием данных
- •3.9.1.3 Поддержка коммуникации в многопроцессорных системах
- •3.9.1.4 Обнаружение стартового бита при приеме
- •3.9.1.5 Скорость передачи
- •3.9.1.6 Регистры usart
- •3.9.2 Режим spi
- •3.9.3 Режим i2c
- •3.9.3.1 Общие сведения о шине i2c
- •3.9.3.2 Режимы работы usart в режиме i2c
- •3.9.3.3 Арбитраж
- •3.9.3.4 Тактирование i2c модуля
- •3.9.3.4 Инициализация модуля i2c
- •3.9.3.5 Регистры модуля usart в режиме i2c
- •3.10 Аналоговый компаратор
- •3.11 Аналого-цифровой преобразователь adc12
- •3.12 Flash контроллер
- •3.12.1 Стирание Flash памяти
- •3.12.2 Запись Flash памяти
- •3.12.3 Регистры Flash контроллера
- •3.13 Цифро-аналоговый преобразователь
- •Контроллер dma
3.8 Таймер b7
Таймер B7 имеет структуру, аналогичную таймеру A3, но имеет следующие отличия:
Разрядность таймера может быть программно задана как 8, 10, 12 или 16 бит.
На базе таймера B реализовано 7 модулей захвата/сравнения – TBCC0 … TBCC6.
Регистры TBCCRx имеют буфер по записи и могут быть сгруппированы, т.е. запись данных в один из регистров приводит к обновлению данных во всех регистрах группы.
Все выходы модулей сравнения могут быть переведены в высокоимпедансное состояние.
Отсутствует бит SCCI в регистрах управления модулей захвата/сравнения.
Общая структурная схема таймера B7 приведена на рисунке 6.
Рисунок 6. Структурная схема таймера B7.
Дополнительные возможности таймера B7 дают удобные средства построения на его базе многоканальных широтно-импульсных (ШИМ) генераторов. В этом случае используется UP или UP/DOWN режимы таймера. С помощью регистра TBCCR0 модуля сравнения задается несущая частота модуляции, а содержимое TBCCRx определяет длительность генерируемых импульсов. Изменяя содержимое регистров TBCCRx можно динамически менять ширину импульсов в различных каналах. С помощью таймера B7 можно, например, реализовать управление шестью ключами, включенных в стойки инверторов для трехфазной сети. Для качественного регулирования необходимо, чтобы перестройка всех шести каналов ШИМ проводилась одновременно. Синхронную перестройку ШИМ генератора на базе таймера A реализовать затруднительно, т.к. программа может изменять содержимое регистров CCR только последовательно. Для достижения синхронности в таймере B7 используется буферирование регистров TBCCRx и объединение их в группы.
В отличии от таймера A, регистры TBCCRx подключены к компаратору не напрямую, а через регистры-защелки TBCLx (Timer B Compare Latch), так, как это показано на рис. 7.
Рисунок 7. Буферизированное подключение TBCCR
Таким образом, компаратор сравнивает текущее содержимое таймера B не с содержимым регистра TBCCRx, а с TBCLx. Прямого доступа к регистрам TBCLx нет, однако данные в них могут переписываться из TBCCRx в ответ на какое-либо событие – например переход таймера через 0. Это дает возможность в начале периода работы таймера последовательно записать требуемые значения в регистры TBCCRx, а воспримутся эти значения синхронно для всех каналов со следующего периода.
Еще одна возможность синхронизации многоканальных ШИМ заключается в объединении нескольких модулей сравнения в группы. Группа может состоять из 2-х, 3-х или всех 7-ми модулей. Один модуль в группе является ведущим, остальные - ведомыми. Если программа записывает новые данные в регистры TBCCRx ведомых модулей, эти данные не воспринимаются (не переписываются в TBCLx) до тех пор, пока не будет произведена запись в TBCCR ведущего модуля. Таким образом, данные из TBCCRx всех модулей группы подхватываются одновременно в момент записи TBCL ведущего модуля.
Наконец, внешние выводы всех модулей сравнения могут быть переведены в высокоимпедансное состояние внешним сигналом, подключенным к выводу P5.7/TBOUTH. Для выключения выходов модулей сравнения необходимо сконфигурировать вывод P5.7/TBOUTH для поддержки периферийных функций (через регистр P5SEL) и подать на него потенциал логической единицы.
Регистры таймера B7 представлены в таблице 13.
Таблица 13
-
Регистр
Назначение
Адрес
TBR
Регистр содержимого таймера B
190h
TBCTL
Регистр управления таймера В
180h
TBCCR0
Регистр захвата/сравнения CC0
192h
TBCCTL0
Регистр управления CC0
182h
TBCCR1
Регистр захвата/сравнения CC1
194h
TBCCTL1
Регистр управления CC1
184h
TBCCR2
Регистр захвата/сравнения CC2
196h
TBCCTL2
Регистр управления CC2
186h
TBCCR3
Регистр захвата/сравнения CC3
198h
TBCCTL3
Регистр управления CC3
188h
TBCCR4
Регистр захвата/сравнения CC4
19Ah
TBCCTL4
Регистр управления CC4
18Ah
TBCCR5
Регистр захвата/сравнения CC5
19Ch
TBCCTL5
Регистр управления CC5
18Ch
TBCCR6
Регистр захвата/сравнения CC6
19Eh
TBCCTL6
Регистр управления CC6
18Eh
TBIV
Регистр идентификации прерывания
11Eh
TBR (Timer B Register) –16-ти разрядный регистр текущего содержимого таймера. Регистр доступен как для записи, так и для чтения с помощью словных форм инструкций.
TBCCR 0…6 (Timer B Capture/Compare Register) - 16-ти разрядные регистры захвата/сравнения. В режиме захвата в регистр автоматически записывается содержимое TBR. В режиме сравнения содержимое этих регистров автоматически сравнивается с содержимым TBR для генерации внешнего события. Регистры доступны по записи и чтению с помощью словных форм инструкций.
TBCTL (Timer B Control) – содержит биты управления таймера B. Регистр доступен как для записи, так и для чтения с помощью словных форм инструкций и содержит следующие биты.
15 14 13 12 11 10 9 8
-
- -
TBCLGRP1,0
CNTL1,0
-
TBSSEL1,0
7 6 5 4 3 2 1 0
-
ID 1, 0
MC1,0
-
TBCLR
TBIE
TBIFG
Бит 15 – зарезервирован.
Биты 14, 13 – TBCLGRP (Timer B Compare Latch Group) – группирование загрузки модулей сравнения таймера B.
-
TBCLGRP1
TBCLGRP0
Группы
Ведущий модуль
0
0
нет
нет
0
1
TBCC1+TBCC2
TBCC3+TBCC4
TBCC5+TBCC6
TBCC1
TBCC3
TBCC5
1
0
TBCC1+TBCC2+ TBCC3
TBCC4+ TBCC5+TBCC6
TBCC1
TBCC4
1
1
TBCC0+TBCC1+TBCC2+ TBCC3+
TBCC4+ TBCC5+TBCC6
TBCC1
Биты 12, 11 – CNTL (Counter Length) – длина счетчика.
Комбинация состояния этих бит определяет разрядность таймера B.
-
CNT1
CNT0
Разрядность
Макс. значение таймера
0
0
16 бит
FFFFh
0
1
12 бит
FFFh
1
0
10 бит
3FFh
1
1
8 бит
FFh
Бит 10 – зарезервирован.
Биты 9, 8 – TBSSEL (Timer B Source Select) – выбор источника тактирования таймера B.
-
TBSSEL1
TBSSEL0
Источник
0
0
TBCLK
0
1
ACLK
1
0
SMCLK
1
1
Инвертированный TBCLK
Биты 7, 6 – ID (Input Divider) – комбинация состояния этих бит определяет коэффициент деления входного делителя таймера
-
ID1
ID0
Коэффициент
0
0
1 / 1
0
1
1 / 2
1
0
1 / 4
1
1
1 / 8
Биты 5, 4 – MC (Mode Control) - комбинация состояния этих бит определяет текущий режим таймера
-
MC1
MC0
Режим
0
0
Остановлен
0
1
Up
1
0
Continuous
1
1
Up/Down
Бит 3 – зарезервирован .
Бит 2 – TBCLR (Timer B Clear) – программная установка этого бита вызывает сброс регистра TBR в 0. Бит сбрасывается в 0 автоматически.
Бит 1 – TBIE (Timer B Interrupt Enable ) – установка/сброс этого бита разрешает/запрещает прерывание по переполнению таймера.
Бит 0 – TBIFG (Timer A Interrupt Flag) – флаг требования прерывания. Устанавливается аппаратно при переполнении таймера или программно. Сбрасывается автоматически чтением регистра TBIV.
TBCCTL 0…6 (Timer B Capture/compare Control) – содержат биты управления модулей захвата/сравнения. Все регистры имеют идентичную структуру и доступны по записи и чтению с помощью словных форм инструкций. Регистры содержат следующие биты
15 14 13 12 11 10 9 8
CM1, 0 |
CCIS1,0 |
SCS |
CLLD1,0 |
CAP |
7 6 5 4 3 2 1 0
OUTMOD 2,1,0 |
CCIE |
CCI |
OUT |
COV |
CCIFG |
Биты 15, 14 – CM (Capture Mode) – режим модуля захвата. Определяют тип события для срабатывания модуля захвата.
-
CM1
CM0
Тип события
0
0
Нет захвата
0
1
Растущий фронт
1
0
Падающий фронт
1
1
Любой фронт
Биты 13, 12 – CCIS (Capture/Compare Input Select) – выбирают сигналы для входа модуля захвата.
-
CCIS1
CCIS0
Вход
0
0
CCIA
0
1
CCIB
1
0
GND
1
1
VCC
Для всех модулей, кроме TBCC6, комбинации CCIS – 00b и 01b – идентичны.
Бит 11 – SCS (Synchronize Capture Source) – синхронизация источника захвата. Если этот бит установить в 1 то захват будет производиться синхронно с тактом таймера, в противном случае, захват будет произведен в момент обнаружения внешнего события.
Биты 10, 9 – CLLD (Compare Latch Load) – загрузка защелок при сравнении.
Комбинация этих бит определяет событие, по которому содержимое регистров TBCCRx перезаписывается в защелки TBCLx
-
CLLD1
CLLD0
Событие
0
0
Запись в TBCCRx (буферизации нет)
0
1
TBR досчитывает до 0
1
0
UP и Continuous режимы: TBR досчитывает до 0
UP/DOWN режим: TBR досчитывает до старого значения TBCL0 или до 0
1
1
TBR досчитывает до старого значения TBCLx
В том случае если модули сгруппированы (TBCTL.TBCLGRP≠0), перезапись в TBCLx будет производиться по событию, определенному битами CLLD ведущего модуля. У ведомых модулей биты CLLD не должны быть равны 0, т.к. буферизация выключается. Для групповой загрузки необходимо, чтобы была произведена запись во все регистры TBCCRx, даже в том случае, если данные остаются неизменными.
Бит 8 – CAP (Capture) – установка/ сброс этого бита выбирает режим захвата или сравнения модуля TBCCx соответственно.
Биты 7,6,5 – OUTMOD (Output Mode) – определяют режим работы выходов модуля сравнения.
-
OUTMOD2
OUTMOD1
OUTMOD0
Режим
Действие
0
0
0
Out
TBCCTLx.OUT
0
0
1
Set
1 : TBR=CLx
0
1
0
Toggle/reset
Переключение : TBR=CLx,
0 : TBR=CL0
0
1
1
Set/reset
1 : TBR=CLx, 0 : TBR=CL0
1
0
0
Toggle
Переключение : TBR=CLx
1
0
1
Reset
0 : TBR=CLx
1
1
0
Toggle/set
Переключение : TBR=CLx,
1 : TBR=CL0
1
1
1
Reset/set
0 : TBR=CLx, 1 : TBR=CL0
Бит 4 – CCIE (Capture/Compare Enable) – установка/сброс этого бита разрешает/запрещает прерывания от модуля захвата/сравнения.
Бит 3 – CCI (Capture/Compare Input) – через этот бит читается состояние входа модуля захвата, подключенное битами CCIS этого регистра. Бит доступен только по чтению.
Бит 2 – OUT – содержимое этого бита определяет состояние выхода модуля сравнения, если биты OUTMOD=0.
Бит 1 – COV (Capture Overflow) – переполнения захвата. Устанавливается аппаратно, если при срабатывании модуля захвата, предыдущее захваченное значение таймера не было вычитано из CCRx. Сбрасываться бит должен программно.
Бит 0 – CCIFG (Capture/Compare Interrupt Flag) – флаг требования прерывания. Устанавливается аппаратно при срабатывании модуля захвата/сравнения. Для TBCCTL0 бит сбрасывается аппаратно при вхождении в прерывание или программно. Для TBCCTL1 … TBCCTL6 бит сбрасывается чтением регистра TBIV.
TBIV (Timer B Interrupt Vector) – регистр идентификации прерывания для таймера B. Выполняет функции, аналогичные функциям регистра TAIV (см. п.3.7). В регистре TBIV возможны следующие коды:
0 – нет прерываний;
2 – установлен флаг TBCCTL1.CCIFG;
4 – установлен флаг TBCCTL2.CCIFG;
6 – установлен флаг TBCCTL3.CCIFG;
8 – установлен флаг TBCCTL4.CCIFG;
10 – установлен флаг TBCCTL5.CCIFG;
12 – установлен флаг TBCCTL6.CCIFG;
14– установлен флаг TBCTL.TAIFG.
