В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > MAXQ
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Раздел 9: Модуль таймера/счетчика 2

Модуль таймера/счетчика 2 содержит 16- разрядный программируемый таймер/счетчик, способный формировать сигнал с ШИМ. У различных микроконтроллеров семейства MAXQ может быть различное количество модулей таймера/счетчика 2 или вообще не быть.

Таймер 2 - 16-разрядный таймер/счетчик с автоматической перезагрузкой, обеспечивающий реализацию следующих функций:

  • 8-/16- битный таймер/счетчик
  • добавляющий/вычитающий счетчик с автоматической перезагрузкой
  • счетчик внешних импульсов
  • захват данных
  • сравнение
  • расширение функций ввода/вывода

Таймер 2

Значение 16- разрядного Таймера 2 содержится в регистре T2V. Старший байт этого регистра всегда доступен через 8- битный регистр T2H. Когда Таймер 2 работается в режиме двух 8- разрядных таймеров старший байт регистра T2V всегда считывается как x00h и не доступен для записи. Обращение к младшему байту регистра T2V осуществляется через регистр T2L. Аналогичные регистры и условное обозначение используются для регистра перезагрузки Таймера 2 T2R. Старший байт регистра T2R доступен через 8- битный регистр T2RH, а младший байт - через регистр T2RL. Функция захвата/сравнения Таймером 2 обеспечивается при помощи 16- разрядного регистра T2C и 8- разрядного регистра старшего байта T2CH. Для работы Таймеру 2 обычно требуется два вывода, поддерживающих расширенные функции ввода-вывода. В этом разделе первый вывод будет обозначаться как T2P, а второй вывод, который может и не присутствовать у конкретных микроконтроллеров, будет обозначаться как T2PB. Решение о наличии и выборе вывода T2PB должно зависеть от конкретного изделия. В таблице 13 приведены режимы, поддерживаемые Таймером 2, и периферийные регистры, используемые в этих режимах.

Таблица 13. Функции и настройки Таймера/Счетчика 2

Режим T2MD C/nonT2 CCF[1:0] Биты управления
16- разрядный таймер с автоматической перезагрузкой/сравнением 0 0 00 T2OE [1:0] - выход активен (ШИМ)
T2POL [1:0] - выбор полярности входных/выходных данных
SS2 - контроль однократных импульсов
G2EN - стробируемый выход ШИМ
16- разрядный захват (биты CCF[1:0] определяет фронт захвата) 0 0 01, 10 или 11 T2OE [0] = 0
T2POL [0] - выбор уровня строба/фронта перезагрузки
SS2 - однократный захват
G2EN - строб синхроимпульсов таймера (или строб перезагрузки)
CPRL2 - разрешение перезагрузки
16- битный счетчик (CCF[1:0] определяет фронт захвата) 0 1 01, 10 или 11 T2OE [0] = 0
T2OE [1] - выход счетчика импульсов
T2POL [1] - выбор полярности выхода
Два 8- разрядных таймера с автоматической перезагрузкой 1 0 00 T2OE [1:0] - активизация выхода (ШИМ)
T2POL [1:0] - выбор полярности выхода
только T2H:
SS2- контроль однократных импульсов
Захват 8- разрядных данных и 8- разрядный таймер/ШИМ 1 0 01, 10 или 11 только T2H:
T2OE [1] - активизация выхода
T2POL [1] - выбор полярности выхода
только T2H:
T2OE [0] = 0
T2POL [0] - выбор уровня строба/фронта перезагрузки
SS2 - однократный захват
G2EN - строб таймера (или строб перезагрузки)
CPRL2 - разрешение перезагрузки
8- разрядный счетчик и 8- разрядный таймер/ШИМ 1 1 01, 10 или 11 только T2L:
T2OE [1] - активизация выхода
T2POL [1] - выбор полярности выхода
только T2L:
T2OE [0] = 0

Режимы работы

Как показано в Таблице 13, Таймер 2 может работать в одном из шести режимов. Выбор режима работы Таймера 2 показан на рисунке 23, а на рисунке 24 показана возможность формирования таймером сигнала с ШИМ.

Выбор режима работы Таймера 2
Рисунок 23. Выбор режима работы Таймера 2

