Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Таймерные модули



Микроконтроллеры 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-го канала TxCH i, при 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.





Дата публикования: 2014-11-02; Прочитано: 919 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...