Team Fox / Mbed 2 deprecated RAJANGAM_REVIEW_BAE_CODE

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of QM_BAE_review_1 by Team Fox

Revision:
49:61c9f28332ba
Parent:
48:9fd15e3e0b53
Child:
50:6001287f3045
--- a/EPS.cpp	Fri Jul 08 08:25:39 2016 +0000
+++ b/EPS.cpp	Thu Jul 14 23:04:26 2016 +0000
@@ -2,6 +2,12 @@
 #include "pin_config.h"
 #include "iostream"
 
+Serial eps_pc(USBTX,USBRX);
+
+Timer timer_alertFlags;
+Timer timer_soc;
+Timer timer_FCTN_BATTERYGAUGE_INIT;
+
 //FOR APPEDING HK DATA===================================
 
 extern uint16_t crc_hk_data();
@@ -51,10 +57,13 @@
 extern uint8_t BCN_TX_MAIN_STATUS;
 
 //bae
+extern Timer BAE_uptime;
+extern Timer I2C_last;
 extern uint8_t BAE_RESET_COUNTER;
 extern uint8_t BAE_INIT_STATUS;
 extern uint8_t BAE_STANDBY;
 extern uint16_t BAE_I2C_COUNTER;
+extern void RETURN_UPTIME(float time, uint8_t *day,uint8_t *hour,uint8_t *min);
 
 //eps
 extern uint8_t ACS_INIT_STATUS;
@@ -86,11 +95,14 @@
 uint8_t EPS_BAT_TEMP_LOW;
 uint8_t EPS_BAT_TEMP_HIGH;
 uint8_t EPS_BAT_TEMP_DEFAULT;
-DigitalInOut EPS_CHARGER_FAULT(PIN42);
-DigitalInOut EPS_CHARGER_STATUS(PIN31);
-DigitalInOut EPS_BATTERY_GAUGE_ALERT(PIN73);
+DigitalIn EPS_CHARGER_FAULT(PIN42);
+DigitalIn EPS_CHARGER_STATUS(PIN31);
+DigitalIn EPS_BATTERY_GAUGE_ALERT(PIN73);
 
 //m_I2C.frequency(10000)
+extern int eps_btg_read_flag;  // flag to check I2C ack on reading from BTG
+extern int eps_btg_writ_flag;  // flag to check I2C ack on writing from BTG
+
 const char RCOMP0= 0x97;// don't know what it is now 
 BAE_HK_actual actual_data;
 BAE_HK_quant quant_data;
@@ -104,9 +116,14 @@
 Serial pc_eps(USBTX,USBRX);
 
 I2C m_I2C(PIN85,PIN84);
-DigitalInOut TRXY(TRXY_DR_EN);            //active high
-DigitalInOut TRZ(TRZ_DR_EN);              //active high
-DigitalInOut EN3V3A(ENBL3V3A);
+
+//any default values or states
+//====================================
+//DigitalInOut TRXY(TRXY_DR_EN);            //active high
+//DigitalInOut TRZ(TRZ_DR_EN);              //active high
+DigitalOut EN3V3A(ENBL3V3A);
+//====================================
+
 DigitalOut BTRY_HTR_ENABLE(BATT_HEAT);// earlier BTRY_HTR_ENABLE
 //DigitalIn BTRY_HT_OUTPUT(BATT_HEAT_OUTPUT);
 //AnalogIn Vbatt_ang(VBATT);
@@ -144,7 +161,7 @@
 
 //eps cdms fault
 extern uint8_t CDMS_SW_STATUS;
-extern DigitalInOut CDMS_OC_FAULT;
+extern DigitalIn CDMS_OC_FAULT;
 extern bool CDMS_SW_ENABLE;
 extern int CDMS_FAULT_COUNTER;
 extern uint8_t EPS_BTRY_HTR_AUTO;
@@ -154,32 +171,32 @@
 /********* EXTERN ACS VAR ********************/
 extern uint8_t ACS_ATS_STATUS;
 extern uint8_t ACS_TR_Z_SW_STATUS;
-extern DigitalInOut ACS_TR_Z_ENABLE;
-extern DigitalInOut ACS_TR_Z_OC_FAULT;
-extern DigitalInOut ACS_TR_Z_FAULT;            //Driver IC fault
+extern DigitalOut ACS_TR_Z_ENABLE;
+extern DigitalIn ACS_TR_Z_OC_FAULT;
+extern DigitalIn ACS_TR_Z_FAULT;            //Driver IC fault
 extern int ACS_TR_Z_FAULT_COUNTER;
 
 extern uint8_t ACS_TR_XY_SW_STATUS;