Активизация выхода и контроль полярности
Рисунок 24. Активизация выхода и контроль полярности

16- разрядный таймер: Автоматическая перезагрузка/Захват

16-разрядный режим автоматической перезагрузки/захвата для Таймера 2 активизируется, когда бит выбора режима Таймера 2 (T2MD) и оба бита определения режима захвата/сравнения сброшены в 0 (CCF[1:0] = 00b). Значения Таймера 2 содержатся в регистре T2V. Служебный бит запуска Таймера 2 (TR2) активизирует и запускает 16-разрядный таймер. В качестве входных синхроимпульсов для 16-разрядного Таймера 2 используются системные синхроимпульсы, разделенные на коэффициент, определяемый битами T2DIV [2:0]. Считать таймер начинает от значения, содержащегося в регистрах T2L:T2H. После переполнения, в таймер вместо значения x0000h загружается значение, содержащееся в регистрах начального значения (T2RH:T2RL). Каждый раз при переполнении происходит установка флага переполнения TF2. Если разрешено прерывание от Таймера 2 (ET2 = 1), то флаг TF2 может сформировать запрос на прерывание. При работе в режиме сравнения идет постоянное сравнение содержимого Таймера 2 с регистрами захвата/сравнения (T2CH:T2CL). При совпадении значений происходит установка флага захвата/сравнения TCC2. Если разрешено прерывание от Таймера 2 (ET2 = 1), то произойдет формирование запроса на прерывание. Если содержимое регистров захвата/сравнения не равно значению регистра Таймера 2, то флаг TCC2 установлен не будет. Выходной сигнал таймера может использоваться для синхронизации внутренних периферийных модулей и/или быть выведен на один или несколько выводов микроконтроллера.

Активизация выхода (ШИМ)

Биты активизации выхода (T2OE [1:0]) позволяют выводить выходной сигнал Таймера 2 на соответствующие выводы микроконтроллера. Если Таймер 2 имеет один вывод ввода - вывода, то бит T2OE [0] ассоциируется с выводом T2P, а бит T2OE [1] вообще не реализован, так как не имеет смысла.

Управление полярностью

Биты управления полярностью (T2POL [1:0]) могут использоваться для изменения (инверсии) разрешенного вывода. Сравнение выходного сигнала таймера с этими битами осуществляется при помощи сумматора по модулю два, поэтому, если бит T2POL [x] установлен в 1, то при высоком логическом сигнале на выходе таймера, непосредственно на выводе будет присутствовать логический ноль. Изменять бит T2POL [n] можно в любое время, но изменение вступит в силу только при изменении состояния бита T2OE [n] из 0 в 1.

Стробирование

Чтобы использовать вывод T2P в качестве строба входного сигнала таймера, бит T2OE [0] должен быть сброшен в 0, а бит G2EN должен быть установлен в 1. Когда T2OE [0] = 1, установка бита G2EN не имеет никакого значения. Когда бит T2OE [0] сброшен в 0, то для изменения полярности входного сигнала используется соответствующий бит контроля полярности. В режиме стробирования входные синхроимпульсы Таймера 2 пропускаются при совпадении значений на этом выводе и бита T2POL [0]. Это значит, что по умолчанию на выводе Т2Р должен быть ноль (так как по умолчанию T2POL [0] = 0). Установка бита T2POL [0] в 1 позволяет синхроимпульсам поступать на вход Таймера 2. Обратите внимание, что если у Таймера 2 имеется несколько внешних выводов (то есть, T2P, T2PB), то первый вывод может использоваться для стробирования входа, а второй - для стробирования выходного сигнала с ШИМ (если T2OE [1] = 1).

Однократный режим (и стробирование)

16- разрядный однократный режим используется для автоматизации формирования одиночных импульсов под управлением программы или для формирования ответа на внешний сигнал (одиночный строб). Чтобы генерировать однократные выходные импульсы исключительно под управлением программы, бит G2EN должен быть сброшен в 0, выход активизирован, контроль полярности должен быть установлен в соответствии с требованиями приложения, а бит активизации однократного режима - установлен в 1. Запись бита однократного режима не отменит условия TR2 = 0 до тех пор, пока Таймер 2 не переполнится. После переполнения таймера происходит автоматическая очистка бита однократного режима.

