Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
Выбор пониженной частоты межмодульных магистралей МК
SLDV[2:0] Коэффициент деления 2х При частоте внешнего кварцевого резонатора 16 МГц 8 МГц 4 МГц 000 1 8 МГц 4 МГц 2 МГц 001 2 4 МГц 2 МГц 1 МГц 010 4 2 МГц 1 МГц 500 кГц 011 8 1 МГц 500 кГц 250 кГц 100 16 500 кГц 250 кГц 125 кГц 101 32 250 кГц 125 кГц 62,5 кГц 110 64 125 кГц 62,5 кГц 31,2 кГц 111 128 62,5 кГц 31,2 кГц 15,6 кГцРис. 4.24. Формат регистра SLOW
Вы можете заинтересоваться, а зачем понижать частоту тактирования МК? Ведь тогда снизится его вычислительная производительность. Дело в том, что энергия потребления МК пропорциональна частоте его тактирования. Поэтому для достаточно медленных приложений, которые не требуют большой вычислительной производительности, частоту тактирования можно снизить ради экономии энергопотребления устройства управления. Понижение частоты тактирования возможно также для формирования таймерами необходимых временных интервалов. Например, если снизить частоту тактирования до 62,5 КГц (SLDV2…SLDV0 = 111), то период переполнения счетчика временной базы будет составлять около 1 с.
4.14. Подсистема реального времени — модуль таймера
Подсистема реального времени МК семейства 68HC12/HCS12 включает основной таймерный модуль, который имеет две модификации — TIM и ECT, и отдельный таймер меток реального времени.
Структура модуля таймера TIM (Timer Interface Module) ориентирована на реализацию трех основных функций:
• Входного захвата (IC — Input Capture). Функция входного захвата позволяет производить измерения временных параметров сразу нескольких импульсных сигналов на входах МК. Подсистема входного захвата может быть настроена на измерение длительности единичного или нулевого состояния на входе порта (рис. 4.25, а), а также периода, коэффициента заполнения или частоты периодического импульсного сигнала (рис. 4.25, б).
(а)
(б)
Рис. 4.25. Временные характеристики ШИМ сигнала
• Выходного сравнения (OC — Output Compare). Функция выходного сравнения позволяет МК генерировать на нескольких выходах импульсные последовательности с заданными временными характеристиками, такими, как период и коэффициент заполнения для повторяющихся сигналов, длительность единичного или нулевого состояния для неповторяющихся сигналов.
• Счетчика внешних событий (PA — Pulse Accumulator). Основная функция этого счетчика — подсчет импульсов (внешних событий) на одном из входов МК. Он также может быть использован для измерения временных параметров внешнего импульсного сигнала большой длительности.
Для реализации функций входного захвата/выходного сравнения (IC/OC) модуль таймера TIM использует восемь идентичных аппаратных блоков, которые принято называть каналами. Каждый из каналов посредством программных установок настраивается на реализацию режима входного захвата или выходного сравнения независимо от режима работы других каналов модуля таймера. Каждый из каналов использует общий счетчик временной базы для фиксации моментов наступления событий. Параллельная работа всех восьми каналов с одним счетчиком временной базы не вносит погрешностей в формируемые или измеряемые временные интервалы, поскольку фиксация этих интервалов реализуется на аппаратном уровне с последующим программным обслуживанием каналов по прерываниям. Каждый канал связан с одной из линий порта PORT Т. Счетчик событий PA в составе модуля TIM также связан с линией 7 порта PORT T. Поэтому линии 0…6 порта PORT T в подсистеме таймера могут использоваться или как входы IC, или как выходы OC, в то время как линия 7 порта PORT T кроме этих двух функций IC/OC может также использоваться как вход тактовых импульсов для счетчика внешних событий.
4.14.1. Структура модуля таймера
Структурная схема модуля таймера представлена на рис. 4.26. При ее первичном рассмотрении она кажется запутанной и сложной. Для облегчения понимания мы выделим в составе таймера три блока: блок счетчика временной базы (1), восемь каналов с функциями IC/OC (2), блок счетчика внешних событий (3). Далее мы рассмотрим каждый из этих блоков отдельно, и для каждого из них приведем более понятные структурные схемы.
Рис. 4.26. Структура модуля таймера
4.14.2. Счетчик временной базы
Основным блоком модуля таймера TIM является 16 разрядный счетчик временной базы TCNT, структурная схема которого представлена на рис. 4.27. Текущий код счетчика используется всеми каналами захвата/сравнения в качестве отсчета момента реального времени. Именно поэтому этот счетчик и называют счетчиком временной базы. Этот счетчик также называют свободно считающим счетчиком. Определение «свободно считающий» отражает следующую особенность работы счетчика. Если работа модуля таймера разрешена, то счетчик временной базы производит непрерывный счет, начиная с минимального кода $0000 до максимального кода $FFFF. При поступлении следующего тактового импульса код счетчика изменяется с $FFFF на $0000. Далее счет продолжается в порядке нарастания кода. Невозможно остановить счетчик под управлением программы, так же как и изменить коэффициент счета счетчика, равный 216. Текущее состояние счетчика отображается в двух 8-разрядных регистрах: TCNTH — старший байт счетчика, TCNTL — младший байт счетчика. В карте памяти МК эти регистры располагаются по следующим адресам: $0084 — TCNTH, $0085 — TCNTL. Вместе оба этих регистра составляют 16-разрядный регистр текущего состояния счетчика временной базы TCNT. Имя TCNT обычно объявляется в заголовочном файле.
Рис. 4.27. Структура и регистры управления счетчика временной базы модуля таймера
Особенности счетчика временной базыСчетчик временной базы тактируется импульсной последовательностью с выхода мультиплексора MUX. Ко входам мультиплексора подключены четыре источника тактирования: основная импульсная последовательность с выхода делителя частоты и дополнительные сигналы PACLK, PACLK/256, PACLK/65536. На вход программируемого делителя частоты подключен сигнал PCLK с выхода подсистемы тактирования. Частота следования импульсов на линии PCLK равна частоте тактирования межмодульных магистралей МК. Коэффициент деления программируемого делителя частоты определяется разрядами PR2…PR0 регистра масок таймера 2 (TMSK2). Формат регистра TMSK2 приведен на рис. 4.27. Таблица соответствия численного значения коэффициента деления двоичной комбинации разрядов PR2…PR0 представлена на рис. 4.28.
PR[2:1:0] Коэффициент деления 000 1 001 2 010 4 011 8 100 16 101 32 110 зарезервирован 111 зарезервированРис. 4.28. Выбор коэффициента программируемого делителя для счетчика временной базы
Величина коэффициента деления определяет длительность периода переполнения счетчика временной базы. Поскольку разрядность счетчика равна 16, то коэффициент счета этого двоичного счетчика равен 216 или 65356. Минимальный период переполнения счетчика составляет 8169 мс (216 импульсов × 1/8 МГц), поскольку максимальная частота импульсной последовательности PCLK, равная частоте тактирования межмодульных магистралей, составляет 8 МГц. Однако при задании максимального коэффициента деления, равного 32 (см. таблицу рис. 4.28), период переполнения счетчика составит уже 262424 мс (216 импульсов × 32/8 МГц).