Лекция: Таймерные модули

Микроконтроллеры MC68HC908GP32 содержат два таймерных модуля TIM08-1 и TIM08-2, которые которые выполняют широкий набор таймерных функций, включая фиксацию времени поступления входных сигналов (режим «захвата»), выдачу выходных сигналов в заданный момент времени (режим «совпадения»), формирование широтно-импульсных (ШИМ) сигналов. В состав микроконтроллеров дополнительно введен модуль базового таймера TBM08, который обеспечивает периодическое формирование запросов прерывания процессора. В данном разделе рассматривается функционирование этих вариантов таймерных модулей.

Таймерный модуль TIM08 (Timer Interface Module – 08) содержит блок таймера-счетчика, структура которых показана на рис. 24. Каждый из модулей имеет два таймерных каналов, выводы которых служат для приема внешних сигналов, время поступления которых фиксируется, или для выдачи выходных сигналов в заданные моменты времени.

 

 

 

Рис.24. Структура блока таймера-счетчика (а) и таймерного канала (б) в таймерном модуле TIM08

 

Каждый блок счетчика-таймера содержит 16-разрядный счетчик TxCNT, 16-разрядный регистр модуля счета TxMOD и 8-разрядный регистр управления-состояния TxSC, где символ x принимает значение 1 или 2 (для серии GP), Каждый таймерный канал содержит 16-разрядный регистр данных TxCHi и 8-разрядный регистр управления-состояния канала TxSCi, где в качестве символа i указывается номер соответствующего канала: i = 0, 1, 2, 3, 4, 5 или 6.

Входы-выходы таймерных каналов TxCHi совмещены с выводами параллельных портов, реализуя при работе модулей TIM08 альтернативные функции. В табл. 20 указано, какие выводы портов используются соответствующими таймерными каналами в различных сериях микроконтроллеров.

Таблица 20. Альтернативные функции выводов порта D

при работе таймерных каналов модуля TIM08

 

Выводы таймерных модулей Выводы порта D
T(A)CH0 (T1CH0) PTD4
T(A)CH1 (T1CH1) PTD5
T(A)CH2
T(A)CH3
T(A)CLK
TBCH0 (T2CH0) PTD6
TBCH1 (T2CH1) PTD7
TBCLK

 

Регистры таймерных модулей имеют свои адреса, которые приведены в табл. 21. Запись-считывание содержимого 16-разрядных регистров производится как обращение к двум 8-разрядным регистрам, один из которых содержит старший байт и отмечается суффиксом h, а второй содержит младший байт и отмечается суффиксом l, например TxMODh-TxMODl.

Tаблица 21. Адреса регистров таймерных модулей

 

Модуль TIM08-1 Модуль TIM08-2
Блок таймера Регистр Адрес Блок таймера Регистр Адрес
Блок Счетчика-таймера T1SC $0020 Блок счетчика-таймера T2SC $002B
T1MODh-l $0021-22 T2MODh-l $002C-2D
T1CNTh-l $0023-24 T2CNTh-l $002E-2F
Таймерный канал 0 T1SC0 $0025 Таймерный канал 0 T2SC0 $0030
T1CH0h-l $0026-27 T2CH0h-l $0031-32
Таймерный канал 1 T1SC0 $0028 Таймерный канал 1 T1SC0 $0033
T1CH0h-l $0029-2A T2CH0h-l $0034-35

 

Функционирование счетчика-таймера в модуле TIM08 определяется содержимым регистра TxSC, биты которого имеют следующее назначение (рис.25, а):

TOF – признак переполнения таймера (доступен только для чтения), принимает значение TOF=1, если содержимое счетчика TxCNT достигает максимального значения, заданного содержимым регистра TxMOD;

TOIE – разрешает при значении TOIE=1 формирование запроса прерывания при переполнении счетчика (признак TOF=1);

TSTOP – вызывает остановку переключения счетчика TxCNT при установке значения бита TSTOP=1;

TRST – вызывает при установке значения TRST=1 сброс содержимого счетчика TxCNT в состояние $0000 и установку значения битов PS2-0=000 (доступен только для записи, устанавливается в 0 после сброса TxCNT в нулевое состояние);

PS2-0 – определяют коэффициент деления частоты Kd при формировании сигналов, переключающих счетчик TxCNT (см. табл.22).

 

 

TOF TOIE TSTOP TRST PS2 PS1 PS0

а) TxSC

CHiF CHiIE MSiA ELSiB ELSiA TOVi CHiMAX

б) TxSCi

Рис. 25. Форматы содержимого таймерных регистров TxSC, TxSCi

 

