fs

Dependencies:   mbed C12832

Committer:
BOUDEY
Date:
Sun Mar 08 15:16:39 2015 +0000
Revision:
1:3d38f66d6cdc
Parent:
0:f599a3a00b84
FS2004

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BOUDEY 0:f599a3a00b84 1 #include "mbed.h"
BOUDEY 1:3d38f66d6cdc 2 #include "C12832.h" // LCD
BOUDEY 1:3d38f66d6cdc 3 C12832 lcd(p5, p7, p6, p8, p11); // LCD init "
BOUDEY 1:3d38f66d6cdc 4
BOUDEY 1:3d38f66d6cdc 5 Serial FsPC(USBTX,USBRX);
BOUDEY 1:3d38f66d6cdc 6 DigitalOut myled(LED1); //
BOUDEY 1:3d38f66d6cdc 7
BOUDEY 1:3d38f66d6cdc 8 char RxData;
BOUDEY 1:3d38f66d6cdc 9 unsigned short EnRX,Index,NdataRx;
BOUDEY 1:3d38f66d6cdc 10 char RxCOMbuffer[50];
BOUDEY 1:3d38f66d6cdc 11
BOUDEY 1:3d38f66d6cdc 12 unsigned int RPM_Eng1;
BOUDEY 1:3d38f66d6cdc 13 unsigned int TrueAirSpeed;
BOUDEY 1:3d38f66d6cdc 14 int AltitudeOfAircraft;
BOUDEY 1:3d38f66d6cdc 15 unsigned int Heading;
BOUDEY 1:3d38f66d6cdc 16 int Pitch,Roll;
BOUDEY 1:3d38f66d6cdc 17
BOUDEY 1:3d38f66d6cdc 18 void IrqUART_RxPc()
BOUDEY 1:3d38f66d6cdc 19 {
BOUDEY 1:3d38f66d6cdc 20 RxData = FsPC.getc();
BOUDEY 1:3d38f66d6cdc 21
BOUDEY 1:3d38f66d6cdc 22 if(RxData=='$'){
BOUDEY 1:3d38f66d6cdc 23 EnRX = 1;
BOUDEY 1:3d38f66d6cdc 24 RxCOMbuffer[0] = 0;
BOUDEY 1:3d38f66d6cdc 25 RxCOMbuffer[1] = 0;
BOUDEY 1:3d38f66d6cdc 26 NdataRx=0;
BOUDEY 1:3d38f66d6cdc 27 goto finIrq1;
BOUDEY 1:3d38f66d6cdc 28 }
BOUDEY 1:3d38f66d6cdc 29 if(RxData==0x0D){
BOUDEY 1:3d38f66d6cdc 30 if((RxCOMbuffer[0]=='F')&&(RxCOMbuffer[1]=='S')){
BOUDEY 1:3d38f66d6cdc 31 EnRX = 2;
BOUDEY 1:3d38f66d6cdc 32 }else EnRX = 0;
BOUDEY 1:3d38f66d6cdc 33 goto finIrq1;
BOUDEY 1:3d38f66d6cdc 34 }
BOUDEY 1:3d38f66d6cdc 35 if(EnRX==1){
BOUDEY 1:3d38f66d6cdc 36 RxCOMbuffer[NdataRx]=RxData;
BOUDEY 1:3d38f66d6cdc 37 NdataRx++;
BOUDEY 1:3d38f66d6cdc 38 }
BOUDEY 1:3d38f66d6cdc 39 finIrq1:asm{nop};
BOUDEY 1:3d38f66d6cdc 40
BOUDEY 1:3d38f66d6cdc 41 }
BOUDEY 1:3d38f66d6cdc 42
BOUDEY 0:f599a3a00b84 43 int main() {
BOUDEY 1:3d38f66d6cdc 44 //P_IrqUART=&IrqUART_RxPc();
BOUDEY 0:f599a3a00b84 45 FsPC.baud(19200);
BOUDEY 1:3d38f66d6cdc 46 FsPC.attach(&IrqUART_RxPc,Serial::RxIrq);
BOUDEY 0:f599a3a00b84 47 //---------------
BOUDEY 0:f599a3a00b84 48 //unsigned short hh,mm,ss;
BOUDEY 0:f599a3a00b84 49 unsigned short ENG1_Throttle_lever,ENG1_Starter_Switch;
BOUDEY 0:f599a3a00b84 50 unsigned short Elevator_position,Alieron_position,Rudder_position;
BOUDEY 1:3d38f66d6cdc 51
BOUDEY 1:3d38f66d6cdc 52 ENG1_Throttle_lever = 50; //0=000%
BOUDEY 1:3d38f66d6cdc 53 ENG1_Starter_Switch = 1; //0=Off 1=On
BOUDEY 0:f599a3a00b84 54 Elevator_position = 50; //0=min, 50=Null, 100=max
BOUDEY 0:f599a3a00b84 55 Alieron_position = 50; //0=min, 50=Null, 100=max
BOUDEY 0:f599a3a00b84 56 Rudder_position = 50; //0=min, 50=Null, 100=max
BOUDEY 0:f599a3a00b84 57
BOUDEY 1:3d38f66d6cdc 58 lcd.locate(0,10);
BOUDEY 1:3d38f66d6cdc 59 lcd.printf("TAS ,Alt ,Pit ,Rol ,Cap ,RPM");
BOUDEY 1:3d38f66d6cdc 60
BOUDEY 1:3d38f66d6cdc 61 EnRX = 0;
BOUDEY 1:3d38f66d6cdc 62 Index = 0;
BOUDEY 0:f599a3a00b84 63 while(1) {
BOUDEY 1:3d38f66d6cdc 64
BOUDEY 1:3d38f66d6cdc 65 if(FsPC.writeable()){
BOUDEY 1:3d38f66d6cdc 66 FsPC.printf("$FS,%3u,%3u,%3u,%3u,%3u,\r",ENG1_Throttle_lever,ENG1_Starter_Switch,Elevator_position,Alieron_position,Rudder_position);
BOUDEY 1:3d38f66d6cdc 67 }
BOUDEY 1:3d38f66d6cdc 68 wait(0.3);
BOUDEY 1:3d38f66d6cdc 69 if(EnRX==2)
BOUDEY 1:3d38f66d6cdc 70 {
BOUDEY 1:3d38f66d6cdc 71 EnRX=0;
BOUDEY 1:3d38f66d6cdc 72 //TrueAirSpeed,AltitudeOfAircraft,Pitch,Roll,Heading,RPM_Eng1
BOUDEY 1:3d38f66d6cdc 73 sscanf(&RxCOMbuffer[3],"%5u" ,&TrueAirSpeed);
BOUDEY 1:3d38f66d6cdc 74 sscanf(&RxCOMbuffer[9],"%5u" ,&AltitudeOfAircraft);
BOUDEY 1:3d38f66d6cdc 75 sscanf(&RxCOMbuffer[15],"%5u",&Pitch);
BOUDEY 1:3d38f66d6cdc 76 sscanf(&RxCOMbuffer[21],"%5u",&Roll);
BOUDEY 1:3d38f66d6cdc 77 sscanf(&RxCOMbuffer[27],"%5u",&Heading);
BOUDEY 1:3d38f66d6cdc 78 sscanf(&RxCOMbuffer[33],"%5u",&RPM_Eng1);
BOUDEY 1:3d38f66d6cdc 79 Pitch = Pitch-1800;
BOUDEY 1:3d38f66d6cdc 80 Roll = Roll-1800;
BOUDEY 1:3d38f66d6cdc 81
BOUDEY 1:3d38f66d6cdc 82 lcd.locate(0,20);
BOUDEY 1:3d38f66d6cdc 83 lcd.printf("%3u,%4u,%4d,%4d,%4u,%4u",TrueAirSpeed,AltitudeOfAircraft,Pitch,Roll,Heading,RPM_Eng1);
BOUDEY 1:3d38f66d6cdc 84
BOUDEY 1:3d38f66d6cdc 85 //- Exemple : TAS Hold at 70 mph
BOUDEY 1:3d38f66d6cdc 86 if((TrueAirSpeed<700-2)&&(ENG1_Throttle_lever<99))ENG1_Throttle_lever=ENG1_Throttle_lever+1;
BOUDEY 1:3d38f66d6cdc 87 if((TrueAirSpeed>700+2)&&(ENG1_Throttle_lever>1))ENG1_Throttle_lever=ENG1_Throttle_lever-1;
BOUDEY 1:3d38f66d6cdc 88 //- Exemple Roll Stabilization at 0°=1800;
BOUDEY 1:3d38f66d6cdc 89 Alieron_position=50;
BOUDEY 1:3d38f66d6cdc 90 if((Roll<-10))Alieron_position=50-5;
BOUDEY 1:3d38f66d6cdc 91 if((Roll>+10))Alieron_position=50+5;
BOUDEY 1:3d38f66d6cdc 92 //- Exemple : AltitudeOfAircraft Hold at 1000 m +-5m
BOUDEY 1:3d38f66d6cdc 93 Elevator_position = 50;
BOUDEY 1:3d38f66d6cdc 94 if (AltitudeOfAircraft>6000){
BOUDEY 1:3d38f66d6cdc 95 if(AltitudeOfAircraft<10000-50)Elevator_position=50+10;
BOUDEY 1:3d38f66d6cdc 96 if(AltitudeOfAircraft>10000+50)Elevator_position=50-10;
BOUDEY 1:3d38f66d6cdc 97 }
BOUDEY 1:3d38f66d6cdc 98 }
BOUDEY 1:3d38f66d6cdc 99 myled = !myled ;
BOUDEY 0:f599a3a00b84 100 }
BOUDEY 0:f599a3a00b84 101 }