Ahmed_PFE_Embarq_300415
Dependencies: C12832 LM75B mbed
Fork of Ahmed_Embarq_Prog by
Diff: Ah_main.cpp
- Revision:
- 1:197b9fed6092
- Parent:
- 0:05a20e3e3179
--- a/Ah_main.cpp Tue Apr 21 10:16:20 2015 +0000 +++ b/Ah_main.cpp Thu Apr 30 12:24:33 2015 +0000 @@ -3,370 +3,503 @@ #include "MSCFileSystem.h" //----------------------- #include "Define.h" -#include "RecGPS.h" +#include "Dec_GPS.h" //----------------------- - MSCFileSystem fsLog("USB"); // Enregsetement des doonées "Flash Disque USB" - FILE *Fs_Log; - I2C _I2C(p28,p27); // I2C SCL,SDA - Serial _ComGPS(p13, p14); // TX non connecté, pin14 RX. - Serial _ComXbee(p9,p10); // Serial tx(p9),rx(10) - #define pRST_Xbee p30 // pin RST Xbee - Ticker _Ticker5ms; - Timer _Timer1; // Timer pour mesurer le temps - - DigitalIn boutonStart(p13); // Joystique Left : Boutton pour pouvoir controler le debut de l'enregistrement - DigitalIn boutonEnd(p16); // Joystique Right : Boutton pour pouvoir controler la fin de l'enregistrement +MSCFileSystem fsLog("USB"); // Enregsetement des doonées "Flash Disque USB" +FILE *Fs_Log; +I2C _I2C(p28,p27); // I2C SCL,SDA +Serial _ComGPS(NC, p14); // TX non connecté, pin14 RX. +Serial _ComXbee(p9,p10); // Serial tx(p9),rx(10) +#define pRST_Xbee p30 // pin RST Xbee +Ticker _Ticker1ms; +Timer _Timer1; // Timer pour mesurer le temps - DigitalOut RSTXbee (p30); - DigitalOut LedGPS (LED1); - DigitalOut LedLog (LED2); - DigitalOut LedXbee (LED3); - DigitalOut LedError(LED4); +DigitalIn boutonStart(p13); // Joystique Left : Boutton pour pouvoir controler le debut de l'enregistrement +DigitalIn boutonEnd(p16); // Joystique Right : Boutton pour pouvoir controler la fin de l'enregistrement + +DigitalOut RSTXbee (p30); +DigitalOut LedGPS (LED1); +DigitalOut LedLog (LED2); +DigitalOut LedXbee (LED3); +DigitalOut LedError(LED4); //----------------------- -StructGPS GPS; +StructGPS GPS,OldGPS; unsigned long TimeBtpress=0,TIMER_10ms; -unsigned long FileIndex; +unsigned long FileIndex0,FileIndex; char Txt[16],Txt_Log[100],Txt_Tx2GSC[100],DataLogFileName[32]; -unsigned long tk1; // des variables pour stocker les temps de mesure //----------------------------------- Reception des données GPS 10Hz -void AutoMat_GPS(){ -static unsigned char i=0,j=0,GPSDataType=0,ET_AutoMat_GPS=ET_01; -static char gps_mess; - while(_ComGPS.readable()){ - gps_mess=_ComGPS.getc(); - - switch(ET_AutoMat_GPS){ - case ET_01: if(gps_mess==prompt$GP[i]){ - i++; - if(i==3){ - i=0; - j=0; - ET_AutoMat_GPS=ET_02; - } - }else i=0; + +void AutoMat_GPS() +{ + static unsigned char i=0,j=0,GPSDataType=0,ET_AutoMat_GPS=ET_01; + static char gps_mess; + while(_ComGPS.readable()) { + gps_mess=_ComGPS.getc(); + + switch(ET_AutoMat_GPS) { + case ET_01: + if(gps_mess==prompt$GP[i]) { + i++; + if(i==3) { + i=0; + j=0; + ET_AutoMat_GPS=ET_02; + } + } else i=0; + break; + case ET_02: + if(gps_mess==promptGGA[i]) { + i++; + if(i==3) { + i=0; + j=0; + ET_AutoMat_GPS = ET_03; + GPSDataType = GGA; + } + break; + } else i=0; + + if(gps_mess==promptRMC[j]) { + j++; + if(j==3) { + j=0; + ET_AutoMat_GPS=ET_03; + GPSDataType=RMC; + } + break; + } else j=0; + + ET_AutoMat_GPS=ET_01; + break; + + case ET_03: + _MsgGPSRx[i]=gps_mess; + i++; + if((i<NData_GPS_Max)&&(gps_mess!=0x0D))break; + + switch(GPSDataType) { + + case GGA: + DecodageGPGGA(MsgGPSRx,i-1,&OldGPS);// l'appel de la fonction de decodage du message GPGGA + if (OldGPS.GGA_Valid == 0x01) { + OldGPS.GGA_Valid = 0x00; + LedGPS = !LedGPS; + } break; - case ET_02: if(gps_mess==promptGGA[i]){ - i++; - if(i==3){ - i=0; - j=0; - ET_AutoMat_GPS = ET_03; - GPSDataType = GGA; - } - break; - }else i=0; - - if(gps_mess==promptRMC[j]){ - j++; - if(j==3){ - j=0; - ET_AutoMat_GPS=ET_03; - GPSDataType=RMC; - } - break; - }else j=0; - - ET_AutoMat_GPS=ET_01; + case RMC: //DecodageGPRMC(i-1);// l'appel de la fonction de decodage du message GPGGA //DecodageGPRMC(i-1); + break; + default: break; - - case ET_03: _MsgGPSRx[i]=gps_mess; - i++; - if((i<NData_GPS_Max)&&(gps_mess!=0x0D))break; - - switch(GPSDataType){ - - case GGA: DecodageGPGGA(i-1);// l'appel de la fonction de decodage du message GPGGA - LedGPS=!LedGPS; - if (GpsData.GGA_Valid==0x01){ - GpsData.GGA_Valid=0x00; - GPS=GpsData; - } - break; - case RMC: //DecodageGPRMC(i-1);// l'appel de la fonction de decodage du message GPGGA //DecodageGPRMC(i-1); - break; - default: break; - } - ET_AutoMat_GPS=ET_01; - GPSDataType=0; - default : break; + } + ET_AutoMat_GPS=ET_01; + GPSDataType = NULL; + default : + break; } - } -} + } +} //----------------------------------- Transmission données au sol 10 packet/s -void AutoMat_Xbee_Tx(){ - switch (ET_AutoMat_Xbee_Tx) { - case ET_01: - LedXbee = !LedXbee; - sprintf(Txt_Tx2GSC,"$GPS;%lu;%lu;",OldTimer_10ms,GPS.Qual); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_02; - break; - case ET_02 : - sprintf(Txt_Tx2GSC,"%2u:%2u:%2u;",GPS.hh,GPS.mm,GPS.ss); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_03; - break; - case ET_03 : - sprintf(Txt_Tx2GSC,"%2u;%2u.%u;%c;",GPS.LatDeg,GPS.LatMin,GPS.Latmmmm,GPS.LatDir); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_04; - break; - case ET_04 : - sprintf(Txt_Tx2GSC,"%3u;%2u.%u;%c;",GPS.LongDeg,GPS.LongMin,GPS.Longmmmm,GPS.LongDir); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_05; - break; - case ET_05 : - sprintf(Txt_Tx2GSC,"%c%u\r\n",GPS.SignHMSL,GPS.HMSL); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_06; - break; - //------------ - case ET_06 : - sprintf(Txt_Tx2GSC,"$PDV;%lu;%4u;%4u;%4u;%4d\r\n",OldTimer_10ms,OldCAP,OldALT,OldTAS,OldTEMPRE); - _ComXbee.printf("%s",Txt_Tx2GSC); - ET_AutoMat_Xbee_Tx = ET_00; - break; - default: ET_AutoMat_Xbee_Tx=ET_00; break; - } +void AutoMat_Xbee_Tx() +{ + static char LIndex=0; + switch (ET_AutoMat_Xbee_Tx) { + case ET_01: + LIndex++; + ET_AutoMat_Xbee_Tx = ET_00; + if(LIndex>=5) ET_AutoMat_Xbee_Tx = ET_02; + break; + case ET_02: + LIndex = 0; + LedXbee = !LedXbee; + sprintf(Txt_Tx2GSC,"$TIME:%lu\r\n",OldTIMER_10ms); + _ComXbee.printf("%s",Txt_Tx2GSC); + ET_AutoMat_Xbee_Tx = ET_03; + break; + case ET_03 : + sprintf(Txt_Tx2GSC,"!!!UTC:%2u%2u%2u,***\r\n",GPS.hh,GPS.mm,GPS.ss); + _ComXbee.printf("%s",Txt_Tx2GSC); + ET_AutoMat_Xbee_Tx = ET_04; + break; + case ET_04 : + //delay 10ms + ET_AutoMat_Xbee_Tx = ET_05; + break; + case ET_05 : + sprintf(Txt_Tx2GSC,"!!!LAT:%ld,LON:%ld,***\r\n",GPS.LatDeg,GPS.LonDeg); + _ComXbee.printf("%s",Txt_Tx2GSC); + ET_AutoMat_Xbee_Tx = ET_06; + break; + case ET_06 : + //delay 10ms + ET_AutoMat_Xbee_Tx = ET_07; + break; + case ET_07 : + sprintf(Txt_Tx2GSC,"!!!PCH:%.2f,RLL:%.2f,CRS:%.2f,SPD:%.2f,ALT:%.2f,***\r\n",HK_PCH,HK_RLL,HK_CRS,HK_SPD,HK_ALT); + _ComXbee.printf("%s",Txt_Tx2GSC); + ET_AutoMat_Xbee_Tx = ET_08; + break; + case ET_08 : + ET_AutoMat_Xbee_Tx = ET_00; + break; + default: + ET_AutoMat_Xbee_Tx=ET_00; + break; + } } //----------------------------------- LogData 100Hz, LogGPS 10Hz -void AutoMat_DataLog(){ - switch (ET_AutoMat_DataLog){ - - case ET_01: - LedLog=!LedLog; - //-------------- - OldTimer_10ms = TIMER_10ms; - // au max 100us (0.1ms) - sprintf(Txt_Log,"PDV;%lu;%5d;%5d;%5d;%5d\r\n",TIMER_10ms,CAP,ALT,TAS,TEMPRE); - // au max 5000 us (5ms) - fprintf(Fs_Log,Txt_Log); - // 100us - sprintf(Txt_Log,"GPS;%lu;%1u;%2u:%2u:%2u;%2u;%2u.%u;%c;%3u;%2u.%u;%c;%c%u\r\n",TIMER_10ms,GPS.Qual,GPS.hh,GPS.mm,GPS.ss,GPS.LatDeg,GPS.LatMin,GPS.Latmmmm,GPS.LatDir,GPS.LongDeg,GPS.LongMin,GPS.Longmmmm,GPS.LongDir,GPS.SignHMSL,GPS.HMSL); - // au max 5 ms - fprintf(Fs_Log,Txt_Log); - //------------------ - ET_AutoMat_DataLog++; - break; - case ET_02: - case ET_03: - case ET_04: - case ET_05: - case ET_06: - case ET_07: - case ET_08: - case ET_09: - case ET_10: - // au max 100us (0.1ms) - sprintf(Txt_Log,"PDV;%lu;%5d;%5d;%5d;%5d\r\n",TIMER_10ms,CAP,ALT,TAS,TEMPRE); - // au max 5000 us (5ms) - fprintf(Fs_Log,Txt_Log); - break; - - default: break ; - } -} -//------------------------------------------ Sansors -void AutoMat_ALT_EAGLE_V4(){ - static char L_i2c_Data[2],error; - switch (ET_AutoMat_ALT) { - case ET_01 : - L_i2c_Data[0] = 0x07; // Send "register number" command to sensor - error = _I2C.write(Add_Sensor_ALT_EG4, L_i2c_Data, 1,true); // Send command string - if (error==0) ET_AutoMat_ALT = ET_02; - break; - case ET_02 : - error = _I2C.read(Add_Sensor_ALT_EG4, L_i2c_Data, 2, true); - if (error==0) { - ALT = *((unsigned short*)L_i2c_Data)&0xffff; //altitude en décimètre - ALT = ALT-3000; - } - ET_AutoMat_ALT = ET_01; - break; - default : break; +#ifdef EN_AutoMat_DataLog +void AutoMat_DataLog() +{ + static char ET_Sub_AutoMat = ET_00; + switch (ET_AutoMat_DataLog) { + + case ET_01: + LedLog=!LedLog; + //-------------- + // au max 100us (0.1ms) + sprintf(Txt_Log,"%lu;GPS;%1u;%2u:%2u:%2u;%10ld;%10ld;%ld;",TIMER_10ms,GPS.Qual,GPS.hh,GPS.mm,GPS.ss,GPS.LatDeg,GPS.LonDeg,GPS.HMSL); + // au max 5000 us (5ms) + fprintf(Fs_Log,Txt_Log); + // 100us + sprintf(Txt_Log,"P;%5d;%5d;%5d;%5d\r\n",CRS,ALT,SPD,TEM); + // au max 5 ms + fprintf(Fs_Log,Txt_Log); + //------------------ + ET_Sub_AutoMat = ET_01; + ET_AutoMat_DataLog = ET_02; + break; + case ET_02: + // au max 100us (0.1ms) + sprintf(Txt_Log,"%lu;;;;;;;",TIMER_10ms); + // au max 5000 us (5ms) + fprintf(Fs_Log,Txt_Log); + // au max 100us (0.1ms) + sprintf(Txt_Log,"P;%5d;%5d;%5d;%5d\r\n",CRS,ALT,SPD,TEM); + // au max 5000 us (5ms) + fprintf(Fs_Log,Txt_Log); + ET_Sub_AutoMat++; + if(ET_Sub_AutoMat>=ET_10) ET_AutoMat_DataLog = ET_00; + break; + + default: break ; } -} - -void AutoMat_TAS_EAGLE_V4(){ - static char L_i2c_Data[2],error; - switch (ET_AutoMat_TAS) { - case ET_01 : - L_i2c_Data[0] = 0x07; // Send "register number" command to sensor - error = _I2C.write(Add_Sensor_TAS_EG4, L_i2c_Data, 1,true); // Send command string - if (error==0) ET_AutoMat_TAS = ET_02; - break; +} +#endif +//------------------------------------------ Sansors +void AutoMat_ALT_EAGLE_V4() +{ + static char L_i2c_Data[2],LIndex,Lerror; + switch (ET_AutoMat_ALT) { + case ET_01 : + L_i2c_Data[0] = 0x07; // Send "register number" command to sensor + Lerror = _I2C.write(Add_Sensor_ALT_EG4, L_i2c_Data, 1,true); // Send command string + if (Lerror==0) ET_AutoMat_ALT = ET_02; + LIndex = 1; + break; + case ET_02 : - error = _I2C.read(Add_Sensor_TAS_EG4, L_i2c_Data, 2, true); - if (error==0) { - TAS = *((unsigned short*)L_i2c_Data)&0xffff; //altitude en décimètre - TAS = sqrt((float)(TAS-offset_TAS)*5.87755102); - } - ET_AutoMat_TAS = ET_01; - break; - default : break; + LIndex++; + if(LIndex>=Wait_Time1_ms) ET_AutoMat_ALT = ET_03; + break; + + case ET_03 : + Lerror = _I2C.read(Add_Sensor_ALT_EG4, L_i2c_Data, 2, true); + if (Lerror==0) { + ALT = *((unsigned short*)L_i2c_Data)&0xffff; //altitude en décimètre + ALT = ALT-3000; + } + ET_AutoMat_ALT = ET_01; + break; + default : break; } -} -void AutoMat_CAP_HMC(){ - static char L_i2c_Data[2],error; +} + +void AutoMat_TAS_EAGLE_V4() +{ + static char L_i2c_Data[2],LIndex,Lerror; + unsigned short SPD_short; + float SPD_float; + switch (ET_AutoMat_TAS) { + case ET_01 : + L_i2c_Data[0] = 0x07; // Send "register number" command to sensor + Lerror = _I2C.write(Add_Sensor_TAS_EG4, L_i2c_Data, 1,true); // Send command string + if (Lerror==0) ET_AutoMat_TAS = ET_02; + LIndex = 1; + break; + + case ET_02 : + LIndex++; + if(LIndex>=Wait_Time1_ms) ET_AutoMat_TAS = ET_03; + break; + + case ET_03 : + Lerror = _I2C.read(Add_Sensor_TAS_EG4, L_i2c_Data, 2, true); + if (Lerror==0) { + SPD_short = *((unsigned short*)L_i2c_Data)&0xffff; + SPD_float = 10*sqrt((float)(SPD_short-Offset_SPD)*5.87755102); + SPD = 10*SPD_float; // mph*10 + } + ET_AutoMat_TAS = ET_01; + break; + default : + break; + } +} +void AutoMat_CAP_HMC() +{ + static char L_i2c_Data[2],LIndex,Lerror; switch (ET_AutoMat_CAP) { - case ET_01 : - L_i2c_Data[0] = 0x07; // Send "register number" command to sensor - error = _I2C.write(Add_Sensor_CAP_HMC, L_i2c_Data, 1,true); // Send command string - if (error==0) ET_AutoMat_CAP = ET_02; - break; + case ET_01 : + L_i2c_Data[0] = 0x07; // Send "register number" command to sensor + Lerror = _I2C.write(Add_Sensor_CAP_HMC, L_i2c_Data, 1,true); // Send command string + if (Lerror==0) ET_AutoMat_CAP = ET_02; + LIndex = 1; + break; + case ET_02 : - error = _I2C.read(Add_Sensor_CAP_HMC , L_i2c_Data, 2, true); - if (error==0) { - CAP = *((unsigned short*)L_i2c_Data)&0xffff; //altitude en décimètre - } - ET_AutoMat_CAP = ET_01; - break; - default : break; + LIndex++; + if(LIndex>=Wait_Time1_ms) ET_AutoMat_CAP = ET_03; + break; + + case ET_03 : + Lerror = _I2C.read(Add_Sensor_CAP_HMC , L_i2c_Data, 2, true); + if (Lerror==0) { + CRS = *((unsigned short*)L_i2c_Data)&0xffff; //Cap en deg*10 + } + ET_AutoMat_CAP = ET_01; + break; + default : + break; } -} -//------------------- -void Sansors_Init(){ - char L_i2c_Data[3]; - //------------ init Compass HMC //Continuous mode, periodic set/reset, 20Hz measurement rate. - L_i2c_Data[0] = HMC6352_CONTINUOUS; - L_i2c_Data[1] = 0x01; - L_i2c_Data[2] = 20; - _I2C.write(Add_Sensor_CAP_HMC,L_i2c_Data,3); // Send command - //---------------------------- - wait_ms(1); //attendre 1mS - //------------- Get Offset TAS - L_i2c_Data[0] = 0x01; // Send "read data" command to sensor - _I2C.write(Add_Sensor_TAS_EG4,L_i2c_Data,1); // Send command string - wait_ms(1); //attendre 400µS avant de relancer - _I2C.read(Add_Sensor_TAS_EG4,L_i2c_Data, 2); - offset_TAS = *((unsigned short*)L_i2c_Data)&0xffff; // Altitude en décimètre } -void Irq05ms(){ -static unsigned char L_Flag_Timer=0, LTIMER005ms=0,LTIMER010ms=0; - LTIMER005ms++; - L_Flag_Timer = 1; - //----------------------------- - if(LTIMER005ms >= 2){ - //----------------- - TIMER_10ms = TIMER_10ms+1; - LTIMER005ms = 0; - LTIMER010ms++; - L_Flag_Timer = 2; - //----------------- - if(LTIMER010ms >= 10){ - LTIMER010ms = 0; - L_Flag_Timer = 3; - } - //----------------- - } - - AutoMat_ALT_EAGLE_V4(); - AutoMat_TAS_EAGLE_V4(); - AutoMat_CAP_HMC(); - - if (Flag_Timer != 0xFF) Flag_Timer = L_Flag_Timer; - //----------------------------- - } - -int main() { +void AutoMat_TEM_LM75B() +{ + static char L_i2c_Data[2],LIndex,Lerror; + switch (ET_AutoMat_TEM) { + case ET_01 : + L_i2c_Data[0] = 0x07; // Send "register number" command to sensor + Lerror = _I2C.write(Add_Sensor_TEM_LM75B, L_i2c_Data, 1,true); // Send command string + if (Lerror==0) ET_AutoMat_TEM = ET_02; + LIndex = 1; + break; + + case ET_02 : + LIndex++; + if(LIndex>=Wait_Time1_ms) ET_AutoMat_TEM = ET_03; + break; + + case ET_03 : + Lerror = _I2C.read(Add_Sensor_TEM_LM75B, L_i2c_Data, 2, true); + if (Lerror==0) { + // CRS = *((unsigned short*)L_i2c_Data)&0xffff; //Cap en deg*10 + } + ET_AutoMat_TEM = ET_01; + break; + default : + break; + } +} +//----------------- LCD ------------ +void AutoMat_LCD_Ext() +{ + static char Lerror; + switch (ET_AutoMat_LCD) { + case ET_01 : + Lerror = _I2C.write(Add_LCD_Ext, NULL, 0,true); + if (Lerror==0) ET_AutoMat_LCD = ET_02; + break; + case ET_02 : + // Code ici + ET_AutoMat_LCD = ET_01; + break; + default : + break; + } +} +//--------------------------------- + +void Sansors_Init() +{ + char L_i2c_Data[3]; + //------------ init Compass HMC //Continuous mode, periodic set/reset, 20Hz measurement rate. + L_i2c_Data[0] = HMC6352_CONTINUOUS; + L_i2c_Data[1] = 0x01; + L_i2c_Data[2] = 20; + _I2C.write(Add_Sensor_CAP_HMC,L_i2c_Data,3); // Send command + //---------------------------- + wait_ms(1); //attendre 1mS + //------------- Get Offset TAS + L_i2c_Data[0] = 0x01; // Send "read data" command to sensor + _I2C.write(Add_Sensor_TAS_EG4,L_i2c_Data,1); // Send command string + wait_ms(1); //attendre 400µS avant de relancer + _I2C.read(Add_Sensor_TAS_EG4,L_i2c_Data, 2); + Offset_SPD = *((unsigned short*)L_i2c_Data)&0xffff; // Altitude en décimètre +} + +void Irq01ms() +{ + static unsigned char LFlag_Timer=0, LTIMER001ms=0,LTIMER010ms=0; + LTIMER001ms++; + LFlag_Timer = 1; + //----------------------------- + if(LTIMER001ms >= 10) { + //----------------- + LTIMER001ms = 0; + LFlag_Timer = 3; + LTIMER010ms = LTIMER010ms+1; + //----------------- + if(LTIMER010ms >= 10) { + LTIMER010ms = 0; + LFlag_Timer = 7; + } + //----------------- + TIMER_10ms = TIMER_10ms+1; + } + AutoMat_ALT_EAGLE_V4(); + AutoMat_TAS_EAGLE_V4(); + AutoMat_CAP_HMC(); + AutoMat_TEM_LM75B();// temperateur LM75B - CAP = 0; - TAS = 0; - ALT = 0; - LedError = 0; - //-------------------- - _I2C.frequency(100000); - _ComGPS.baud(38400); //GPS V4 EAGLE - _ComGPS.attach(&AutoMat_GPS,Serial::RxIrq); // defini une interruption chaque foix que le recepteur GPS envoi un charactere - _ComXbee.baud(38400); - RSTXbee=0; - wait(0.5); - RSTXbee=1; - Sansors_Init(); - //-------------------- - //-------------- File Creat RGPSLogX.csv and DataLogX.csv X=FileIndex - FileIndex = 5; - //-------------------- - sprintf(DataLogFileName,"/USB/DataLog%lu.csv",FileIndex); - Fs_Log = fopen(DataLogFileName, "w");//ajouter un nouveau fichier et écraser l'ancien - //-------------------- Verification de la creations des fichers - if(Fs_Log==NULL) goto LabError; - fprintf(Fs_Log,"LogData\r\n"); - fprintf(Fs_Log,"GPS;TIMER1;Qual;Heur;LatD;LatMin;LatDir;LongD;LongMin;LongDir;HMSL\r\n"); - fprintf(Fs_Log,"PDV;TIMER1;CAP;ALT;TAS;Tem\r\n"); - //-------------------- - // Active les Automat - ET_AutoMat_ALT = ET_01; - ET_AutoMat_TAS = ET_01; - ET_AutoMat_CAP = ET_01; - _Ticker5ms.attach_us(&Irq05ms,5000); - // la variable un nom de 1ms mais on fait ca sur 5ms ce n'est pas cohérent !!!!!!! - // Samir - //-------------------- - CAP = 9991; - ALT = 9992; - TAS = 9993; - TEMPRE = 9994; - TimeBtpress=0; - while(TimeBtpress<100){ + if (Flag_Timer != 0xFF) Flag_Timer = LFlag_Timer; + //----------------------------- +} + +int main() +{ + + CRS = 0; + SPD = 0; + ALT = 0; + LedError = 0; + //-------------------- + _I2C.frequency(100000); + _ComGPS.baud(38400); //GPS V4 EAGLE + _ComGPS.attach(&AutoMat_GPS,Serial::RxIrq); // defini une interruption chaque foix que le recepteur GPS envoi un charactere + _ComXbee.baud(38400); + RSTXbee=0; + wait(0.5); + RSTXbee=1; + Sansors_Init(); + //-------------------- + //-------------- File Creat RGPSLogX.csv and DataLogX.csv X=FileIndex +#ifdef EN_AutoMat_DataLog + FileIndex = 0; +Started: + FileIndex++; + + //-------------------- + sprintf(DataLogFileName,"/USB/DataLog%4lu.csv",FileIndex); + Fs_Log = fopen(DataLogFileName, "r");//ajouter un nouveau fichier et écraser l'ancien + if (Fs_Log!=NULL) goto Started; + + Fs_Log = fopen(DataLogFileName, "w");//ajouter un nouveau fichier et écraser l'ancien + //-------------------- Verification de la creations des fichers + if(Fs_Log==NULL) goto LabError; + fprintf(Fs_Log,"LogData\r\n"); + fprintf(Fs_Log,"TIMER;GPS;Qual;Heur;LatD;LongD;HMSL;"); + fprintf(Fs_Log,"PDV;CRS;ALT;SPD;TEM\r\n"); +#endif + //-------------------- + // Active les Automat + ET_AutoMat_ALT = ET_01; + ET_AutoMat_TAS = ET_01; + ET_AutoMat_CAP = ET_01; + ET_AutoMat_TEM = ET_01; + ET_AutoMat_LCD = ET_01; + _Ticker1ms.attach_us(&Irq01ms,Irq_Time_us); + // la variable un nom de 1ms mais on fait ca sur 5ms ce n'est pas cohérent !!!!!!! + // Samir + //-------------------- + CRS = 9991;// initialisation + ALT = 9992;// initialisation + SPD = 9993;// initialisation + TEM = 9994;// initialisation + Flag_Timer = 0; + //------------------- + TimeBtpress=0; + while(TimeBtpress<100) { // Boutton pour pouvoir controler le debut de l'enregistrement if(boutonStart == 1)TimeBtpress++; - if(boutonStart == 0)TimeBtpress=0; - wait(0.005); - } - //while(boutonStart==0); // Boutton pour pouvoir controler le debut de l'enregistrement - Flag_Timer = 0; - TimeBtpress=0; - while(boutonEnd==0){ // Boutton pour pouvoir controler la fin de l'enregistrement - - switch (Flag_Timer) { + else TimeBtpress=0; + wait_ms(10); + } + //------------------- + TimeBtpress=0; + while(TimeBtpress<0xFFFF) { + + switch (Flag_Timer) { - case 0x01: + case 0x01:// 05 ms + Flag_Timer = 0; + // Boutton pour pouvoir controler la fin de l'enregistrement + if(boutonEnd == 1)TimeBtpress++; + else TimeBtpress=0; + //------------------ + break; + case 0x03:// 10 ms + Flag_Timer = 0xFF; + #ifdef EN_AutoMat_DataLog + AutoMat_DataLog(); + #endif + AutoMat_Xbee_Tx(); Flag_Timer = 0; break; - case 0x02: - Flag_Timer = 0xFF; - AutoMat_DataLog(); - AutoMat_Xbee_Tx(); + case 0x07:// 100 ms + Flag_Timer = 0xFF; + + GPS = OldGPS; + OldTIMER_10ms = TIMER_10ms; + OldALT = ALT; + OldSPD = SPD; + OldCRS = CRS; + OldTEM = TEM; + + HK_ALT = OldALT/10.0; + HK_SPD = OldSPD/10.0; + HK_CRS = OldCRS/10.0; - Flag_Timer = 0; - break; - case 0x03: - Flag_Timer = 0xFF; - - GPS = GpsData; - OldALT = ALT; - OldTAS = TAS; - OldCAP = CAP; - OldTEMPRE = TEMPRE; + ET_AutoMat_Xbee_Tx = ET_01; + ET_AutoMat_DataLog = ET_01; - ET_AutoMat_Xbee_Tx = ET_01; - ET_AutoMat_DataLog = ET_01; + //------------------ vérification si le Bt de fin est press pendent un Dt=100 ms + if(TimeBtpress>100) { + TimeBtpress = 0xFFFF; + ET_AutoMat_Xbee_Tx = ET_00; + ET_AutoMat_DataLog = ET_00; + } + //------------------ + #ifdef EN_AutoMat_DataLog AutoMat_DataLog(); - AutoMat_Xbee_Tx(); - + #endif + AutoMat_Xbee_Tx(); + Flag_Timer = 0x00; break; - - default: break; - }// fin switch - } - _Ticker5ms.detach(); - _ComGPS.attach(NULL,Serial::RxIrq); - LedXbee = 0; - LedGPS = 0; - LedLog = 1; - fclose(Fs_Log); - wait(1); - LedLog = 0; - while(1){ + + default: + break; + }// fin switch + }// fin while + _Ticker1ms.detach(); // ticker detach + _ComGPS.attach(NULL,Serial::RxIrq); // detach Com GPS + LedXbee = 0; + LedGPS = 0; +#ifdef EN_AutoMat_DataLog + LedLog = 1; + fprintf(Fs_Log,"END\r\n"); + fclose(Fs_Log); + wait(1); + LedLog = 0; +#endif + while(1) { LedError=!LedError; wait(0.5); - } + } //---------------- -LabError: +#ifdef EN_AutoMat_DataLog +LabError: LedError=1; +#endif //---------------- }