4.14.4. Каналы захвата/сравнения
Модуль таймера TIM содержит в себе восемь идентичных блоков захвата/сравнения, которые в микропроцессорной технике принято именовать каналами захвата/сравнения. Структурная схема аппаратных средств одного канала захвата/сравнения в составе модуля таймера МК семейства 68HC12/HCS12 представлена на рис. 4.33.
Рис. 4.33. Структура одного канала сравнения/захвата таймера и регистр выбора режима работы каналов TIOS
Каждый из восьми каналов захвата/сравнения подключен к выводу IOSn, где n — номер канала, n = 0, 1, 2…7. Если канал с номером n конфигурирован как канал захвата, то вывод IOSn автоматически подключается к одноименной линии PTn порта T. Работа в качестве входов подсистемы входного захвата или выходов подсистемы выходного сравнения является альтернативной функцией порта T. Регистр данных порта T расположен по адресу $00AE.
Реализуемая каналом n модуля таймера функция (входной захват или выходное сравнение) определяется битом IOCn регистра TIOC. Регистр расположен по адресу $0080, формат регистра представлен на рис. 4.33. Если бит IOCn установлен в 1, то канал n работает в режиме выходного сравнения. Если же бит IOCn равен 0, то канал n работает в режиме входного захвата.
Аппаратные средства каждого состоят из 16 разрядного регистра данных канала TCn, 16 разрядных регистра защелки и цифрового компаратора, детектора события, формирователя выходного уровня и триггера события канала (рис. 4.33). Каждый канал использует в качестве эталона реального времени общий для всех каналов счетчик временной базы.
Режим входного захвата
Структура аппаратных средств подсистемы входного захвата IC, которая образуется в результате конфигурирования универсального канала модуля таймера на режим захвата, представлена на рис. 4.34. Подсистема входного захвата запоминает код счетчика временной базы в момент изменения логического сигнала на входе IOSn (n — номер канала). Изменение логического сигнала распознается детектором события, который может быть программно настроен на один из четырех режимов работы:
• Распознавание изменения сигнала с 0 на 1 — положительный фронт;
• Распознавание изменения сигнала с 1 на 0 — отрицательный фронт;
• Распознавание любого изменения уровня сигнала;
• Соответствующий вывод МК не подключен к каналу входного захвата и является выводом порта T.
Рис. 4.34. Структура одного канала таймера в режиме входного захвата и регистры управления каналом TCTL3 и TCTL4
Если детектор определил заданное изменение входного сигнала, то говорят, что наступило событие входного захвата. В момент наступления события код счетчика временной базы запоминается в регистре защелке, одновременно устанавливается триггер события канал CnF (рис. 4.34). Триггер может быть считан программно, или генерируется запрос на прерывание, если прерывания от канала n модуля таймера разрешены.
Для настройки детектора события каждого канала на один из трех перечисленных режимов используются биты EDGnB:EDGnA в регистрах TCTL3 ($008A) и TCTL4 ($008B). Формат этих регистров представлен на рис. 4.34. Таблица рис. 4.35 устанавливает соответствие между режимом работы детектора события и кодом инициализации в разрядах EDGnB:EDGnA.
EDGnB: EDGnA |
Режим детектора событий |
00 |
Входной захват не реализуется |
01 |
Мониторинг нарастающего фронта |
10 |
Мониторинг спадающего фронта |
11 |
Мониторинг изменения уровня |
Рис. 4.35.Выбор режима работы детектора события
Подсистема входного захвата IC используемся в микропроцессорной технике для измерения различных временных характеристик импульсных сигналов, таких как период следования, коэффициент заполнения, длительность нулевого или единичного состояния. Так для того, чтобы измерить период импульсной последовательности, необходимо запомнить состояние счетчика временной базы в моменты двух соседних изменений сигнала с 0 на 1 (положительный фронт) или с 1 на 0 (отрицательный фронт). Разность этих значений и составит период повторения импульсного сигнала, выраженный в числе периодов частоты тактирования счетчика временной базы. Таким образом будет произведено измерение в относительных единицах конкретной микропроцессорной системы. Если измерение производится с целью управления, то представление временного параметра в относительных единицах обычно является достаточным. Однако, если измеренный параметр должен быть отображен на дисплее, то он должен быть представлен в универсальных единицах измерения, т.е. в микросекундах, миллисекундах и т.д. Для получения численного значения последнего необходимо полученное число относительных единиц умножить на длительность периода частоты тактирования счетчика временной базы. При программировании на Си операция умножения реализуется с использованием стандартной библиотеки. При программировании на ассемблере Вам потребуются дополнительные знания, поскольку операцию умножения необходимо будет исполнять над двухбайтовыми числами.
Читать дальше