
fs
main.cpp@1:3d38f66d6cdc, 2015-03-08 (annotated)
- Committer:
- BOUDEY
- Date:
- Sun Mar 08 15:16:39 2015 +0000
- Revision:
- 1:3d38f66d6cdc
- Parent:
- 0:f599a3a00b84
FS2004
Who changed what in which revision?
User | Revision | Line number | New 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 | } |