Запись битов SS2 и TR2 = 1 в одно время приведет к тому, что бит SS2 останется неизменным до того момента, пока не произойдет переполнения/перезагрузки; однако, с момента установки бита TR2 в 1, на указанном выходе ШИМ сигнал присутствует даже после очистки бита SS2.

Если Таймеру 2 доступны два вывода, то поддерживается дополнительный режим: однократное стробирование. В режиме однократного стробирования вывод T2P должен использоваться как вход (T2OE [0] = 0). Также необходимо, чтобы G2EN = 1, что позволяет осуществлять контроль при помощи сигнала на втором выводе. Если G2EN разрешен, и SS2 устанавливается в 1, то сначала необходимо отменить условие стробирования. После удаления строба синхронизации начинается однократный режим. Так же, как описано выше, состояние бита SS2 = 1 остается в силе до переполнения/перезагрузки. Обратите внимание, что это позволяет в однократном режиме охватить несколько стробируемых/нестробируемых интервалов. После того, как SS2 = 1 (если TR2 = 1),начинается режим стробирования ШИМ. В противном случае (TR2 = 0), Таймер 2 останавливается.

Управление захватом/перезагрузкой

В режиме 16-разрядного сравнения бит CPRL2 не используется.

16- разрядный таймер: режим захвата

В 16- разрядном режиме сравнения необходимо чтобы было изменение состояния какого-то параметра. Обычно захват происходит по фронту. Биты CCF[1:0] определяют по какому фронту идет захват (по нарастающему или спадающему). Если CCF [1:0] = 01b, то захват осуществляется по нарастающему фронту. Если CCF [1:0] = 10b, то захват происходит по спадающему фронту. Если CCF [1:0] = 11b, то захват происходит как по нарастающему, так и по спадающему фронтам. Бит CPRL2 дает возможность и захвату и перезагрузке происходить по указанному фронту (фронтам).

Активизация выхода

В 16- разрядном режиме захвата активизация выхода бессмысленна. До тех пор, пока регистры захвата/сравнения используются для захвата данных, формирование выходного сигнала невозможно.

Контроль полярности

До тех пор, пока не активизирован выход, значение битов контроля полярности (T2POL [1:0]) не имеют никакого значения . Бит T2POL [0] используется для определения условия строба в однократном режиме захвата (если G2EN = 1). Если захват и перезагрузка определены для обоих фронтов (CPRL2 = 1 и CCF [1:0] = 11b), то бит T2POL [0] может использоваться для определения того, какой фронт не вызовет перезагрузку при стробировании (если G2EN бит = 1). Когда бит SS2 используется для задержки запуска таймера (для обоих фронтов захвата), бит T2POL [0] также определяет, какой фронт начинает/заканчивает однократный процесс.

Детектирование фронта

Детектирование фронта было описано выше (определяется битами CCF [1:0]).

Стробирование

Если стробирование определено, то оно использует бит T2POL [0], чтобы определить, при каких условиях необходимо входные синхроимпульсы Таймера 2 пропускать (аналогично описанному выше режиму сравнения). Этот режим может использоваться, для измерения длительности импульсов. Также этот режим может использоваться для формирования прерывания при наличии длительного высокого или низкого импульса. Обратите внимание, что, если бы захват был определен для обоих фронтов, то стробирование было бы не нужно, так как привело бы к избыточности данных. По этой причине, когда бит G2EN = 1 и CCF [1:0] = 11b, бит T2POL [0] используется для определения того, какой фронт используется только для захвата когда CPRL2 = 1 (стробирование событий перезагрузки).

Однократный режим

Бит однократности отменяет установки бита TR2 = 0 для захвата данных между фронтами (как определено битами CCF [1:0]). Однократный режим вступает в силу (запускает таймера) только после обнаружения определенного битами CCF [1:0] фронта или после пропадания строба. В то время как захват и/или перезагрузка могут произойти по запускающему фронту, флаг прерывания не будет установлен до тех пор, пока не закончится однократный режим. Если определено срабатывание по одному фронту, то однократный режим может использоваться для измерения периода. Если активизировано стробирование, то можно измерить длительность самого импульса. Если определен режим срабатывания по фронту, то бит T2POL [0] определяет, какой фронт запускает однократный режим, но запускающий фронт не приводит к установки флага прерывания. Если T2POL [0] = 1, то спадающий фронт запускает и останавливает однократный режим. Это важно для измерения периода.

