Управление ракетной техникой
Разработка комплекса программных средств управления летательными аппаратами. Контроль измерения параметров полёта. Сохранение информации во флеш-памяти на борту ракеты. Структура данных модуля навигации. Специфика операционных систем в микроконтроллерах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 04.07.2018 |
Размер файла | 2,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
BottLED();
}
break;
case 2://PF5 P
code = BUT_GetBut();//берем код события
if (code==3)//одинарное отпускание
{
angleP=700;
BottLED();
}else
if (code==5) //двойное
{
angleP=2300;
BottLED();
}
break;
case 3://PF6 CS2
code = BUT_GetBut();//берем код события
if (code==3)//одинарное отпускание
{
angleCS2=700;
BottLED();
}else
if (code==5) //двойное
{
angleCS2=2300;
BottLED();
}
break;
case 4://PF7 PH
code = BUT_GetBut();//берем код события
if (code==3)//одинарное отпускание
{
anglePH=700;
BottLED();
}else
if (code==5) //двойное
{
anglePH=2300;
BottLED();
}
break;
}
uxHighWaterMark = uxTaskGetStackHighWaterMark( NULL );
//printf(" Polling WaterMark %u ", uxHighWaterMark);
}
}
//Подпрограмма-обработчик прерывания по приходу байта с GPS
ISR(USART0_RX_vect)
{
u8 val=UDR0;
/*if ( val!='A'){//if ( UDR0!=lf){ //<CR> - Возврат каретки (0x0D) - добавим,<LF> - Подача строки - не будем уже передавать в очередь,
FBuf.GPS_Buf[FBuf.GPS_idxIN++] =val;
FBuf.GPS_idxIN &= sizeof(FBuf.GPS_Buf)/sizeof(FBuf.GPS_Buf[0])-1;//BUF_MASK;
}
else //а выставим семафор - из очереди можно изъять байты
{
printf(" ISR bits ");
xEventGroupSetBits(FBuf.GPSEventGroupSdOrCC, (1<<1)|(1<<0));
//xSemaphoreGiveFromISR(GPS_Ready, NULL);
}*/
//if (rand(10)==1)
{//Это тестовый код, рабочий - сверху
for (int i = 48; i<59;i++){
FBuf.GPS_Buf[FBuf.GPS_idxIN++] =i;
FBuf.GPS_idxIN &= sizeof(FBuf.GPS_Buf)/sizeof(FBuf.GPS_Buf[0])-1;}
FBuf.GPS_Buf[FBuf.GPS_idxIN++] ='a';
FBuf.GPS_idxIN &= sizeof(FBuf.GPS_Buf)/sizeof(FBuf.GPS_Buf[0])-1;FBuf.GPS_Buf[FBuf.GPS_idxIN++] ='A';
FBuf.GPS_idxIN &= sizeof(FBuf.GPS_Buf)/sizeof(FBuf.GPS_Buf[0])-1;
printf(" ISR bits ");
xEventGroupSetBits(FBuf.GPSEventGroupSdOrCC, (1<<1)|(1<<0));}
}
void uart_Init( void )
{
UBRR0H = GPS_BAUD_PRESCALE >> 8; // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
UBRR0L = GPS_BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
//8 бит данных, 1 стоп бит, без контроля четности
UCSR0C = ( 1 << UCSZ1 ) | ( 1 << UCSZ0 ); //( 1 << URSEL ) |
//разрешить прием, передачу данных и прерывание по приёму байта
UCSR0B = ( 1<<RXCIE )| ( 1 << TXEN ) | ( 1 <<RXEN );
}
/*инициализация SPI модуля в режиме master*/
void SPI_Init(void)
{
/*настройка портов ввода-вывода
все выводы, кроме MISO выходы*/
DDRB |= (1<<SPIC_MOSI)|(1<<SPIC_SCLK)|(1<<SPIC_CS)|(0<<SPIC_MISO);
PORTB |= (1<<SPIC_MOSI)|(1<<SPIC_SCLK)|(1<<SPIC_CS)|(1<<SPIC_MISO);
DDRD|=1<<SPIC_extraCS;
PORTD|=1<<SPIC_extraCS;
/*разрешение spi,старший бит вперед,мастер, режим 0, частота 16M/4=4MHz*/
SPCR = (1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (0<<SPI2X);
}
u16 RTC_500msDetection;
ISR(TIMER2_COMP_vect){//T=10ms
RTC_500msDetection++;//32.768 кГц dt26
if (RTC_500msDetection==49) {
RTC_TimeMult++;//увеличиваем множитель времени по основанию 500ms
xSemaphoreGive( RTC_Time_Ready );//Семафорим, что пора выписать время
RTC_500msDetection=0;
}
PORTG ^= (1<<PG2);
mmc_disk_timerproc();//FatFs дела
BUT_Poll();//опросить кнопки
FRESULT open_append (
FIL* fp, // [OUT] File object to create
const char* path // [IN] File name to be opened
)
{
FRESULT fr;
/* Opens an existing file. If not exist, creates a new file. */
fr = f_open(fp, path, FA_WRITE | FA_OPEN_ALWAYS);
if (fr == FR_OK) {
/* Seek to end of the file to append data */
fr = f_lseek(fp, f_size(fp));
if (fr != FR_OK)
f_close(fp);
}
return fr;
}
void vADCStart( void *pvParameters )//Инициализация и запуск ADC
{
ADMUX = 0b00000000;//// Internal Vref turned off, выравнивание по правой границе 7й канал, 10бит
ADCSRA |= (1<<ADEN)|(0<<ADSC)|(0<<ADFR)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);//вкл adc, не запустить первое преобраз, непрер режим прерыван выкл (ADFR), ADCпрерывание выкл, делитель 128 (62.5kHz)
TickType_t xLastWakeTime;
const TickType_t xFrequency = 2000;//ms
xLastWakeTime=xTaskGetTickCount();
unsigned short ADCdata;
float voltage;
for( ;; )
{
ADCSRA |= 1<<ADSC;//начать новое преобразование (раз в ~50 ms)
vTaskDelay(1);//Пусть другие повыполняются 1 такт диспетчера
while (!(ADCSR & 1<<ADIF));//ждать флага прерывания по готовности ацп
ADCdata = ADCW; // В ADCW хранится напряжение в двоичном коде
voltage = ADCdata * 0.0048876; // 5 вольт / 1023 = 4.8875
//прерывание ADC, ring buffer
FBuf.ADC_Buf[FBuf.ADC_idxIN++] =ADCdata;
FBuf.ADC_idxIN &= sizeof(FBuf.ADC_Buf)/sizeof(FBuf.ADC_Buf[0])-1;
vTaskDelayUntil(&xLastWakeTime,xFrequency);
}
}
void Timer2_10ms(void)//ATmega128 ButtUpdate_and_FatFsUpdate_Driver
{
//Таймер2 - 10ms для FatFs и кнопок
TCCR2 |= (1<<WGM21) |(1<<CS22)|(0<<CS21)|(1<< CS20);//CTC, предделитель 1024, то 7812,5Hz таймер
//нужно 10ms
OCR2=77;//р-р сравнения
//TCCR2 |= (1<< CS20);//CTC, предделитель 64, то 125kHz таймер
TIMSK |= 1<<OCIE2;//Разрешить прерывание
}
ISR(INT7_vect){//Чеки PE7 прерывание по переходу низкий->высокий
if (PINE & 1<<PE7){
//vTaskSuspend(PollingFromButt_lib_Handle);нельзя из-под ISR! //засыпаем (кнопки серв уже не нужны)
xTaskResumeFromISR(BottLED_Handle);//моргнуть vBottLED -> PORTG |= (1<<PG0);
xTaskResumeFromISR(ADC_Handle);//Начать юзать ADC vADCStart
xTaskResumeFromISR(FatFsWrite_Handle);//Начать бэкапить на SD vFatFsWrite
xTaskResumeFromISR(CCWrite_Handle);//Начать бэкапить на CC vCCWrite
xTaskResumeFromISR(FligthServo_Handle);//Начать выбрасывать кансаты и открывать парашют vFligthServo
}
}
//внешние прерывания http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/8.htm
void ChecaInit(){
//Если на PE7 высокий уровень, чека сошла (полёт?)
PORTE |= (1<<PE7);//поддяжка к питанию
DDRE &= ~(1<<PE7);//На ввод
EIMSK |=1<<INT7;//вне прерывание на ножке PE7
EICRB |=(1<<ISC71)|(1<<ISC70);
}
portSHORT main(void)
{
DDRG |= (1<<PG0)|(1<<PG2)| (1<<PG4);//vLEDInit(); //иниц портов подкл к светодиод
//Инициализация Servo
ServoDriverInit();//timer3_init
DDRC=0xFF;//Порты - на вывод ШИМ серв
//Инициализация Buttons
BUT_Init();
Timer2_10ms();//ATmega128 ButtUpdate_and_FatFsUpdate_Driver
SPI_Init();//это пересделает FatFs, но у нас в SPI_Init ещё экстра чипселекты на выход настраиваются
//Инициализация лога на флешке
sei();//сомнительное место для sei, но иначе таймер для FatFS не запашет
///*Монтируем том, для использования диска */
res=f_mount (&fs,"0",1);
if (res==FR_OK)
printf("f_mount ok\n"); else printf(" f_mount no, state= %X ",res);
/* Opens an existing file. If not exist, creates a new file. */
//Коля res=f_open(&fil, "1.txt", FA_WRITE | FA_OPEN_ALWAYS);
res=open_append(&fil, "1.txt");
if (res== FR_OK)
printf(" open ok\n"); else printf(" f_open no, state= %X ", res);
cli();
//Инициализация UART и i/o (printf, ect)
uart_Init();
stdout = &mystdout;
_delay_ms(20); //нужно после старта не писать ничего в ML8088 20ms
/*Так как нам достаточно одного сообщения RMC, в значение параметра CDB-ID 201 запишем 0x00000040. Достаточное время вывода RMC - 0,5 с, то в CDB-ID 190, задающий время вывода Набора сообщений 0 запишем 0x01.*/
printf("$PSTMSETPAR,1201,00000040,0*0D0A");//<cr> - возврат каретки 0x0D, <lf> - подача строки 0x0A.
printf("$PSTMSETPAR,1190,01,0*0D0A");
//Инициализация чеки
ChecaInit(); //use вне прерывания при потери на PE7 низкого уровня
RTC_Time_Ready = xSemaphoreCreateMutex();
FBuf.GPSEventGroupSdOrCC = xEventGroupCreate();
FBuf.ADCEventGroupSdOrCC = xEventGroupCreate();
FBuf.Orient_EventGroupSdOrCC = xEventGroupCreate();
xTaskCreate( vPollingFromButt_lib, ( const char * ) "FatFS", 115, NULL, 2, &PollingFromButt_lib_Handle );
xTaskCreate( vFatFsWrite, ( const char * ) "FatFS", 245, NULL, 2, &FatFsWrite_Handle );
vTaskSuspend(FatFsWrite_Handle);//засыпаем (бэкапить на SD пока не нужно)
xTaskCreate( vCCWrite, ( const char * ) "CCWr", 250, NULL, 2, &CCWrite_Handle );
vTaskSuspend(CCWrite_Handle);//засыпаем (бэкапить на CC пока не нужно)
xTaskCreate( vBottLED, ( const char * ) "vBottLED", 80, NULL, 2, &BottLED_Handle );
vTaskSuspend(BottLED_Handle);//засыпаем (мигнуть пока не нужно)
xTaskCreate( vADCStart, ( const char * ) "ADCStart", 200, NULL, 2, &ADC_Handle );
vTaskSuspend(ADC_Handle);//засыпаем (ADC пока не нужен)
xTaskCreate( vFligthServo, ( const char * ) "FlServ", 200, NULL, 3, &FligthServo_Handle );
vTaskSuspend(FligthServo_Handle);
//xTaskCreate( vOrient, ( const char * ) "Orient", 200, NULL, 2, &Orient_Handle );
//vTaskSuspend(Orient_Handle);//
vTaskStartScheduler(); //start scheduler
while(1){}
}
Размещено на Allbest.ru
...Подобные документы
Задача накопления, обработки и распространения информации. Характеристика систем управления. Схема комплекса средств автоматизации. Функционирование АСУ комплекса средств автоматизации. Требования, предъявляемые к АРМ РД. Структура базы данных.
реферат [29,1 K], добавлен 12.06.2009Разработка алгоритма фильтрации данных, полученных с систем спутниковой навигации с помощью GNSS-модуля. Анализ работы фильтра Калмана, его программная реализация под конкретную задачу. Выбор навигационных модулей для получения данных позиционирования.
дипломная работа [3,6 M], добавлен 12.01.2016Порядок работы менеджера турфирмы. Анализ рынка программных приложений для ведения туристического бизнеса. Выбор средств проектирования и разработки системы управления баз данных. Разработка, реализация и анализ работы программного модуля, его запуск.
дипломная работа [3,4 M], добавлен 19.07.2015Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.
курсовая работа [962,8 K], добавлен 13.01.2016Структура данных в динамической памяти, однонаправленные списки. Разработка программного комплекса, предназначенной для хранения и предоставления пользователям данных об улицах города. Реализация данной программы при помощи метода расширения ядра.
курсовая работа [438,3 K], добавлен 11.01.2016Изучение области применения комплекса для проведения имитационных испытаний микропроцессорных систем железнодорожной автоматики на функциональную безопасность. Разработка программного обеспечения модуля управления и отладки. Тестирование системы команд.
курсовая работа [1,1 M], добавлен 22.11.2014Система управления базами данных как совокупность программных и языковых средств, предназначенных для создания и обработки данных. Анализ деятельности обувной мастерской. Особенности разработки функциональной диаграммы и тестирования программного модуля.
дипломная работа [2,9 M], добавлен 04.11.2012Проблемы и тенденции проектирования операционных систем, структура ОС. Руководящие принципы при разработке интерфейса. Парадигмы пользователя, исполнения и данных. Примеры применения ортогональности и связывания. Методы практической реализации систем.
реферат [60,9 K], добавлен 26.01.2011Основные функции системы управления базами данных. Комплекс программных и лингвистических средств общего или специального назначения. Условия принятой технологии обработки данных. Управление буферами оперативной памяти. Журнализация и её значение.
курсовая работа [1,2 M], добавлен 19.01.2012Выполнение отладки программных модулей с использованием специализированных программных средств. Тестирование, оптимизация кода модуля. Реализация базы данных в конкретной системе управления. Анализ проектной и технической документации на уровне компонент.
дипломная работа [5,0 M], добавлен 08.06.2017Характеристика сущности, назначения, функций операционных систем. Отличительные черты их эволюции. Особенности алгоритмов управления ресурсами. Современные концепции и технологии проектирования операционных систем, требования, предъявляемые к ОС XXI века.
курсовая работа [36,4 K], добавлен 08.01.2011Понятие операционной системы как базового комплекса компьютерных программ, обеспечивающего управление аппаратными средствами компьютера, работу с файлами, ввод и вывод данных, выполнение утилит. История развития операционных систем семейства Windows.
курсовая работа [54,3 K], добавлен 10.01.2012Характеристика флэш-памяти, особого вида энергонезависимой перезаписываемой полупроводниковой памяти. Исследование особенностей организации флэш-памяти. Общий принцип работы ячейки. Обзор основных типов карт памяти. Защита информации на флеш-накопителях.
презентация [9,3 M], добавлен 12.12.2013Анализ программных средств несанкционированного доступа к информации в сетях ЭВМ и способов защиты. Возможности операционных систем по защите и разграничению доступа к информации и выбор самой защищенной. Планирование сети штаба объединения ВВС и ПВО.
дипломная работа [1,0 M], добавлен 14.09.2010- Выбор комплекса задач автоматизации и характеристика существующих бизнес-процессов интернет-магазина
Организационная структура управления интернет-магазином. Классификаторы и системы кодирования. Характеристика нормативно-справочной, входной и оперативной информации. Программное обеспечение, характеристика базы данных. Дерево вызова программных модулей.
курсовая работа [2,6 M], добавлен 18.06.2013 Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Современные SCADA-системы и их безопасность. Диспетчерское управление и сбор данных. Основные компоненты SCADA-систем. Система логического управления. База данных реального времени. Автоматическая конвертация проектов для разных операционных систем.
реферат [253,7 K], добавлен 25.11.2014Основные принципы работы и назначение флеш-памяти, история ее создания, технология изготовления и применение в цифровых устройствах. Обзор и характеристика существующих стандартов: удобство и польза. Флеш-память: особенности туннелирования и стирания.
реферат [90,3 K], добавлен 27.11.2011Автоматизированная система управления как комплекс аппаратных и программных средств, его структура и содержание, назначение и функциональные особенности. Разновидности данных систем и их отличия. Понятие и внутреннее устройство, элементы жесткого диска.
реферат [233,4 K], добавлен 29.12.2010Особенности решения задачи контроля и управления посещением охраняемого объекта. Создание системы как совокупности программных и технических средств. Классификация систем контроля и управления доступом. Основные устройства системы и их характеристика.
презентация [677,7 K], добавлен 03.12.2014