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

Если в процессе выполнения программы обработки прерывания RTI скорость вращения превышает 1600 об/мин, коэффициент заполнения ШИМ уменьшается на 1. С другой стороны, если скорость вращения меньше, чем 1600 об/мин, коэффициент заполнения ШИМ увеличивается на 1. Каждое приращение или снижения коэффициента заполнения ШИМ приводит к изменению скорости на 8.5 об/мин. Попробуйте вычислить это изменение в качестве домашней работы (задание 19).

Код, позволяющий сравнить опорную скорость с действительной и скорректировать ее обеспечивается в программе обработки RTI прерывания (RTLISR). В этой распечатке кода, функции поддержки ЖКД были помещены в файл для включения LCD.H с их функциями-прототипами.

<p>7.4.4. Структура программы и блок-схема алгоритма </p>

На рис. 7.20 показаны блок-схема алгоритма и структура программы регулирования частоты вращения маломощного двигателя постоянного тока. В следующем параграфе приведен полный текст программы для этого проекта. Попробуйте разработать блок-схемы алгоритмов для каждой функции проекта в качестве домашней работы (задание 20).

а) Управление скоростью двигателя. Блок-схема алгоритма

б) Управление скоростью двигателя. Структура программы

Рис. 7.20. К программе управления скоростью двигателя

<p>7.4.5. Программный код</p>

В этом разделе мы использовали методику проектирования сверху-вниз, чтобы разработать, выполнить, и документировать систему стабилизации частоты вращения двигателя. Приводится полный код программы. Если бы мы привели этот код полностью в начале раздела, его сложность могла бы вас испугать. Использование же восходящей методики проектирования позволяет проще и удобнее разбираться с работой каждой функции кода и связью их между собой.

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

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

//авторы: Стив Барретт и Даниэль Пак

//дата создания: 10 марта 2003

//последняя редакция: 2 марта 2004

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

//включенные файлы

#include 912b32.h

#include LCD.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_PWM(void); // Инициализация модуля ШИМ

//глобальные переменные

unsigned int old_count; // последнее содержимое PA

int RTI_int_count = 0; // Используется для подсчета числа

                       // прерывания RTI

unsigned char PWM_duty_cycle=172; // Начальный коэффициент заполнения ШИМ

unsigned int desired_motor_RPM = 1600; //эталон скорости двигателя

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

void main(void) {

 asm(".area vectors(abs)\n" // команда встроенного ассемблерного кода

  ".org 0xFFF0\n" // Инициализировать вектор прерывания RTI

  ".word _RTI_isr\n"

  ".org 0xFFF8\n"

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

  ".text");

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

 initialize_LCD; // Инициализация ЖКИ

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

 initialize_PA; // Инициализация модуля PA

 initialize_PWM; //Инициализация модуля ШИМ

 asm("cli"); // Разрешить все маскируемые прерывания

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