-extern DigitalInOut ACS_TR_XY_ENABLE;
-extern DigitalInOut ACS_TR_XY_OC_FAULT;
-extern DigitalInOut ACS_TR_XY_FAULT;            //Driver IC fault
+extern DigitalOut ACS_TR_XY_ENABLE;
+extern DigitalIn ACS_TR_XY_OC_FAULT;
+extern DigitalIn ACS_TR_XY_FAULT;            //Driver IC fault
 extern int ACS_TR_XY_FAULT_COUNTER;
 
 //extern uint8_t ACS_ATS1_SW_STATUS;
-extern DigitalInOut ATS1_SW_ENABLE;
-extern DigitalInOut ACS_ATS1_OC_FAULT;
+extern DigitalOut ATS1_SW_ENABLE;
+extern DigitalIn ACS_ATS1_OC_FAULT;
 extern int ACS_ATS1_FAULT_COUNTER;
 
 //extern uint8_t ACS_ATS2_SW_STATUS;
 
-extern DigitalInOut ATS2_SW_ENABLE;
-extern DigitalInOut ACS_ATS2_OC_FAULT;
+extern DigitalOut ATS2_SW_ENABLE;
+extern DigitalIn ACS_ATS2_OC_FAULT;
 extern int ACS_ATS2_FAULT_COUNTER;
 
 /********* EXTERN BCN VAR ********************/
 extern uint8_t BCN_TX_SW_STATUS;
 extern bool BCN_TX_ENABLE;
-extern DigitalInOut BCN_TX_OC_FAULT;
+extern DigitalIn BCN_TX_OC_FAULT;
 extern int BCN_TX_FAULT_COUNTER;
 extern uint8_t BCN_TMP;
 
@@ -187,34 +204,44 @@
 
 void FCTN_EPS_INIT()
 {
-////    printf("\n\r eps init \n");
+////    eps_pc.printf("\n\r eps init \n");
     EPS_INIT_STATUS = 1 ;             //set EPS_INIT_STATUS flag
     // FLAG();
     FCTN_BATTERYGAUGE_INIT();
     EN3V3A = 1;                             //enable dc dc converter A  
+    
+    timer_alertFlags.reset();
+    timer_alertFlags.start();
     char value=alertFlags(); // initialization part of battery gauge
+    timer_alertFlags.stop();
+    
     unsigned short value_u= (short int )value;
     //value_u &=0x0001;                     
     if(value_u & 0x0001 == 0x0001)                       // battery gauge not initialised
     {
-        actual_data.power_mode = 1;
+        //actual_data.power_mode = 1;
+        actual_data.power_mode = 0;
         EPS_BATTERY_GAUGE_STATUS = 0;               //clear EPS_BATTERY_GAUGE_STATUS
-        printf(" init BTG fail - %d\n\r", value_u);
+        eps_pc.printf(" init BTG fail - %d\n\r", value_u);
     }
     else
     {
+        timer_soc.reset();
+        timer_soc.start();
         actual_data.Batt_gauge_actual[1] = soc();
+        timer_soc.stop();
+        
         actual_data.Batt_voltage_actual = Batt_voltage.read()*3.3; //1 corresponds to 3.3 scaling factor
         FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]);
         EPS_BATTERY_GAUGE_STATUS = 1;               //set EPS_BATTERY_GAUGE_STATUS
-        printf("init BTG success - %d\n\r", value_u);
+        eps_pc.printf("init BTG success - %d\n\r", value_u);
     }
     
     //if( read(REG_VERSION) == 
-    printf("REG_VERSION = %d\r\n",read(REG_VERSION));
+    eps_pc.printf("REG_VERSION = %d\r\n",read(REG_VERSION));
    
     FCTN_BATTTEMP_INIT();
-    EPS_BATTERY_GAUGE_STATUS = 1;
+    //EPS_BATTERY_GAUGE_STATUS = 1;
     
     EPS_INIT_STATUS = 0 ;             //clear EPS_INIT_STATUS flag
 
