Справочная информация для выполнения курсового проекта
Процессор событий 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 МГц при условии, что МК работает на предельной частоте внутренней шины fbus – 8 МГц. Процессоры событий 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 – регистр текущего значения таймера-счетчика (младший байт).