Захват и перезагрузка

Бит CPRL2 активизирует захват и перезагрузку по определенному фронту (фронтам). Единственное исключение, это когда бит G2EN установлен в 1. Когда бит G2EN установлен в 1, по указанному в T2POL [0] фронту перезагрузки не происходит: когда T2POL [0] = 0 перезагрузку не вызовет спадающий фронт; а если T2POL [0] = 1, то нарастающий фронт не вызовет перезагрузку.

16- разрядный счетчик

Режим 16- разрядного счетчика активизируется путем установки бита C/nonT2 в 1. Когда C/nonT2 = 1, в зависимости от состояния битов CCF [1:0] биты осуществляется подсчет нарастающих, спадающих или обоих фронтов. Если CCF [1:0] = 00b, то подсчет фронтов осуществляться не будет и регистр счетчика T2H:T2L будет не будет изменяться до тех пор, пока не будет определен фронт счета. После переполнения в регистр вместо значения x0000h загружается значение, содержащееся в регистре T2R. При переполнении происходит установка флага переполнения TF2. Если разрешено прерывание от Таймера/Счетчика 2 (ET2 = 1), то флаг TF2 может сформировать запрос на прерывание. В режиме счетчика регистр захвата/сравнения T2C постоянно сравнивается с самим счетчиком. Если происходит совпадение значений, то устанавливается флаг TCC2. Если разрешено прерывание (ET2 = 1), то при совпадении формируется запрос на прерывание. Если же значения счетчика и регистра захвата/сравнения не совпадают, то флаг TCC2 не устанавливается.

Активизация выхода

Для Таймера 2, находящегося в режиме счетчика, вывод T2P должен использоваться как вход. Таким образом, когда C/nonT2 = 1, то бит T2OE [0] игнорируется. Бит T2OE [1] может использоваться в качестве выхода для формирования на T2PB сигнала, соответствующего состояниям сравнения и переполнения счетчика.

Контроль полярности

Имеет значение только бит T2POL [1]. Когда выход T2PB активизирован, этот бит может определить начальное состояние вывода T2PB. Бит T2POL [1] может быть изменен в любое время, однако назначенное состояние бита T2POL [1] вступит в силу на внешнем выводе только после изменения состояния бита T2OE [1] с 0 на 1.

Стробирование и однократный счет

В режиме 16- разрядного счетчика стробирование и однократный счет не поддерживаются. Биты G2EN и SS2 не должны быть установлены в 1 при работе в режиме счетчика (C/nonT2 = 1).

Два 8- битных таймера

Инициализация режима двух 8- битных таймеров производится путем установки бита T2MD в 1. Когда T2MD = 1, каждый 16- разрядный регистр, связанный с Таймером 2, разбивается на два 8- разрядных регистра, обеспечивающих работу двух 8- битных таймеров. Таким образом, первый 8- битный таймер использует регистры T2H (состояние таймера), T2RH (начальное значение), T2CH (значение захвата/сравнения), а второй - регистры T2L (состояние таймера), T2RL (начальное значение) и T2CH (значение захвата/сравнения). В качестве входных синхроимпульсов для этих счетчиков могут использоваться те же источники, которые используются и 16- разрядным счетчиком. Выходные сигналы этих двух счетчиков (T2L и T2H) доступны другим внутренним периферийным устройствам. Второй 8- битный таймер/счетчик имеет свой собственный бит запуска TR2L и флаги прерывания TF2L, TC2L.

Активизация выхода (ШИМ)

Бит активизации выхода T2OE [1:0] позволяет подключить выходы 8- разрядных таймеров/счетчиков к соответствующим выводам микроконтроллера. Подключение выхода таймера T2H к выводу T2P контролирует бит T2OE [0], а выхода таймера/счетчика T2L к выходу T2PB контролирует бит T2OE [1]. Если Таймер 2 имеет один вывод, то требуется только бит T2OE [0], поскольку второй таймер T2L не может быть подключен к выводу, а может служить только внутренним таймером.

Контроль полярности

Биты контроля полярности T2POL [1:0] могут использоваться для изменения (инверсии) выходных синхросигналов на выводах. Начальным значением активного выхода синхроимпульсов (определенного битами T2OE [1:0]) является логическое состояние битов T2POL [1:0], которое изменяется каждый раз при сравнении переполнении. Биты T2POL [1:0] суммируются по модулю два с выходными сигналами таймеров. Однако установленное значение битов T2POL [n] вступает в силу только при изменении бита T2OE [n] с 0 на 1. Если у Таймера 2 имеется только один выход, то бит T2POL [1] не требуется.

Стробирование

Чтобы использовать вывод T2P как G2EN, бит T2OE [0] должен быть сброшен в 0, а бит G2EN должен быть установлен в 1. Когда T2OE [0] = 1, установка бита G2EN не имеет никакого значения. Когда T2OE [0] сброшен в 0, то для изменения полярности входного сигнала таймера используется соответствующий бит контроля полярности. В режиме стробирования входные синхроимпульсы T2H пропускаются в любое время, когда внешний сигнал соответствует состоянию бита T2POL [0]. Это значит, что заданное по умолчанию условие стробирования синхроимпульсов, связанное с выводом T2P, является низким (T2POL [0] = 0). Обратите внимание, что второй 8- битный таймер T2L не может стробироваться. Также, так как осуществляется индивидуальное разрешение выходов T2OE [1:0], то стробирования ШИМ выхода не возможно.

Однократный счет

Режим однократного счета реализуется только у основного 8- разрядного счетчика (T2H). Однократный режим используется для автоматизации программного формирования импульсов. Для программного формирования одиночных импульсов бит G2EN должен быть сброшен в 0, выход активизирован, контроль полярности должен быть настроен в соответствии с требованиями приложения, а бит однократного преобразования должен быть установлен в 1. Запись бита однократного счета эффективно отменяет условие TR2 = 0 до тех пор, пока не происходит переполнение/перезагрузка таймера. Одновременная запись битов SS2 и TR2 = 1 все еще заставляет бит SS2 остаться в эффективном значении до переполнения/перезагрузки таймера. Однако определенный ШИМ выход продолжается с момента установки TR2 в 1.

Режим 8- разрядного таймера/8- разрядного сравнения

Когда биты CCF [1:0] = 00b, то основной таймер T2H находится в режиме захвата фронтов. Второй таймер (T2L) всегда остается в режиме таймера/сравнения и не поддерживает функцию захвата данных. Контроль захвата 8- битных данных идентичен контролю захвата 16- разрядных данных, за исключением того, что используется только регистр T2H.

Одна разница в том, что второй таймер может использоваться для формирования сигнала с ШИМ, а первый также способен работать и в режиме захвата данных.

8- битный таймер/8- битный счетчик

Так же, как в 16- разрядном режиме, установка бита C/nonT2 в 1 позволяет выводу T2P работать в качестве входа счетчика. Участвующие в счете фронты определяются состоянием битов CCF [1:0] биты. В режиме счетчика может работать только основной таймер/счетчик (T2H). Режим работы этого счетчика полностью аналогичен режиму работы 16- разрядного счетчика. Так же, как и в описанном выше случае разбиения таймера/счетчика 2, второй таймер может формировать на выходе T2PB сигнал с ШИМ.

Выбор источника синхронизации Таймера 2

На рисунке 25 показан источник синхронизации Таймера 2. Источник синхронизации Таймера 2 определяется битом T2CI, а коэффициент деления встроенного предварительного делителя для этого таймера определяется битами T2DIV регистра T2CFG. Обратите внимание, что, когда T2CI установлен в 1, то в качестве источника синхросигнала выбирается дополнительный встроенный 32 кГц генератор. Частота альтернативного синхросигнала не должна превышать дленную на 4 частоту системных синхроимпульсов.

Синхронизация Таймера 2
Рисунок 25. Синхронизация Таймера 2



<-- Предыдущая страница Оглавление Следующая страница -->