@@ -395,14 +422,11 @@
 
 void FCTN_EPS_POWERMODE(float soc)              //dummy algo
 {
-    if(soc >= 80)
-        actual_data.power_mode = 4;
-    else if(soc >= 70 & soc < 80)
+    if(soc >= EPS_SOC_LEVEL_23*100 )
         actual_data.power_mode = 3;
-    else if(soc >= 60 & soc < 70)
-        actual_data.power_mode = 2;
-    else if(soc < 60)
-        actual_data.power_mode = 1;
+    else if(soc >= EPS_SOC_LEVEL_12*100 )
+       actual_data.power_mode = 2;
+    else actual_data.power_mode = 1;
 }
 
 //...................................................HK...........................................//
@@ -469,7 +493,8 @@
                 actual_data.current_actual[Iteration]=3365.4/log(7.60573*resistance);
             }
     }
-    actual_data.BAE_temp_actual=(-90.7*3.3*actual_data.BAE_temp_actual)+190.1543;
+    //actual_data.BAE_temp_actual=(-90.7*3.3*actual_data.BAE_temp_actual)+190.1543;
+    actual_data.BAE_temp_actual=(-90.7*3.3*BAE_temp_sensor.read())+190.1543;
     
     actual_data.Batt_voltage_actual=Batt_voltage.read()*3.3*5.63;
 
@@ -596,6 +621,7 @@
     LONG_HK_data[1][32] = EPS_BTRY_HTR;// to be disscussed
     //spare 4
     LONG_HK_data[1][32] = (LONG_HK_data[1][32]<<7) | BAE_STANDBY;
+    
     // 6 next telemetries value to be given by registers
     LONG_HK_data[1][33] = ATS1_EVENT_STATUS_RGTR;
     LONG_HK_data[1][34] = ATS1_SENTRAL_STATUS_RGTR;
@@ -616,60 +642,69 @@
     LONG_HK_data[1][47] = BCN_TX_MAIN_COUNTER>>8;
     LONG_HK_data[1][48] = EPS_MAIN_COUNTER;
     LONG_HK_data[1][49] = EPS_MAIN_COUNTER>>8;
-    LONG_HK_data[1][50] = actual_data.bit_data_acs_mm[0];
-    LONG_HK_data[1][51] = actual_data.bit_data_acs_mm[0]>>8;
-    LONG_HK_data[1][52] = actual_data.bit_data_acs_mm[1];
-    LONG_HK_data[1][53] = actual_data.bit_data_acs_mm[1]>>8;
-    LONG_HK_data[1][54] = actual_data.bit_data_acs_mm[2];
-    LONG_HK_data[1][55] = actual_data.bit_data_acs_mm[2]>>8;
-                                                                
-    LONG_HK_data[1][56] = actual_data.bit_data_acs_mg[0];
-    LONG_HK_data[1][57] = actual_data.bit_data_acs_mg[0]>>8;
-    LONG_HK_data[1][58] = actual_data.bit_data_acs_mg[1];
-    LONG_HK_data[1][59] = actual_data.bit_data_acs_mg[1]>>8;
-    LONG_HK_data[1][60] = actual_data.bit_data_acs_mg[2];
-    LONG_HK_data[1][61] = actual_data.bit_data_acs_mg[2]>>8;
+    
+    uint8_t days,hours,mins;
+    RETURN_UPTIME(BAE_uptime.read(),&days,&hours,&mins);
+    LONG_HK_data[1][50] = days;
+    RETURN_UPTIME(I2C_last.read(),&days,&hours,&mins);
+    LONG_HK_data[1][50] = (LONG_HK_data[1][50]) | (hours>>2);
+    LONG_HK_data[1][51] = hours;
+    LONG_HK_data[1][51] = (LONG_HK_data[1][51]<<6) | mins;
+    
+    
+    LONG_HK_data[1][52] = actual_data.bit_data_acs_mm[0];
+    LONG_HK_data[1][53] = actual_data.bit_data_acs_mm[0]>>8;
+    LONG_HK_data[1][54] = actual_data.bit_data_acs_mm[1];
+    LONG_HK_data[1][55] = actual_data.bit_data_acs_mm[1]>>8;
+    LONG_HK_data[1][56] = actual_data.bit_data_acs_mm[2];
+    LONG_HK_data[1][57] = actual_data.bit_data_acs_mm[2]>>8;
                                                                 