При запуске микроконтроллера счетчик TxCNT устанавливаеся в начальное состояние $0000, после чего производится его переключение сигналами с частотой Fc = Ft/Kd, где коэффициент деления Kd определяется значением битов PS2-0 в регистре TxSC (см. табл. 22). Остановка и последующий запуск счетчика производится путем установки соответствующего значения бита TSTOP в регистре TxSC. Счетчик сбрасывается в состояние $0000 при установке значения бита TRST=1. Модуль счета Mc задается содержимым регистра TxMOD и может иметь значение от 0 до 65535. При запуске микроконтроллера все биты в регистре TxMOD принимают значение 1. Когда содержимое счетчика TxCNT достигает значения, записанного в TxMOD,счетчик сбрасывается в нулевое состояние. При этом устанавливается значение признака переполнения TOF=1, что вызывает прерывание процессора, если в регистре TxSC значение бита TOIE=1. Вектора прерываний по переполнению таймеров размещаются в соответствующих позициях таблицы векторов (см. табл.10 в разделе 5).

Текущее содержимое TxCNT доступно только для чтения. При этом следует сначала считать значение старшего бита (регистр TxCNTh), а затем значение младшего бита (регистр TxCNTl). При чтении старшего бита значение младшего автоматически фиксируется в регистре TxCNTl, поэтому после его считывания будет получено фактическое содержимое TxCNT на момент обращения к регистру TxCNTh.

 

Таблица 22. Коэффициенты деления частоты Kd

для таймерных модулей

 

TIM08 TBM08
PS2-0 Kd TBR2-0 Kd
Не используется

 

Функционирование i-го таймерного канала определяется содержимым его регистра управления-состояния TxSCi, который имеет следующие биты (рис.25, б):

CHiF – признак срабатывания i-го канала (доступен только для чтения), принимает значение CHiF=1, если канал фиксирует поступление входного сигнала (в режиме захвата) или формирует выходной сигнал (в режиме совпадения);

CHiIE – разрешает при значении CHiIE=1 формирование запроса прерывания при срабатывании i-го канала (установка признака CHiF=1);

MSiB, MSiA – определяют режим работы i-го канала (табл. 23);

ELSiB, ELSiA – определяют вид входного сигнала в режиме захвата или уровень выходного cигнала в режиме совпадения (табл.23);

TOVi – задает вариант изменения сигнала на выходе TCHi канала, работающего в режиме совпадения или формирования ШИМ-сигналов, при переполнении счетчика таймера: сохранение текущего состояния при значении TOVi=0, изменение состояния на противоположное при значении TOVi=1;

CHiMAX – задает выбор коэффициента заполнения Q формируемых ШИМ-сигналов: при значении CHiMAX=0 коэффициент Q определяется содержимым регистра данных i-го канала TxCHi, при CHiMAX=1 коэффициент Q=1.

Для каждого таймерного канала в таблице векторов прерываний (табл.10) содержится отдельный вектор, определяющий выбор соответствующей подпрограммы обработки прерываний (см. раздел 5). Сброс в состояние 0 признака CHiF, вызывающего запрос прерывания при срабатывании i-го канала, производится при выполнении чтения содержимого регистра TxSCiи последующей записи 0 в качестве бита CHiF в этом регистре. Эти операции должны выполняться подпрограммой обработки прерываний данного канала.

 

Таблица 23. Режимы работы таймерных каналов модуля TIM08

 

Режим канала MsiB-A ELSiB-A Использование вывода TxCHi
Параллельный ввод-вывод данных X 0 0 0 Вывод параллельного порта (начальное состояние – 1)
X 1 0 0 Вывод параллельного порта (начальное состояние – 0)
Режим захвата 0 0 0 1 Захват при положительном перепаде сигнала TxCHi
0 0 1 0 Захват при отрицательном перепаде сигнала TxCHi
0 0 1 1 Захват при любом перепаде сигнала TxCHi
Режим совпадения или выдачи ШИМ-сигнала (без буферизации) 0 1 0 1 Изменение уровня на выводе TxCHi при совпадении
0 1 1 0 Установка 0 на выводе TxCHi при совпадении
0 1 1 1 Установка 1 на выводе TxCHi при совпадении
Режим совпадения или выдачи ШИМ-сигнала (с буферизацией) 1 X 0 1 Изменение уровня на выводе TxCHi при совпадении
1 X 1 0 Установка 0 на выводе TxCHi при совпадении
1 X 1 1 Установка 1 на выводе TxCHi при совпадении

 

Каждый канал таймера может работать в режиме захвата, совпадения или формирования ШИМ-сигналов в зависимости от значения битов MSiB-A и ELSiB-A в регистре TxSCi(табл.23).

