Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Далее по тексту программы, если необходимо разрешить прерывания, то следует ввести CLI.
Ниже приведен пример инициализации подсистемы прерывания. Полную запись исходного текста программы с прерываниями мы рассмотрим после обсуждения модуля таймера.
4.13.
Микроконтроллеры семейства 68HC12/HCS12 имеют в своем составе модуль генератора CGM (Clock Generation Module), который генерирует импульсные последовательности для тактирования центрального процессора, межмодульных магистралей, периферийных модулей в составе МК, а также внешние периферийные интегральные схемы. Структурная схема модуля CGM представлена на рис. 4.23.
Рис. 4.23. Структура модуля тактирования CGM
Микроконтроллеры семейства 68HC12/HCS12 используют три внутренних сигнала тактирования: TCLK, ECLK и PCLK. Эти сигналы образуются путем деления эталонной импульсной последовательности внутреннего генератора с внешним кварцевым резонатором. Сигнал TCLK предназначен для тактирования центрального процессора, импульсные последовательности ECLK и PCLK используются для тактирования межмодульных магистралей и различных периферийных модулей (рис. 4.23). Модуль тактирования CGM микроконтроллера B32 оснащен также дополнительным делителем, который позволяет существенно снизить частоту одной из импульсных последовательностей тактирования. Низкая частота тактирования таймерных модулей в некоторых применениях позволяет значительно упростить управляющую программу.
4.13.1.Система тактирования отладочной платы MC68HC912B32EVB
Микроконтроллер в составе платы отладки MC68HC912B32EVB тактируется от внешнего кварцевого резонатора с частотой 16 МГц. В модуле генератора CGM эта частота делится на 2, образуя импульсную последовательность для тактирования центрального процессора и межмодульных магистралей микроконтроллера с частотой 8 МГц. Эта же импульсная последовательность используется для тактирования всех периферийных модулей микроконтроллера: таймера, контроллеров последовательного обмена, АЦП. Многие периферийные модули обладают собственным делителем частоты. Этот делитель позволяет создать собственную внутреннюю частоту тактирования модуля, которая может не коррелироваться с частотами других модулей. Это удобно при проектировании.
Кварцевый резонатор может быть отключен от входа МК посредством переключателей на плате MC68HC912B32EVB. Вместо кварцевого резонатора для тактирования МК может быть использован внешний генератор или керамический резонатор. Последний обладает меньшей, чем кварцевый резонатор, стабильностью частоты, однако он является более дешевым компонентом. Мы не будем вносить каких-либо изменений в схемотехнику платы MC68HC912B32EVB. Поэтому далее на протяжении всей книги частота внутренней шины и центрального процессора МК будет составлять 8 МГц. Частота внутренней шины МК может быть понижена дополнительным делителем модуля CGM (рис. 4.23). Его коэффициент деления назначается под управлением программы и может составлять 1, 2, 4, …, 128. Для выбора желаемого коэффициента деления необходимо записать соответствующий таблице рис. 4.24 код в разряды SLDV2…SLDV0 регистра управления дополнительным делителем SLOW. Формат этого регистра приведен на рис. 4.24.
Выбор пониженной частоты межмодульных магистралей МК
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 может также использоваться как вход тактовых импульсов для счетчика внешних событий.