-    LONG_HK_data[1][62] = BCN_TX_OC_FAULT;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_ENABLE;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_ENABLE;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_OC_FAULT;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_OC_FAULT;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_FAULT;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_FAULT;
-    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_STATUS;
+    LONG_HK_data[1][58] = actual_data.bit_data_acs_mg[0];
+    LONG_HK_data[1][59] = actual_data.bit_data_acs_mg[0]>>8;
+    LONG_HK_data[1][60] = actual_data.bit_data_acs_mg[1];
+    LONG_HK_data[1][61] = actual_data.bit_data_acs_mg[1]>>8;
+    LONG_HK_data[1][62] = actual_data.bit_data_acs_mg[2];
+    LONG_HK_data[1][63] = actual_data.bit_data_acs_mg[2]>>8;
                                                                 
-    LONG_HK_data[1][63] = EPS_BATTERY_GAUGE_ALERT;
-    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | CDMS_OC_FAULT;
-    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS1_OC_FAULT;
-    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS2_OC_FAULT;
-    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_TR_Z_FAULT;
-    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<3);
+    LONG_HK_data[1][64] = BCN_TX_OC_FAULT;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_XY_ENABLE;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_Z_ENABLE;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_XY_OC_FAULT;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_Z_OC_FAULT;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_XY_FAULT;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | EPS_CHARGER_FAULT;
+    LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | EPS_CHARGER_STATUS;
+                                                                
+    LONG_HK_data[1][65] = EPS_BATTERY_GAUGE_ALERT;
+    LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | CDMS_OC_FAULT;
+    LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | ACS_ATS1_OC_FAULT;
+    LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | ACS_ATS2_OC_FAULT;
+    LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | ACS_TR_Z_FAULT;
+    LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<3);
     //3 spare
                                                                 
-    LONG_HK_data[1][64] = ACS_TR_X_PWM;
-    LONG_HK_data[1][65] = ACS_TR_Y_PWM;
-    LONG_HK_data[1][66] = ACS_TR_Z_PWM;
+    LONG_HK_data[1][66] = ACS_TR_X_PWM;
+    LONG_HK_data[1][67] = ACS_TR_Y_PWM;
+    LONG_HK_data[1][68] = ACS_TR_Z_PWM;
     //spare byte
     //assigned it to counter HTR_CYCLE_COUNTER
                                                                 
     //assign it b_scz_angle
-    LONG_HK_data[1][67] = B_SCZ_ANGLE>>4; ; 
-    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | alarmmode;
-    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | controlmode_mms;
-    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<2);
-    //2 bit spare
+    LONG_HK_data[1][69] = B_SCZ_ANGLE>>4; ; 
+    LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | alarmmode;
+    LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | controlmode_mms;
+    LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | singularity_flag_mms;
+    LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1);
+    //1 bit spare
                                                                 
     for(int i=0;i<9;i++)
         {
-            LONG_HK_data[1][68+i] =  invjm_mms[i];
+            LONG_HK_data[1][70+i] =  invjm_mms[i];
             LONG_HK_data[1][81+i] =  jm_mms[i];
         }
                                                                 
-    for(int i=0;i<3;i++)
-        LONG_HK_data[1][77+i] = bb_mms[i];
-                                                                
-    LONG_HK_data[1][80] = singularity_flag_mms;                      
+    for(int i=0;i<2;i++)
+        LONG_HK_data[1][79+i] = bb_mms[i];
                                                                 
     for(int i=0;i<16;i++)
         {
@@ -823,40 +858,51 @@
         vResetThresholdSet();//set threshold voltage for reset
         vResetAlertEnabled(true);//enable alert on reset for V < Vreset
         int ack = write(REG_STATUS, read(REG_STATUS) & 0xFEFF);   //Clearing Reset Indicator bit
-        if( ack == 0 ) printf("BTG init success\n\r");
-        else printf("BTG init fail ack = %d\n\r", ack);
+        if( ack == 0 ) eps_pc.printf("BTG init success\n\r");
+        else eps_pc.printf("BTG init fail ack = %d\n\r", ack);
         write(REG_STATUS, read(REG_STATUS) & 0xFEFF);   //Clearing Reset Indicator bit
 }
 
 int FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4], float temp)
 {
-////        printf("\n\r battery gauge \n");
+////        eps_pc.printf("\n\r battery gauge \n");
 
         //float temp=30;    //=Battery_temp  (from temp sensor on battery board)       //value of battery temperature in C currently given a dummy value. Should be updated everytime.
-        tempCompensation(temp);
-    
+        int flag = tempCompensation(temp);
+        //tempCompensation(temp);
         
-        Battery_parameters[0]=vcell();
-        Battery_parameters[1]=soc();
-        Battery_parameters[2]=crate();
+         if( flag == 0 )
+        {
+            Battery_parameters[0]=vcell();
+            
+            timer_soc.reset();
+            timer_soc.start();
+            Battery_parameters[1]=soc();
+            timer_soc.stop();
+            
+            Battery_parameters[2]=crate();
+           
+    ////        eps_pc.printf("\nVcell=%f",vcell());       //remove this for final code
+    ////        eps_pc.printf("\nSOC=%f",soc());           //remove this for final code
+    ////        eps_pc.printf("\nC_rate=%f",crate());      //remove this for final code
+    
+           
+            if (alerting()== true)       //alert is on
+            {   timer_alertFlags.reset();
+                timer_alertFlags.start();
+                Battery_parameters[3]=alertFlags();
+                timer_alertFlags.stop();
+            
+                clearAlert();//clear alert
+                clearAlertFlags();//clear all alert flags
+            }
+        }
        
-////        printf("\nVcell=%f",vcell());       //remove this for final code
-////        printf("\nSOC=%f",soc());           //remove this for final code
-////        printf("\nC_rate=%f",crate());      //remove this for final code
-
-       
-        if (alerting()== true)       //alert is on
-        {   
-            Battery_parameters[3]=alertFlags();
-            clearAlert();//clear alert
-            clearAlertFlags();//clear all alert flags
-        }
-        if( soc() == 200) return 0;
-        else return 1; 
+        if( soc() == 200 || flag != 0) return 1;
+        else return 0; 
         
 }
