Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
//initialize_RTI:конфигурирует модуль RTI
// ********************************************************************
void initialize_RTI(void) {
RTICTL = 0x86; // устанавливается таймер RTI
RTIFLG = 0x80; //сбрасывается флаг RTIF
}
// ********************************************************************
Аккумулятор импульсов. Число импульсов, поступающих
// **********************************************************************
//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
// **********************************************************************
// включенные файлы *****************************************************
#include <912b32.h>
#pragma interrupt_handler RTI_isr //объявить подпрограмму прерывания по RTI
// функции-прототипы ****************************************************
void initialize_ports(void); //инициализировать порты
void RTI_isr(void); //подпрограмма обслуживания прерываний RTI
void initialize_RTI(void); // инициализировать систему RTI
void initialize_PA(void); //инициализировать аккумулятор импульсов (PA)
void initialize_LCD(void); //
инициализировать ЖК индикатор
void display_count_LCD(unsigned int); //вывод текущего содержимого аккумулятора PA
// на ЖК индикатор
void putchars(unsigned char); //функция поддержки ЖКИ - вывести символ
void putcommands(unsigned char);// функция поддержки ЖКИ вывести команду
void delay_5ms(void); //задержка 5 мс
void delay_100us(void); //задержка 100 мкс
unsigned int old_count; //последнее значение, записанное в (PA)
int RTI_int_count =0; //используется для подсчета RTI прерываний
//главная программа****************************************************
void main(void) {
asm(" .area vectors(abs) \n" //inline assembly statement
".org 0xFFF0\n" //инициализация вектора прерываний RTI
".word _RTI_isr\n"
" .org 0xFFF8\n" // инициализация вектора reset для 68HC12 B32
" .word 0x8000, 0x8000, 0x8000, 0x8000\n"
" .text");
void initialize_ports(void); // инициализация портов
initialize_LCD; //инициализация ЖКИ
initialize_RTI; //инициализация модуля RTI
initialize_PA; //инициализация аккумулятора импульсов
asm("cli"); //разрешение глобального маскирования
//прерываний
while(1) //продолжение цикла до следующего прерывания
{
;
}
}
//********************************************************************
//********************************************************************
//initialize_ports: определяет направление передачи портов
//********************************************************************
void initialize_ports(void) {
DDRP = 0xFF; // порт PORTP устанавливается как выходной для ШИМ
DDRT = 0x00; // PORTT устанавливается как входной, вывод PORTT[7]
// в качестве входа аккумулятора импульсов PA
DDRB = 0xFF; // PORTB устанавливается как выходной - порт
// данных для ЖКД
DDRDLC = 0xFF; // PORT DLC устанавливается как выходной - сигналы
// управления для ЖКИ
Поделиться:
Популярные книги
Весь цикл «Десантник на престоле». Шесть книг
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Убивать чтобы жить 6
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Мужчина моей судьбы
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Прорвемся, опера! Книга 3
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Бастард Императора. Том 2
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Право на сына
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Игра на чужом поле
14. Девяностые
Фантастика:
попаданцы
альтернативная история
5.50
рейтинг книги
Жена со скидкой, или Случайный брак
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Ворон. Осколки нас
2. Ворон
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сумеречный стрелок
1. Сумеречный стрелок
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Испорченная свадьба
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Прометей: Неандерталец
4. Прометей
Фантастика:
героическая фантастика
альтернативная история
7.88
рейтинг книги
Генерал-адмирал. Тетралогия
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Четвертый год
3. Пограничная река
Фантастика:
фэнтези
9.22