aa

Dependencies:   mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa EEPROM_DISCO_F469NI

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