Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Название:Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Автор:
- Жанр:
- Издательство:Издательский дом «ДМК-пресс»
- Год:2007
- Город:Москва
- ISBN:5-9706-0034-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Бит 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.
Счетчик подсистемы меток реального времени тактируется импульсной последовательностью с частотой f BUS . В модуле меток реального времени эта частота делится. Коэффициент деления, устанавливаемый разрядами RTR2:RTR1:RTR0, можно выбрать по таблице рис. 4.47. Проанализировав данные таблицы, можно установить, что для МК с частотой внутренней шины 8 МГц максимальный период меток реального времени составляет примерно 65 мс.
Ниже приведен исходный текст программы realtime.c для реализации часов реального времени на основе отсчетов модуля RTI с интервалами 8,196 мс. В подпрограмме прерывания программный счетчик накапливает 122 отсчета RTI (рис.4.48), которые составляют временной интервал длительностью 1 с. По прошествии каждой секунды инкрементируется программный счетчик sec_ctr, по прошествии каждой минуты — счетчик mins_ctr и т.д. вплоть до счетчика дней.
При желании функции программы можно расширить, введя подсчет дня недели, месяца и года.
/*-----------------------------------------------------------------------*/
/* filename: realtime.c */
/* МAIN PROGRAМ: Эта программа генерирует две импульсных */
/* последовательности с использованием таймера и двух каналов подсистемы */
/* прерывания.Сигналы формируются на выходах 2 и 3 таймера. */
/*-----------------------------------------------------------------------*/
/*подключаемые файлы*/
#include <912b32.h>
/*используемые функции*/
void RTI_isr{void); /*подпрограмма прерывания по RTI*/
/* interrupt pragma */
#pragma interrupt_handler RTI_isr
/*инициализация таблицы векторов прерывания*/
#pragma abs_address: 0xF7F0
void (*RTI_interrupt_vector[]) ()={RTI_isr};
#pragma end_abs_address
/*глобальные переменные*/
unsigned int ms_ctr, sec_ctr, mins_ctr, hrs_ctr, days_ctr;
void main{void) {
ms_ctr = 0; /*инициализация переменных*/
sec_ctr = 0;
mins_ctr = 0;
hrs_ctr = 0;
days_ctr = 0;
RTICTL = 0х84; /*разрешить прерывания от модуля RTI, выбрать*/
CLI(); /*период RTI 8,196 мс*/
while(1) /*ожидать прерывание*/
{
;
}
}
/*---------------------------------------------------------*/
/* Функция RTI_isr подпрограмма прерывания каждые 8,196 мс */
/*---------------------------------------------------------*/
void RTI_isr(void) {
RTIFLG = 0х80; /*сброс флага события RTI*/
ms_ctr = ms_ctr+1; /*обновить счетчик миллисекунд*/
if (ms_ctr == 122) /*обновить счетчик секунд*/
{
ms_ctr = 0;
sec_ctr = sec_ctr + 1;
}
if (sec_ctr == 60) /*обновить счетчик минут*/
{
sec_ctr = 0;
mins_ctr = mins_ctr + 1;
}
if (mins_ctr == 60) /*обновить счетчик часов*/
{
mins_ctr = 0;
hrs_ctr = hrs_ctr + 1;
}
if (hrs_ctr == 24) /*обновить счетчик дней*/
{
hrs_ctr = 0;
days_ctr = days_ctr + 1;
}
}
/*---------------------------------------------------------*/
4.16. Модуль таймера ECT в составе МК МC68HC12BE32 и HCS12
Все микроконтроллеры семейства HCS12 и всего одна модель MC68HC12BE32 семейства 68HC12 оснащены более совершенным модулем таймера ECT (Enhanced Capture Timer). Модуль таймера EST унаследовал основные технические решения от своего предшественника — модуля таймера TIM. Поэтому, так же как в модуле TIM, основу таймера EST составляют 16-разрядный счетчик временной базы и восемь универсальных каналов захвата/сравнения.
Однако в модуле EST четыре канала из восьми в режиме входного захвата обладают дополнительным регистром. Такое решение позволяет в режиме входного захвата зафиксировать два момента изменения сигнала на входе канала прежде, чем будет установлен триггер события в канале CnF. Рассматриваемые каналы называют буферированными, они могут работать как в режиме временного хранения, так и в режиме очереди. Четыре оставшихся канала называют небуферированными. Правила функционирования этих каналов в режиме входного захвата полностью соответствуют аналогичным для модуля TIM. Полный набор функций каналов захвата/сравнения модуля таймера EST приведен на рис. 4.49.

Рис. 4.49.Усовершенствованный модуль таймера ECT
Второе отличие модуля EST от модуля TIM состоит в том, что модуль EST имеет в своем составе четыре 8-разрядных счетчика события (PACN3…PACN0). Эти счетчики могут быть объединены парами для получения двух 16-разрядных счетчиков событий: (PACN3:PACN2) и (PACN1:PACN0).
Обратимся далее к более подробному рассмотрению дополнительных режимов работы модуля EST.
4.16.1. Небуферированные каналы входного захвата
Алгоритм функционирования небуферированных каналов входного захвата полностью аналогичен функционированию в аналогичном режиме каналов модуля TIM. Однако небуферированные каналы модуля EST снабжены дополнительной функцией управления режимом. Регистр управления порядком перезаписи ICOVW (Input Control Overwrite Register) содержит восемь битов NOVWn (рис. 4.49). Если бит NOVWn установлен в 1, то регистр данных небуферированного канала с номером n не может быть перезаписан под действием аппаратных средств, пока этот регистр не будет считан программой. Если бит NOVWn = 0, то функция блокировки записи для небуферированного канала снимается.
4.16.2. Буферированные каналы входного захвата
Интервал:
Закладка: