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

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С"
Описание и краткое содержание "Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С" читать бесплатно онлайн.
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
/*init_PWM(): инициализация модуля ШИМ контроллера 68HC12 */
/********************************************************************/
void init_PWM() {
PWTST = 0x00; /*Установить порт ШИМ в нормальный режим */
PWCTL = 0x00; /*установить режим фронтовой ШИМ */
PWCLK = 0x28; /*без объединения каналов, ECLK/128*/
PWPOL = 0x01; /*активный уровень 1 */
DDRP = 0xFF; /*Порт P конфигурировать как выходной */
PWEN = 0x01; /*установить выход ШИМ */
PWPER0 = 255; /*установить для ШИМ период, соответствующий 976 Гц */
PWDTY0 = 171; /*установить начальный коэффициент заполнения */
/* на отсутствие движения */
}
/********************************************************************/
Если в процессе выполнения программы обработки прерывания RTI скорость вращения превышает 1600 об/мин, коэффициент заполнения ШИМ уменьшается на 1. С другой стороны, если скорость вращения меньше, чем 1600 об/мин, коэффициент заполнения ШИМ увеличивается на 1. Каждое приращение или снижения коэффициента заполнения ШИМ приводит к изменению скорости на 8.5 об/мин. Попробуйте вычислить это изменение в качестве домашней работы (задание 19).
Код, позволяющий сравнить опорную скорость с действительной и скорректировать ее обеспечивается в программе обработки RTI прерывания (RTLISR). В этой распечатке кода, функции поддержки ЖКД были помещены в файл для включения LCD.H с их функциями-прототипами.
7.4.4. Структура программы и блок-схема алгоритма
На рис. 7.20 показаны блок-схема алгоритма и структура программы регулирования частоты вращения маломощного двигателя постоянного тока. В следующем параграфе приведен полный текст программы для этого проекта. Попробуйте разработать блок-схемы алгоритмов для каждой функции проекта в качестве домашней работы (задание 20).
а) Управление скоростью двигателя. Блок-схема алгоритма
б) Управление скоростью двигателя. Структура программы
Рис. 7.20. К программе управления скоростью двигателя
7.4.5. Программный код
В этом разделе мы использовали методику проектирования сверху-вниз, чтобы разработать, выполнить, и документировать систему стабилизации частоты вращения двигателя. Приводится полный код программы. Если бы мы привели этот код полностью в начале раздела, его сложность могла бы вас испугать. Использование же восходящей методики проектирования позволяет проще и удобнее разбираться с работой каждой функции кода и связью их между собой.
//********************************************************************
//имя файла: 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"); // Разрешить все маскируемые прерывания
while(1) // Непрерывный цикл в ожидании прерывания
{
;
}
}
//********************************************************************
//initialize_ports: обеспечивает начальную конфигурацию портов
//ввода - вывода
//********************************************************************
void initialize_ports(void) {
DDRP = 0xFF; // Установить PORTP как выходной для ШИМ
DDRT = 0x00; //Установить PORTT как входной, а вывод PORTT[7]
// как вход аккумулятора PA
DDRB = 0xFF; //PORTB на вывод - двунаправленная
//магистраль данных для ЖКИ
DDRDLC = 0xFF; //порт PORT DLC на вывод - линии управления ЖКИ
}
//********************************************************************
//RTI_isr: Программа обработки прерывания по меткам реального времени
//********************************************************************
void RTI_isr(void) {
unsigned int new_count;
unsigned int pulse_count;
unsigned int current_RPM;
float max_count = 65535.0;
new_count = PACNT; // Получить текущее число импульсов в аккумуляторе
if (new_count > old_count) // Определить текущее число импульсов
pulse_count = new_count - old_count;
else pulse_count = (unsigned int)(max_count-(float)(old_count+new_count));
// Преобразовать число импульсов кодера в об/мин
current_RPM = (unsigned int)(pulse_count/0.032768);
// Изменить число прерываний RTI в счетчике
RTI_int_count = RTI_int_count + 1;
if (RTI_int_count == 10) // Изменить на ЖКИ значение после 10 прерываний RTI
{
display_count_LCD(current_RPM); // Изменить показания ЖКИ
RTI_int_count=0; // Сбросить счетчик прерываний RTI
}
// Изменить значение скорости двигателя
if (current_RPM < desired_motor_RPM) PWM_duty_cycle = PWM_duty_cycle + 1; // Ускорить двигатель
else PWM_duty_cycle = PWM_duty_cycle - 1; // Замедлить двигатель
// Изменить скорость двигателя с помощью ШИМ
PWDTY0 = PWM_duty_cycle; //коэффициент заполнения
old_count = new_count;
RTIFLG = 0x80; //сбросить флаг прерывания RTI
}
//********************************************************************
// Initialize_RTI: конфигурирует регистры связанные с RTI
//- Регистр управления RTI (RTICTL):
// - разрешение RTI, флаг RTIE
// - установка периода RTI на 32.768 мс
// - сброс RTI, бит RTIF регистре Флагов RTI (RTIFLG)
//********************************************************************
void initialize_RTI(void) {
RTICTL = 0x86; // Установить период RTI 32.768 мс
RTIFLG = 0x80; // сброс RTI
}
//********************************************************************
// Initialize_RTI_PA: инициализация 68HC12 аккумулятора импульсов PA
//********************************************************************
void initialize_PA(void) {
TIOS = 0x00; // конфигурировать канал 7 для работы в качестве счетчика
TCTL1 = 0x00; // импульсов оптического кодера
OC7M = 0x00; // Включить бит разрешения таймера
TSCR = 0x80; // Установить разрешение для аккумулятора по фронту
//импульса,
PACTL = 0x50; // Режим счета событий
}
/********************************************************************/
//initialize_PWM: генерировать сигнал ШИМ 976 Гц с */
// коэффициентом заполнения 67.2% */
/********************************************************************/
void initialize_PWM(void) {
PWTST =0x00; /*установить ШИМ в режим нормальной работы */
PWCTL =0x00; /*установить выравнивание по левой границ */
PWCLK = 0x28; /*без конкатенации, разделить clk на 32 */
PWPOL = 0x01; /*состояние : высокое затем переход к низкому */
DDRP = 0xFF; /*установить порт PORTP как выходной */
PWEN = 0x01; /*разрешение на ШИМ для канала 0 */
PWPER0= 0xFF; /* установить период равным 256 */
PWDTY0= PWM duty_cycle; /* установить коэффициент заполнения равным 172 */
}
/********************************************************************/
7.4.6. Испытания
Установка для испытания системы стабилизации скорости вращения была показана на рис. 7.18. Это — очень сложная система, содержащая целый ряд компонентов и микроконтроллерную систему 68HC12. Чтобы гарантировать успешную работу системы, настоятельно рекомендуется применять обсужденный в главе 2 метод измерений. Собрав и запустив всю систему, можно включить двигатель на умеренную нагрузку, и убедиться, что система стабилизирует скорость вращения на уровне в 1600 об/мин.
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С"
Книги похожие на "Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С"
Отзывы читателей о книге "Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С", комментарии и мнения людей о произведении.