
15.02.2019. revision
Dependencies: mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa EEPROM_DISCO_F469NI
Diff: CAN_library.cpp
- Revision:
- 4:0e8413277df8
- Parent:
- 3:a06e417a5a2c
- Child:
- 5:4b63e6845a8e
--- a/CAN_library.cpp Thu Jul 05 20:18:32 2018 +0000 +++ b/CAN_library.cpp Sat Jul 07 14:42:17 2018 +0000 @@ -10,12 +10,12 @@ extern uint8_t distance_flag; extern uint8_t lvdtref; -extern uint16_t Rpm0, Speed0, Gear0, Water_Temp0, Oil_Temp0, TPS0, Brakes0, Oil_P0, MAP0, Air_Temp0, Lambda0, Volts0, Crank0; -extern uint16_t Rpm, Speed, Gear, Water_Temp, Oil_Temp, TPS, Brakes, Oil_P, MAP, Air_Temp, Lambda, Volts, Crank; +extern uint16_t Rpm0, Speed0, Gear0, Water_Temp0, Oil_Temp0, TPS0, Brakes0, MAP0, Air_Temp0, Lambda0, Volts0; +extern uint16_t Rpm, Speed, Gear, Water_Temp, Oil_Temp, TPS, Brakes, MAP, Air_Temp, Lambda, Volts; extern int FL_LVDT0, FR_LVDT0, RL_LVDT0, RR_LVDT0, FL_LVDT, FR_LVDT, RL_LVDT, RR_LVDT; extern int FL_LVDT_Ref,FR_LVDT_Ref,RL_LVDT_Ref,RR_LVDT_Ref; -int LVDT_Max=150; -extern float Meter_counter,Meter_counter0; +int LVDT_Max=1024; +//extern float Meter_counter,Meter_counter0; extern char cmd[3]; extern int addr; extern I2C i2c; @@ -129,16 +129,16 @@ break; case(9): newData=AllocData(msgDistance); - if(distance_flag==0){ - InitDistanceMeter(newData); - distance_flag=1; - }; + //if(distance_flag==0){ + // InitDistanceMeter(newData); + // distance_flag=1; + //}; rx_flag = rx_flag ^ (1<<9); // for each new id add new case statement }; }; }; - UpdateMeterCounter(); + //UpdateMeterCounter(); }; uint16_t * AllocData(CANMessage msg){ //Unpack CAN message @@ -150,79 +150,76 @@ return newData; }; -void InitDistanceMeter(uint16_t newData[4]){ +/*void InitDistanceMeter(uint16_t newData[4]){ uint32_t DistanceBuffer; DistanceBuffer=(uint32_t)((newData[1]<<16) | (newData[0])); Meter_counter=float(DistanceBuffer)*10; - pc.printf("Init success, start km=%d,%f\n",DistanceBuffer,Meter_counter); + //pc.printf("Init success, start km=%d,%f\n",DistanceBuffer,Meter_counter); t_int.start(); t_store.start(); -}; -/*void InitDistanceMeter(){ - uint32_t distance_buffer; - if(sd.ReadBlocks((uint32_t*)distance_buffer,DISTANCE_MEMORY_ADDR ,1,SD_DATATIMEOUT)){ - Meter_counter=(float(distance_buffer))/100; - - -};*/ -/*void InitDistanceMeter(){ - - uint8_t DistanceBuffer8[4]; - uint32_t DistanceBuffer32; - if(eep.ReadBuffer(DistanceBuffer8, 0, (uint16_t*)4)){ - pc.printf("Read success\n"); - } - DistanceBuffer32=(DistanceBuffer8[0]<<24) | (DistanceBuffer8[1]<<16) | (DistanceBuffer8[2]<<8) | DistanceBuffer8[3]; - Meter_counter=(float(DistanceBuffer32))/100; - pc.printf("Meter_counter=%f\n",Meter_counter); };*/ + void UpdateInfoDTA1(uint16_t newData[4]){ //Update values for DTA1 message - Rpm0=Rpm; - Rpm=newData[0]; - showLedRpm(Rpm); - TPS0=TPS; - TPS=newData[1]; - Water_Temp0=Water_Temp; - Water_Temp=newData[2]; - Air_Temp0=Air_Temp; - Air_Temp=newData[3]; - //pc.printf("%d %d %d %d", Rpm, TPS,Water_Temp,Air_Temp); + if (newData[0]>0 && newData[0]<=13000){ + Rpm0=Rpm; + Rpm=newData[0]; + showLedRpm(Rpm); + }; + if (newData[1]>0 && newData[1]<100){ + TPS0=TPS; + TPS=newData[1]; + }; + if (newData[2]>0 && newData[2]<1000){ + Water_Temp0=Water_Temp; + Water_Temp=newData[2]; + }; + if (newData[3]>0 && newData[3]<1000){ + Air_Temp0=Air_Temp; + Air_Temp=newData[3]; + }; }; void UpdateInfoDTA2(uint16_t newData[4]){ //Update values for DTA2 message - MAP0=MAP; - MAP=newData[0]; - Lambda0=Lambda; - Lambda=newData[1]; - Speed0=Speed; - Speed=newData[2]; - Oil_P0=Oil_P; - Oil_P=newData[3]; - //pc.printf("MAP=%d, Lambda=%d, Speed=%d, Oil_P=%d\n",MAP,Lambda,Speed,Oil_P); + if (newData[0]>0 && newData[0]<200){ + MAP0=MAP; + MAP=newData[0]; + }; + if (newData[1]>0 && newData[2]<10000){ + Lambda0=Lambda; + Lambda=newData[1]; + }; + if (newData[2]>0 && newData[2]<1500){ + Speed0=Speed; + Speed=newData[2]; + }; }; void UpdateInfoDTA3(uint16_t newData[4]){ //Update values for DTA3 message - Oil_Temp0=Oil_Temp; - Oil_Temp=newData[1]; - Volts0=Volts; - Volts=newData[2]; + if (newData[1]>0 && newData[1]<200){ + Oil_Temp0=Oil_Temp; + Oil_Temp=newData[1]; + }; + if (newData[2]>0 && newData[2]<200){ + Volts0=Volts; + Volts=newData[2]; + }; }; void UpdateInfoDTA4(uint16_t newData[4]){ //Update values for DTA4 message - Gear0=Gear; - Gear=newData[0]; + if (newData[0]>0 && newData[0]<=6){ + Gear0=Gear; + Gear=newData[0]; + }; }; void UpdateInfoDTA5(uint16_t newData[4]){ //Update values for DTA5 message }; void UpdateInfoDTA6(uint16_t newData[4]){ //Update values for DTA6 message - Crank0=Crank; - Crank=newData[2]; }; -void UpdateMeterCounter(){ +/*void UpdateMeterCounter(){ float ti=t_int.read(); if(ti>0.1){ Meter_counter0=Meter_counter; @@ -243,17 +240,17 @@ }; t_store.reset(); - /*uint32_t distance_buffer; - //distance_buffer=uint32_t(Meter_counter) ; + uint32_t distance_buffer; + distance_buffer=uint32_t(Meter_counter) ; pc.printf("distance=%d\n",distance_buffer); distance_buffer=0xFF000000; if(sd.WriteBlocks((uint32_t*)distance_buffer,DISTANCE_MEMORY_ADDR,1,SD_DATATIMEOUT)){ pc.printf("Storage success\n"); }else{ pc.printf("Storage failed\n"); - };*/ + }; - /*uint32_t DistanceBuffer32; + uint32_t DistanceBuffer32; uint8_t DistanceBuffer8[4]; DistanceBuffer32=uint32_t(Meter_counter); DistanceBuffer8[0]=DistanceBuffer32>>24; @@ -262,7 +259,7 @@ DistanceBuffer8[3]=(DistanceBuffer32 & (uint32_t)0x000000FF); if(eep.WriteBuffer(DistanceBuffer8,0,4)){ pc.printf("Write success,Distance=%d\n",DistanceBuffer32); - };*/ + }; }; }; @@ -273,77 +270,80 @@ }else{ printf("Shit\n"); } -}; +};*/ void UpdateInfoLVDTFront(uint16_t newData[4]){ //Update values for LVDTFront message - FL_LVDT0=FL_LVDT; //LVDTs are firstly written their voltage value, then overwritten by calculated pertentage value. - FL_LVDT=newData[0]; - FR_LVDT0=FR_LVDT; - FR_LVDT=newData[1]; - if(!(lvdtref & (1<<3))){ //Check if its the first time LVDT value is received. If yes than store it as Referrent value. - if (FL_LVDT>FL_LVDT_Ref){ - FL_LVDT=(FL_LVDT-FL_LVDT_Ref)*100/(LVDT_Max-FL_LVDT_Ref); - }else{ - FL_LVDT=(FL_LVDT-FL_LVDT_Ref)*100/FL_LVDT_Ref; + if (newData[0]>0 && newData[0]<=1024){ + FL_LVDT0=FL_LVDT; //LVDTs are firstly written their voltage value, then overwritten by calculated pertentage value. + FL_LVDT=newData[0]; + if(!(lvdtref & (1<<3))){ //Check if its the first time LVDT value is received. If yes than store it as Referrent value. + if (FL_LVDT>FL_LVDT_Ref){ + FL_LVDT=(FL_LVDT-FL_LVDT_Ref)*100/(LVDT_Max-FL_LVDT_Ref); + }else{ + FL_LVDT=(FL_LVDT-FL_LVDT_Ref)*100/FL_LVDT_Ref; + }; + }else{ + FL_LVDT_Ref=FL_LVDT; + FL_LVDT=0; + lvdtref=lvdtref^(1<<3); }; - //pc.printf("Im in 1\n"); - }else{ - FL_LVDT_Ref=FL_LVDT; - FL_LVDT=0; - lvdtref=lvdtref^(1<<3); - //pc.printf("Ref=%d\n",FL_LVDT_Ref); }; - //pc.printf("FL_LVDT=%d, FL_LVDT0=%d\n",abs(FL_LVDT),abs(FL_LVDT0)); - //pc.printf("FR_LVDT=%d, FR_LVDT0=%d\n",abs(FR_LVDT),abs(FR_LVDT0)); - - if(!(lvdtref & (1<<2))){ - if (FR_LVDT>FR_LVDT_Ref){ + + if (newData[1]>0 && newData[1]<=1024){ + FR_LVDT0=FR_LVDT; + FR_LVDT=newData[1]; + if(!(lvdtref & (1<<2))){ + if (FR_LVDT>FR_LVDT_Ref){ FR_LVDT=(FR_LVDT-FR_LVDT_Ref)*100/(LVDT_Max-FR_LVDT_Ref); - }else{ - FR_LVDT=(FR_LVDT-FR_LVDT_Ref)*100/FR_LVDT_Ref; + }else{ + FR_LVDT=(FR_LVDT-FR_LVDT_Ref)*100/FR_LVDT_Ref; + }; + }else{ + FR_LVDT_Ref=FR_LVDT; + FR_LVDT=0; + lvdtref=lvdtref^(1<<2); }; - }else{ - FR_LVDT_Ref=FR_LVDT; - FR_LVDT=0; - lvdtref=lvdtref^(1<<2); }; - //printf("FL_Ref=%d, FR_Ref=%d, RL_Ref=%d, RR_Ref=%d\n",FL_LVDT_Dpos,FR_LVDT_Dpos,RL_LVDT_Dpos,RR_LVDT_Dpos); }; void UpdateInfoLVDTRear(uint16_t newData[4]){ //Update values for LVDTRear message - RL_LVDT0=RL_LVDT; - RL_LVDT=newData[0]; - RR_LVDT0=RR_LVDT; - RR_LVDT=newData[1]; - if(!(lvdtref & (1<<1))){ - if (RL_LVDT>RL_LVDT_Ref){ - RL_LVDT=(RL_LVDT-RL_LVDT_Ref)*100/(LVDT_Max-RL_LVDT_Ref); - }else{ - RL_LVDT=(RL_LVDT-RL_LVDT_Ref)*100/RL_LVDT_Ref; + if (newData[0]>0 && newData[0]<=1024){ + RL_LVDT0=RL_LVDT; + RL_LVDT=newData[0]; + if(!(lvdtref & (1<<1))){ + if (RL_LVDT>RL_LVDT_Ref){ + RL_LVDT=(RL_LVDT-RL_LVDT_Ref)*100/(LVDT_Max-RL_LVDT_Ref); + }else{ + RL_LVDT=(RL_LVDT-RL_LVDT_Ref)*100/RL_LVDT_Ref; + }; + }else{ + RL_LVDT_Ref=RL_LVDT; + RL_LVDT=0; + lvdtref=lvdtref^(1<<1); }; - }else{ - RL_LVDT_Ref=RL_LVDT; - RL_LVDT=0; - lvdtref=lvdtref^(1<<1); }; - - if(!(lvdtref & (1<<0))){ - if (RR_LVDT>RR_LVDT_Ref){ - RR_LVDT=(RR_LVDT-RR_LVDT_Ref)*100/(LVDT_Max-RR_LVDT_Ref); - }else{ - RR_LVDT=(RR_LVDT-RR_LVDT_Ref)*100/RR_LVDT_Ref; + + if (newData[1]>0 && newData[1]<=1024){ + RR_LVDT0=RR_LVDT; + RR_LVDT=newData[1]; + if(!(lvdtref & (1<<0))){ + if (RR_LVDT>RR_LVDT_Ref){ + RR_LVDT=(RR_LVDT-RR_LVDT_Ref)*100/(LVDT_Max-RR_LVDT_Ref); + }else{ + RR_LVDT=(RR_LVDT-RR_LVDT_Ref)*100/RR_LVDT_Ref; + }; + }else{ + RR_LVDT_Ref=RR_LVDT; + RR_LVDT=0; + lvdtref=lvdtref^(1<<0); }; - }else{ - RR_LVDT_Ref=RR_LVDT; - RR_LVDT=0; - lvdtref=lvdtref^(1<<0); }; - //pc.printf("RL_LVDT=%d, RL_LVDT0=%d\n",abs(RL_LVDT),abs(RL_LVDT0)); - //pc.printf("RR_LVDT=%d, RR_LVDT0=%d\n",abs(RR_LVDT),abs(RR_LVDT0)); - }; void UpdateInfoBrakes(uint16_t newData[4]){ //Update values for Brakes message - Brakes0=Brakes; - Brakes=newData[0]; + //if (newData[2]==0xFF || newData[2]==0x00){ + Brakes0=Brakes; + Brakes=newData[2]; + //pc.printf("%x\n",Brakes); + // }; }; \ No newline at end of file