Шрифт:
4.15. Модуль меток реального времени
Многие применения требуют организации выполнения одного и того же фрагмента программы через равные интервалы времени. Для удобства разработчиков МК семейства 68HC12/HCS12 оснащены специальным модулем меток реального времени RTI (Real Time Interrupt), который генерирует равноотстоящие во времени запросы на прерывание (рис. 4.47). Тогда фрагмент программы, которые должен исполняться через равные интервалы времени, может быть оформлен как подпрограмма прерывания по запросу RTI. И желаемый алгоритм функционирования устройства будет реализован.
Рис. 4.47. Временная диаграмма, поясняющая принцип действия модуля меток реального времени, и регистры управления модулем
Модуль меток реального времени RTI использует два регистра специальных функций: регистр управления RTICTL (Real Time Interrupt Control Register) и регистр флагов RTIFLG (Real Time Interrupt Flag Register).
Бит RTIE в регистре управления RTICTL (рис. 4.47) разрешает работу подсистемы меток реального времени. При RTIE = 1 подсистема находится в активном состоянии, при RTIE = 0 работа системы запрещена. Биты RTR2:RTR1:RTR0 определяют период следования меток реального времени. Таблица рис. 4.47 устанавливает соответствие между кодовой комбинацией битов RTR2:RTR1:RTR0 и временным интервалом между двумя соседними метками модуля RTI. Последний именуют периодом RTI.
Выбор периода генерации меток реального времени
RTR[2:0] | Коэффициент деления 2х | При частоте внутренней системной шины | |
---|---|---|---|
4 МГц | 8 МГц | ||
000 | зарезервирован | нет | нет |
001 | 13 | 2,048 мс | 1,024 мс |
010 | 14 | 4,096 мс | 2,048 мс |
011 | 15 | 8,192 мс | 4,096 мс |
100 | 16 | 16,384 мс | 8,192 мс |
101 | 17 | 32,768 мс | 16,384 мс |
110 | 18 | 65,536 мс | 32,768 мс |
111 | 19 | 131,072 мс | 65,536 мс |
Рис. 4.47. Временная диаграмма, поясняющая принцип действия модуля меток реального времени, и регистры управления модулем
Рис. 4.48. Блок-схема алгоритма часов реального времени
Регистр флагов RTIFLG (рис. 4.47) содержит всего один флаг RTIF. Этот флаг устанавливается, когда модуль закончил отсчет очередного периода RTI.
Счетчик подсистемы меток реального времени тактируется импульсной последовательностью с частотой fBUS. В модуле меток реального времени эта частота делится. Коэффициент деления, устанавливаемый разрядами RTR2:RTR1:RTR0, можно выбрать по таблице рис. 4.47. Проанализировав данные таблицы, можно установить, что для МК с частотой внутренней шины 8 МГц максимальный период меток реального времени составляет примерно 65 мс.
Ниже приведен исходный текст программы realtime.c для реализации часов реального времени на основе отсчетов модуля RTI с интервалами 8,196 мс. В подпрограмме прерывания программный счетчик накапливает 122 отсчета RTI (рис.4.48), которые составляют временной интервал длительностью 1 с. По прошествии каждой секунды инкрементируется программный счетчик sec_ctr, по прошествии каждой минуты — счетчик mins_ctr и т.д. вплоть до счетчика дней.
При желании функции программы можно расширить, введя подсчет дня недели, месяца и года.