Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

  " .word 0x8000, 0x8000, 0x8000, 0x8000\n"

  " .text");

 initialize_RTI; //инициализация модуля RTI

 initialize_ports; //инициализация портов

 PORTP = 0x01; // разрешение PORTP вывод 0

 asm("cli"); //разрешение всех маскируемых прерываний

 .

 .

 .

}

//********************************************************************

// определения функций

// ********************************************************************

//Initialize_ports: начальная конфигурация

//для портов входа/выхода

// ********************************************************************

void initialize_ports(void) {

 DDRP=0xFF; //порт PORTP устанавливается как выходной

}

// ********************************************************************

//RTI_isr: подпрограмма обслуживания прерываний по RTI

//*********************************************************************

void RTI_isr(void) {

 RTIFLG = 0x80; //сбрасывается флаг RTIF

 PORTP =~(PORTP); //переключить выходы PORTP

}

// ********************************************************************

// ********************************************************************

//initialize_RTI:конфигурирует модуль RTI

// ********************************************************************

void initialize_RTI(void) {

 RTICTL = 0x86; // устанавливается таймер RTI

 RTIFLG = 0x80; //сбрасывается флаг RTIF

}

// ********************************************************************

Аккумулятор импульсов. Число импульсов, поступающих от оптического кодера, подсчитывается аккумулятором импульсов (PA). Он инициализируется в начале программы и затем фиксирует текущее число импульсов за интервал каждого прерывания RTI. По известному интервалу времени между прерываниями RTI (32.768 мс) можно определить число импульсов, поступивших на PA между двумя прерываниями, и затем вывести на дисплей скорость вращения двигателя. Для конфигурации PA системы существует специальный код.

// **********************************************************************

//initialize_PA: инициализация модуля аккумулятора импульсов МК 68HC12

// **********************************************************************

void initialize_PA(void) {

 TIOS = 0x00; //Конфигурировать канал 7 для работы счетчика импульсов

 TCTL1 = 0x00; //кодера - 3 оператора

 OC7M = 0x00;

 TSCR = 0x80; //Установить бит разрешения таймера

 PACTL = 0x70; //Разрешить работу PA, режим счета событий, событие

               // по фронту импульса,

}

Объединим теперь эту программу с программой для RTI, чтобы подсчитать число импульсов кодера, появившихся за интервал прерывания. Получив, этот результат, преобразуем его в число об/мин и выведем полученное значение на ЖК индикатор.

// **********************************************************************

//имя файла: motor.с

//автор: Steve Barrett and Daniel Pack

//дата создания: Mar 10, 2003

//последняя редакция: Mar 25, 2004

// **********************************************************************

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже