Управление ракетной техникой

Разработка комплекса программных средств управления летательными аппаратами. Контроль измерения параметров полёта. Сохранение информации во флеш-памяти на борту ракеты. Структура данных модуля навигации. Специфика операционных систем в микроконтроллерах.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.