СПРАВОЧНАЯ ИНФОРМАЦИЯ ДЛЯ ВЫПОЛНЕНИЯ КУРСОВОГО ПРОЕКТА

Процессор событий TIM08

Модуль TIM08, хотя и носит дословное название «модуль таймерного интерфейса», по сути, является одним из лучших процессоров событий в 8-разрядных МК.

Модуль TIM08 состоит из 16-разрядного таймера-счетчика и некоторого количества связанных с ним полностью идентичных каналов захвата/сравнения. Каждый из каналов в процессе инициализации может быть настроен на один из пяти режимов работы:

– входного захвата;

– небуферированного выходного сравнения;

– буферированного выходного сравнения;

– небуферированной широтно-импульсной модуляции (ШИМ);

– буферированной ШИМ.

Каждый канал захвата/сравнения связан с одним из выводов МК. Функция входного или выходного сигнала модуля процессора событий является альтернативной функцией линий порта Port D. МК MC68HC908GP32 имеет в своем составе два модуля процессора событий – TIM1 и TIM2. Каждый из модулей имеет по два канала захвата/сравнения.

16-разрядный таймер-счетчик служит временной базой для модулей захвата/сравнения. Он подсчитывает импульсы тактовой частоты, поступающие на его вход. Все интервалы времени, которые генерируются или измеряются МК, измеряются числом периодов этой тактовой частоты.

В общем случае (модули TIM08 других МК семейства НС08) таймер-счетчик имеет два источника тактирования:

– внутренний генератор, выполненный на основе программируемого делителя частоты шины МК fbus;

– внешний генератор, подключаемый к выводу TxCLK МК.

Выбор между внутренним и внешним генераторами, а также выбор коэффициента деления программируемого делителя частоты шины КТ|Мх определяется комбинацией битов PS2–PS0 регистра управления таймера-счетчика TxSC. Коэффициент деления КТ|Мх может принимать семь различных значений: 1, 2, 4, 8, 16, 32, 64. Максимальная частота сигнала внешнего генератора, подключаемого ко входу TxCLK, составляет 4 МГц при условии, что МК работает на предельной частоте внутренней шины fbus8 МГц. Про­цессоры событий TIM1 и TIM2 в составе МК MC68HC908GP32 не имеют выводов T1CLK и T2CLK в перечне выводов корпуса и, следовательно, могут использовать для тактиро­вания только встроенный генератор.

Таймер-счетчик временной базы допускает программную установку периода работы. Если не предпринимать специальных действий при инициализации процессора собы­тий, то коэффициент счета счетчика временной базы будет равен 216, т.е. счетчик прохо­дит полный цикл от начального состояния кода $0000 до конечного состояния кода SFFFF. Если таймер-счетчик находится в состоянии $FFFF, то при поступлении на его вход оче­редного тактового импульса наступает переполнение таймера-счетчика. Счетчик пере­ходит в состояние $0000, одновременно устанавливается флаг переполнения TOF. Переполнение счетчика не оказывает влияния на его работу: при поступлении следую­щих тактовых импульсов код в счетчике продолжает нарастать. Коэффициент счета тай­мера-счетчика может быть изменен посредством записи кода желаемого Ксч в двухбай­товый регистр периода TxMOD (TxMODH и TxMODL - старший и младший байты этого регистра, х - номер таймерного модуля, для TIM1 х = 1, для TIM2 х = 2). Вход сброса счетчика подключен к выходу цифрового компаратора, на один из входов которого поступает код текущего состояния таймера-счетчика, а на другой - код Ксч, записанный в регистре TxMOD. Если эти коды равны, то при поступлении следующего так­тового импульса счетчик сбрасывается в «0», и флаг переполнения TOF устанавливает­ся в «1». Диапазон допустимых значений Ксч составляет от 1 до (216-1). Таким образом, дискретность регулирования периода таймера-счетчика, который в режиме ШИМ обра­зует период ШИМ-сигнала, составляет 16 бит.

Предусмотрена возможность пуска и останова таймера-счетчика под управлением программы (бит TSTOP в регистре управления таймером-счетчиком TxSC). Кроме того, счетчик и программируемый делитель частоты могут быть одновременно сброшены по­средством установки в «1» бита TRST в регистре TxSC. При этом все триггеры таймера-счетчика установятся в «О», а программируемый делитель частоты будет настроен на режим единичного коэффициента деления частоты внутренней шины МК. Заметьте, что бит TRST не останавливает работу таймера-счетчика, с приходом очередного тактового импульса состояние счетчика станет равным $0001. Сброс таймера-счетчика рекомен­дуется проводить в следующем порядке:

– остановить таймер-счетчик (бит TSOP = 1);

– выполнить операцию сброса таймера-счетчика (бит TRST = 1);

– переинициализировать биты PS2–PS0 регистра TxSC, которые определяют источник и частоту тактирования;

– разрешить счет таймера-счетчика.

Код таймера-счетчика в процессе счета может быть считан прикладной программой при обращении к регистрам текущего кода TxCNTH и TxCNTL. При обращении к регистру старшего байта код таймера-счетчика автоматически копируется в указанную регистро­вую пару. Поэтому, несмотря на то, что операции чтения старшего и младшего байтов разнесены во времени, вы прочитаете состояние таймера-счетчика в момент обращения к регистру старшего байта TxCNTH. Такое решение предотвращает получение ложной информации в случае, если частота тактирования таймера-счетчика высока, и по этой причине в моменты обращения к регистрам TxCNTH и TxCNTL состояния счетчика раз­личаются. Однако нельзя допускать ситуацию, при которой после прочтения старшего байта младший прочитан, не будет. Повторное чтение старшего байта не сопровождается защелкиванием текущего кода таймера-счетчика в регистрах TxCNTH и TxCNTL.

При переполнении таймера-счетчика устанавливается флаг переполнения TOF в ре­гистре управления TxSC (приложение В) и генерируется запрос на прерывание, если бит разрешения прерывания TOIE установлен в «1», т. е. прерывания по переполнению тай­мера-счетчика разрешены.

Для управления таймером-счетчиком модуля TIM08 предусмотрены пять регистров специальных функций:

TxSC – регистр управления таймером-счетчиком «х», где «х» - имя модуля процессора событий МК (для TIM1 х=1, для TIM2 х=2 );

TxMODH – регистр периода таймера-счетчика (старший байт );

TxMODL – регистр периода таймера-счетчика (младший байт);

TxCNTH – регистр текущего значения таймера-счетчика (старший байт);

TxCNTL – регистр текущего значения таймера-счетчика (младший байт).