При значении битов ELSiB-A=00 соответствующий вывод используется для обмена данными через параллельный порт, то-есть данный таймерный канал не подключен к внешнему выводу. При этом исходный уровень сигнала на этом выводе определяется значением бита MSiA (см. табл.23).

В режиме захвата (значения битов MSiB-A=00) приход сигнала на вход TxCHi таймерного канала вызывает запись текущего содержимого счетчика TxCNT в регистр данных канала TxCHi, фиксируя таким образом время поступления сигнала. При этом в регистре TxCSi устанавливается значение признака CHiF=1, которое вызывает формирование запроса прерывания, если значение бита разрешения прерывания CHiIE=1. Вид сигнала, фиксируемого в режиме захвата, определяется значением битов ELSiB-A (см. табл.23) – положительный или отрицательный перепад потенциала на входе TxCHi, либо любое изменение состояния этого входа. Последующее считывание содержимого регистра TxCHi позволяет определить время поступления сигнала на вход TxCHi.

В режиме совпадения (значения битов MSiB-A=01) в регистр данных TxCHi соответствующего канала предварительно записывается код Kc, задающий время срабатывания. Когда содержимое счетчика TxCNT становится равным этому коду, на выход TxCHi соответствующего канала выдается сигнал совпадения, и в регистре TxSCiустанавливается значение признака CHiF=1. Вид выходного сигнала, выдаваемого в режиме совпадения, определяется значением битов ELSiB-A (см. табл.23) – установка уровня 0 или 1 на выходе TxCHi, либо изменение состояния этого выхода на противоположное. Установка признака CHiF=1 вызывает формирование запроса прерывания таймера, если значение бита разрешения прерывания CHiIE =1.

При работе канала в режиме совпадения возможен пропуск момента совпадения, когда происходит изменение (перезагрузка) содержимого регистра TxCHi, определяющего момент формирования выходного сигнала. Если загружаемый в TxCHi код Kc оказывается меньше, чем текущее содержимое счетчика TxCNT в момент загрузки, то совпадение будет зафиксировано только в следующем цикле работы счетчика (после переполнения и сброса в нулевое состояние). Таким образом в течении текущего цикла работы счетчика на выход TxCHi не будет выдан сигнал совпадения.

В режиме совпадения таймерный модуль обеспечивает формирование сигналов с широтно-импульсной модуляцией (ШИМ) на выходе TxCHi, если при переполнении счетчика TxCNT реализовать изменение состояния этого выхода на противоположное с помощью соответствующей подпрограммы обработки прерывания. В этом случае на выходе TxCHi будут формироваться импульсы длительностью Tp = Kc/Fc с периодом Tc = Mc/Fc. Таким образом для формируемых ШИМ-сигналов обеспечивается коэффициент заполнения

Q = Tp/Tc = Kc/Mc,

где Kc и Mc – содержимое регистров TxCHi и TxMOD. При изменении коэффициента заполнения ШИМ-сигналов путем загрузки в регистр TxCHi нового значения Kc возможен пропуск одного импульса, если загрузка производится в момент, когда содержимое счетчика TxCNT больше, чем загружаемое значение Kc.

Таким образом при изменении значения Kc в режиме совпадения возможен пропуск пропуск момента совпадения или потеря импульса при формировании ШИМ-сигналов. Исключить такие ошибки можно путем реализации режима совпадения с буферизацией.

Режим совпадения с буферизацией обеспечивается при установке в регистре TxSCiзначения бита MSiB=1 (табл.23). Для реализации этого режима используются регистры данных двух таймерных каналов, поэтому каналы 0-1 попарно объединяются. Канал с номером 0 работает в режиме совпадения с буферизацией, используя регистр данных канала с нечетным номером в качестве буфера для загрузки нового кода Kc. Регистр TxSC0 канала с номером 0 задает режим его работы. Для выдачи сигналов совпадения или ШИМ-сигналов в этом режиме используется выход TxCH0. Канал с номером 1 переводится в нерабочее состояние путем установки в его регистре TxCH1значения битов ELSiB-A=00 (соответствующий вывод может использоваться параллельным портом).

При работе канала в этом режиме значения кода совпадения Kc могут быть записаны в любой из регистров TxCHi данной пары. В начале каждого цикла работы счетчика (после его сброса в 0) выбирается тот из регистров данной пары, в который производилась более поздняя запись, и его содержимое используется в качестве значения кода совпадения в текущем цикле. Для последующей смены значения Kc соответствующий код должен быть записан в другой регистр TxCHi данной пары. Тогда в следующем цикле работы счетчика TxCNT из этого регистра будет выбрано новое значение кода сравнения Kc. Таким образом путем поочередной записи новых значений Kc в один или другой регистр TxCHi данной пары можно производить изменения времени выдачи сигнала совпадения на выход четного канала. Эти сигналы будут формироваться в каждом цикле работы счетчика, то-есть исключается воможность пропуска момента совпадения, которая имелась при работе канала в обычном режиме совпадения (без буферизации).