-
-void tempCompensation(float temp)
+int tempCompensation(float temp)
 {
     //Calculate the new RCOMP value
     char rcomp;
@@ -867,10 +913,10 @@
     }
  
     //Update the RCOMP value
-    compensation(rcomp);
+    return compensation(rcomp);
 }
 
-void compensation(char rcomp)
+int compensation(char rcomp)
 {
     //Read the current 16-bit register value
     unsigned short value = read(REG_CONFIG);
@@ -880,11 +926,12 @@
     value |= rcomp << 8;
  
     //Write the value back out
-    write(REG_CONFIG, value);
+    return (write(REG_CONFIG, value));
 }
 
 int write(char reg, unsigned short data)
     {
+        eps_btg_writ_flag = -1;
         //Create a temporary buffer
         char buff[3];
    
@@ -898,8 +945,12 @@
         if( flag != 0 )
         {
             flag = m_I2C.write(m_ADDR, buff, 3);    //Write the data and return ack
-            if( data != read(reg) )                 //Verify written data
-                EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
+            if( data != read(reg) )
+                eps_btg_writ_flag = 1;
+                //EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
+            else eps_btg_writ_flag = 0;
+                 //Verify written data
+                //EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
         }
         
         return flag;
@@ -907,6 +958,7 @@
    
 unsigned short read(char reg)
     {
+        eps_btg_read_flag = -1;
         int flag = 1;
         char buff[2];       //Create a temporary buffer
  
@@ -919,10 +971,11 @@
         {
             m_I2C.write(m_ADDR, &reg, 1, true);
             flag = m_I2C.read(m_ADDR, buff, 2);
-            if( flag )
-                EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
+            //if( flag )
+            //    EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
         }
  
+        eps_btg_read_flag = flag;
         //Return the combined 16-bit value
         return (buff[0] << 8) | buff[1];
     } 
@@ -970,7 +1023,11 @@
         //Write the POR command
         write(REG_CMD, 0x5400);
         //Re-initialise gauge
+        
+        timer_FCTN_BATTERYGAUGE_INIT.reset();
+        timer_FCTN_BATTERYGAUGE_INIT.start();
         FCTN_BATTERYGAUGE_INIT();
+        timer_FCTN_BATTERYGAUGE_INIT.stop();
     }
     
     // Command the MAX17049 to perform a QuickStart
@@ -1175,7 +1232,7 @@
        
         ack = m_I2C.read(m_ADDR, buff, 2);
             
-////        printf("\n\r acknow %d", ack);
+////        eps_pc.printf("\n\r acknow %d", ack);
  
         //Return SOC in percent
         if(ack == 0)
@@ -1234,7 +1291,7 @@
     wait_ms(10);
     MSB = spi_bt.write(0x00);
     wait_ms(10);
-////    pc_eps.printf("%d %d\n",MSB,LSB);
+////    pc_eps.eps_pc.printf("%d %d\n",MSB,LSB);
     bit_data= ((uint16_t)MSB<<8)|LSB;
     wait_ms(10);
     temp[0]=(float)bit_data*sensitivity;//Converting into decimal value