Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Рис. 7.26. Блок-схема алгоритма программы парящего робота
7.5.5. Программный код
В этом разделе, мы представляем программу для управления парящим роботом на языке Си. Программа была первоначально написана Джоулом Перлином, одним из наших студентов, и скорректирована авторами настоящей книги.
//********************************************************************
// filename: flying.с
//
Описание программы: Эта программа запускает четыре двигателя и затем
// управляет скоростью вращения каждого из них. После взлета робота
// программа проверяет каждый из датчиков для определения положения
// робота. При обнаружении преграды или крыши, скорости вращения двигателей
// корректируются, чтобы обеспечить правильное направление движения.
//
// Авторы: Джоэль Перлин, Даниэль Пак, Стив Барретт
// Дата создания: 27 июля 2004
// используемая память: программа - 0x1000, данные - 0x3000 и
// стек - 0x4000
//********************************************************************
#include <stdio.h>
#include "hcs12dp256.h"
#pragma abs_address 0x3000
unsigned int count1; //счетчики переменных
unsigned int count2;
unsigned int sensor;
char sensoravg; //сохраняют данные датчиков в виде 8-разрядных чисел
volatile unsigned p; // текущий счетчик
#pragma end_abs_address
//********************************************************************
void main(void) {
//Инициализация робота
PWME = 0x00; //запрет ШИМ
DDRA = 0xFF; //конфигурирование портов A и В как выходных
DDRB = 0xFF;
PORTA = 0xAA; //подача питания на датчики
PORTB = 0xFF; //индикация режима программы на линейке светодиодов
//Инициализация модуля ATD
PORTAD1 = 0x00; //конфигурирование портов как входных
ATD1CTL2 = 0xC2; //инициализация ATD с установкой флагов
//преобразования в каналах
ATD1CTL3 = 0x00; // функция установки ATD
ATD1CTL4 = 0x80; //установить 8-разрядный
режим
PORTB = 0xFE; //показать состояние программы на линейке
// светодиодов
// Инициализация режима входного захвата
TSCR1 = 0x80; //включение таймера (нормальный режим)
TSCR2 = 0x80; //установить период переполнения счетчика временной
// базы 8.192 мс, коэффициент деления = 1
TIOS = 0x00; //установить каналы таймера в режим входного захвата
TMSK1 = 0xE0;//биты разрешения прерывания по событиям на линиях [7:5]
TFLG1 = 0xE0; //очистить флаги прерываний TFLG1
PORTB = 0xFC; // показать состояние программы на линейке светодиодов
// инициализация ШИМ
PWMCTL = 0x00; //установить 8-разрядный режим
PWMCAE = 0x10; //установить фронтовую ШИМ
PWMPOL = 0x5F; //выбрать активным высокий логический уровень
//назначить режим ШИМ для каналов 0,1,2,3,4 и 6
PWMCLK = 0x50; //каналы 0,1,4 тактируются CLOCK_A и каналы
//2,3,6 - CLOCK_В
PWMSCLA = 0x20; //период A 0x20 = 4.1 мс
PWMSCLB = 0x04; //период B 0x02 = 255 мкс, выбрать
// наибольший коэффициент заполнения для всех каналов
PWMPER0 = 255;
PWMPER1 = 255;
PWMPER2 = 255;
PWMPER3 = 255;
//Запуск двигателей
PWME = PWME | 0x5F; // разрешения режима ШИМ для каналов 0,1,2,3,4 и 5
PWMDTY0 = 80; // установить коэффициенты заполнения
// для каналов 0,1,2 и 3
PWMDTY1 = 80;
PWMDTY2 = 80;
PWMDTY3 = 80;
// Взлет
while (PWMTY0 < 200) {
PWMDTY0 = PWMDTY0 + 1;
PWMDTY1 =PWMDTY1 + 1;
PWMDTY2 = PWMDTY2 + 1;
PWMDTY3 = PWMDTY3 + 1;
}
P = 20;
// установить коэффициенты заполнения для двигателей на режим полета
while (battery == 1) //проверить включение батареи
{
// двигатель 1
Поделиться:
Популярные книги
Кодекс Крови. Книга III
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Измена. Испорченная свадьба
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Блуждающие огни
1. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Пышка и Герцог
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Затерянные земли или Великий Поход
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Адвокат Империи 2
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Часовая битва
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Невеста снежного демона
Зимний бал в академии
Фантастика:
фэнтези
6.80
рейтинг книги
Законы Рода. Том 3
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Случайная свадьба (+ Бонус)
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Пипец Котенку! 2
2. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00