В режиме совпадения с буферизацией можно обеспечить формирование ШИМ-сигналов на выходе канала с номером 0, реализуя изменение состояния выхода на противоположное при очередном переполнении счетчика (как и обычном режиме совпадения). При этом регистры TxCHi пары каналов используются для записи кода Kc, определяющего коэффициент заполнения ШИМ-сигналов, формируемых на выходе канала 0 данной пары. В каждом цикле работы счетчика TxCNT канал 0 выбирает значение Kc из того регистра TxCHi пары, в который производилась последняя запись. При этом другой регистр пары может использоваться для загрузки нового значения Kc, которое будет определять коэффициент заполнения в следующем цикле работы счетчика. Таким образом при формировании ШИМ-сигналов с буферизацией на выходе канала TxCH0 будет формироваться импульс в каждом цикле работы счетчика, то-есть исключается возможность пропуска выходного импульса при изменении коэффициента заполнения путем загрузки нового значения Kc.

Отметим, что при формировании ШИМ-сигналов (с буферизацией или без нее) можно обеспечить выдачу на выход канала сигнала с максимальным коэффицентом заполнения Q=1, если установить в регистре TxSCi данного канала значение бита CHiMAX=1 (см. рис.25, б). Формирование сигнала на выходе TxCHi для этого случая показано на рис. 26. При установке бита CHiMAX=1 выход TxCHi устанавливается в 1 в следующем цикле работы счетчика (после его сброса в 0 при переполнении) и сохраняет это значение, пока в каком либо из последующих циклов в регистр TxSCi не будет записано значение CHiMAX=0. После этого, начиная со следющего цикла работы счетчика, будет продолжено формирование ШИМ-сигналов с заданным значением коффициента Q на выходе TxCHi.

 

 

Рис. 26. Формирование ШИМ-сигналов с максимальным коэффициентом заполнения Q=1 при установке значения бита CHiMAX=1

Модуль базового таймера TBM08, который входит в состав микроконтроллеров серии GP, выполняет периодическое формирование запросов прерывания. Модуль TBM08 содержит 15-разрядный базовый счетчик, который переключается с частотой Fq, задаваемой кварцевым резонатором. Таймер работает под управлением регистра TBCR(адрес $001C), биты которого имеют следующее назначение (рис. 27):

TBIF – признак переполнения базового счетчика (доступен только для чтения), принимает значение TBIF=1, если содержимое счетчика достигает максимального значения, задаваемого битами TBR2-0;

TBR2-0 – задают коэффициент деления частоты Kd, определяющий момент переполнения базового счетчика (см. табл. 22);

TASK – подтверждает получение процессором запроса на прерывание при переполнении базового счетчика (доступен только для записи), при записи значения TASK=1 производится сброс признака переполнения в состояние TBIF=0;

TBIE – разрешает при значении TBOIE=1 формирование запроса прерывания при переполнении счетчика (признак TBIF=1);

TBON – разрешает при установке значения TBON=1 работу базового таймера; при установке значения TBON=0 таймер выключается, и базовый счетчик сбрасывается в нулевое состояние.

При запуске микроконтроллера все биты в регистре TBCR принимают значение 0.

 

TBIF TBR2 TBR1 TBR0 TASK TBIE TBON

 

Рис.27. Формат содержимого регистра управления-состояния TBCR модуля TBM08

 

Модуль TBM08 формирует запросы прерывания при переполнении базового счетчика (установке признак TBIF=1), если в регистре TBCR установлено значение бита TBIE=1. Таким образом реализуются прерывания с периодом Ti = Kd/Fq, при которых обеспечивается обращение к вектору прерывания, расположенному по адресу $FFDC-DD (см. табл.10). Обработчик прерывания должен подтвердить обслуживание очередного запроса путем установки в регистре TBCR значения бита TASK=1. При этом производится сброс в 0 значения признака TBIF.

В режиме ожидания модуль TBM08 продолжает свою работу, обеспечивая переход микроконтроллера в рабочий режим по запросу прерывания при переполнении базового счетчика.

В режиме останова этот модуль также продолжает функционировать, если разрешена работа генератора CGM08 путем установки значения бита OSCSTOPENB=1 в регистре конфигурации CONFIG2 (см. рис.17, б в разделе 8). Таким образом при переполнении базового счетчика будет формироваться запрос прерывания, который обеспечит переход микроконтроллера в рабочий режим, если в регистре TBCRустановлено значение бита TBIE=1.

еще рефераты
Еще работы по информатике