Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
samp1234
Date:
Tue Mar 28 08:48:42 2017 +0000
Revision:
101:cf1976e16f28
Parent:
99:2cc5c0c98cb3
Fixed and Tested Minmax

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:7b4c00e3912f 1 #include "EPS.h"
sakthipriya 0:7b4c00e3912f 2 #include "pin_config.h"
sakthipriya 6:036d08b62785 3 #include "iostream"
lakshya 20:949d13045431 4
lakshya 49:61c9f28332ba 5 Serial eps_pc(USBTX,USBRX);
lakshya 49:61c9f28332ba 6
lakshya 49:61c9f28332ba 7 Timer timer_alertFlags;
lakshya 49:61c9f28332ba 8 Timer timer_soc;
lakshya 49:61c9f28332ba 9 Timer timer_FCTN_BATTERYGAUGE_INIT;
lakshya 49:61c9f28332ba 10
lakshya 20:949d13045431 11 //FOR APPEDING HK DATA===================================
lakshya 20:949d13045431 12
lakshya 20:949d13045431 13 extern uint16_t crc_hk_data();
lakshya 20:949d13045431 14
lakshya 20:949d13045431 15 //acs
lakshya 20:949d13045431 16 extern uint8_t ACS_DETUMBLING_ALGO_TYPE;
lakshya 20:949d13045431 17 extern uint8_t ACS_STATE;
lakshya 20:949d13045431 18 extern uint8_t ACS_MAG_TIME_DELAY;
lakshya 20:949d13045431 19 extern uint8_t ACS_DEMAG_TIME_DELAY;
lakshya 20:949d13045431 20 extern uint8_t ACS_Z_FIXED_MOMENT;
lakshya 20:949d13045431 21 extern uint16_t ACS_MM_X_COMSN;
lakshya 20:949d13045431 22 extern uint16_t ACS_MM_Y_COMSN;
lakshya 20:949d13045431 23 extern uint16_t ACS_MG_X_COMSN;
lakshya 20:949d13045431 24 extern uint16_t ACS_MG_Y_COMSN;
lakshya 20:949d13045431 25 extern uint16_t ACS_MM_Z_COMSN;
lakshya 20:949d13045431 26 extern uint16_t ACS_MG_Z_COMSN;
lakshya 20:949d13045431 27 extern uint8_t ACS_MAIN_STATUS;
lakshya 20:949d13045431 28 extern uint8_t ACS_STATUS;
lakshya 20:949d13045431 29 extern uint8_t ATS1_EVENT_STATUS_RGTR;
lakshya 20:949d13045431 30 extern uint8_t ATS1_SENTRAL_STATUS_RGTR;
lakshya 20:949d13045431 31 extern uint8_t ATS1_ERROR_RGTR;
lakshya 20:949d13045431 32 extern uint8_t ATS2_EVENT_STATUS_RGTR;
lakshya 20:949d13045431 33 extern uint8_t ATS2_SENTRAL_STATUS_RGTR;
lakshya 20:949d13045431 34 extern uint8_t ATS2_ERROR_RGTR;
lakshya 20:949d13045431 35 extern uint8_t ACS_DATA_ACQ_STATUS;
lakshya 20:949d13045431 36 extern uint8_t ACS_TR_X_PWM;
lakshya 20:949d13045431 37 extern uint8_t ACS_TR_Y_PWM;
lakshya 20:949d13045431 38 extern uint8_t ACS_TR_Z_PWM;
lakshya 20:949d13045431 39 extern uint8_t alarmmode;
lakshya 20:949d13045431 40 extern uint8_t controlmode_mms;
lakshya 20:949d13045431 41 extern uint8_t invjm_mms[9];
lakshya 20:949d13045431 42 extern uint8_t jm_mms[9];
lakshya 20:949d13045431 43 extern uint8_t bb_mms[3];
lakshya 20:949d13045431 44 extern uint8_t singularity_flag_mms;
lakshya 39:670133e7ffd8 45 extern uint8_t B_SCZ_ANGLE;
samp1234 101:cf1976e16f28 46 extern uint16_t float_to_uint16(float min,float max,float val);
lakshya 20:949d13045431 47
lakshya 20:949d13045431 48 //bcn
lakshya 20:949d13045431 49 extern uint8_t BCN_SPND_TX;
lakshya 20:949d13045431 50 extern uint8_t BCN_FEN;
lakshya 20:949d13045431 51 extern uint8_t BCN_LONG_MSG_TYPE;
lakshya 20:949d13045431 52 extern uint8_t BCN_TX_MAIN_STATUS;
lakshya 20:949d13045431 53 extern uint8_t BCN_TX_STATUS;
lakshya 20:949d13045431 54 extern uint8_t BCN_INIT_STATUS;
lakshya 20:949d13045431 55 extern uint8_t BCN_FAIL_COUNT;
lakshya 20:949d13045431 56 extern uint16_t BCN_TX_MAIN_COUNTER;
lakshya 33:76f2b8735501 57 extern uint8_t BCN_TX_MAIN_STATUS;
lakshya 20:949d13045431 58
lakshya 20:949d13045431 59 //bae
lakshya 49:61c9f28332ba 60 extern Timer BAE_uptime;
lakshya 49:61c9f28332ba 61 extern Timer I2C_last;
lakshya 20:949d13045431 62 extern uint8_t BAE_RESET_COUNTER;
lakshya 20:949d13045431 63 extern uint8_t BAE_INIT_STATUS;
lakshya 20:949d13045431 64 extern uint8_t BAE_STANDBY;
lakshya 20:949d13045431 65 extern uint16_t BAE_I2C_COUNTER;
lakshya 49:61c9f28332ba 66 extern void RETURN_UPTIME(float time, uint8_t *day,uint8_t *hour,uint8_t *min);
samp1234 101:cf1976e16f28 67 extern uint8_t BAE_MNG_I2C_STATUS;
lakshya 20:949d13045431 68 //eps
lakshya 20:949d13045431 69 extern uint8_t ACS_INIT_STATUS;
lakshya 20:949d13045431 70 extern uint16_t EPS_MAIN_COUNTER;
lakshya 33:76f2b8735501 71 extern uint8_t EPS_BTRY_TMP_STATUS;
lakshya 33:76f2b8735501 72
lakshya 20:949d13045431 73
lakshya 20:949d13045431 74 //main
lakshya 20:949d13045431 75 extern uint8_t HTR_CYCLE_COUNTER;
lakshya 20:949d13045431 76 extern uint16_t ACS_MAIN_COUNTER;
lakshya 51:661dc022613a 77 extern uint8_t float_to_uint8(float min,float max,float val);
lakshya 20:949d13045431 78
lakshya 20:949d13045431 79 //=======================================================
lakshya 20:949d13045431 80
lakshya 20:949d13045431 81
sakthipriya 0:7b4c00e3912f 82 /***********************************************global variable declaration***************************************************************/
sakthipriya 0:7b4c00e3912f 83 extern uint32_t BAE_STATUS;
sakthipriya 0:7b4c00e3912f 84 extern uint32_t BAE_ENABLE;
lakshya 33:76f2b8735501 85 extern uint8_t LONG_HK_data[2][134];
lakshya 33:76f2b8735501 86 //extern uint8_t BAE_HK_data[134];
lakshya 20:949d13045431 87 //extern char BAE_chardata[74];
lakshya 20:949d13045431 88
lakshya 20:949d13045431 89 //implement them assign them default values
lakshya 20:949d13045431 90 uint8_t EPS_BATT_TEMP_LOW;
lakshya 20:949d13045431 91 uint8_t EPS_BATT_TEMP_HIGH;
lakshya 20:949d13045431 92 uint8_t EPS_BATT_TEMP_DEFAULT;
lakshya 20:949d13045431 93 uint8_t EPS_SOC_LEVEL_12 = 70;
lakshya 20:949d13045431 94 uint8_t EPS_SOC_LEVEL_23 = 90;
lakshya 20:949d13045431 95 uint8_t EPS_BAT_TEMP_LOW;
lakshya 20:949d13045431 96 uint8_t EPS_BAT_TEMP_HIGH;
lakshya 20:949d13045431 97 uint8_t EPS_BAT_TEMP_DEFAULT;
lakshya 49:61c9f28332ba 98 DigitalIn EPS_CHARGER_FAULT(PIN42);
lakshya 49:61c9f28332ba 99 DigitalIn EPS_CHARGER_STATUS(PIN31);
lakshya 49:61c9f28332ba 100 DigitalIn EPS_BATTERY_GAUGE_ALERT(PIN73);
sakthipriya 0:7b4c00e3912f 101
Bragadeesh153 52:daa685b0e390 102 //i2c.frequency(10000)
azaddevarm 75:d05b0005ca50 103 extern int eps_btg_read_flag; // flag to check I2C ack on reading from BTG: 1 indicates read failure, 0 indicates success
azaddevarm 75:d05b0005ca50 104 extern int eps_btg_writ_flag; // flag to check I2C ack on writing from BTG: 1 indicates write failure, 0 indicates success
lakshya 49:61c9f28332ba 105
lakshya 15:e09aaaccf134 106 const char RCOMP0= 0x97;// don't know what it is now
sakthipriya 0:7b4c00e3912f 107 BAE_HK_actual actual_data;
sakthipriya 0:7b4c00e3912f 108 BAE_HK_quant quant_data;
sakthipriya 0:7b4c00e3912f 109 BAE_HK_min_max bae_HK_minmax;
sakthipriya 0:7b4c00e3912f 110 BAE_HK_arch arch_data;
sakthipriya 0:7b4c00e3912f 111
lakshya 20:949d13045431 112 /************************battery temperature var*********************************/
lakshya 20:949d13045431 113 //instead just return the approprate value.. test it
sakthipriya 5:bb592f3185cc 114
sakthipriya 0:7b4c00e3912f 115 //......................................Peripheral declarations.........................................................//
sakthipriya 0:7b4c00e3912f 116 Serial pc_eps(USBTX,USBRX);
sakthipriya 3:07e15677a75c 117
Bragadeesh153 52:daa685b0e390 118 extern I2C i2c;
lakshya 49:61c9f28332ba 119
lakshya 49:61c9f28332ba 120 //any default values or states
lakshya 49:61c9f28332ba 121 //====================================
lakshya 49:61c9f28332ba 122 //DigitalInOut TRXY(TRXY_DR_EN); //active high
lakshya 49:61c9f28332ba 123 //DigitalInOut TRZ(TRZ_DR_EN); //active high
lakshya 49:61c9f28332ba 124 DigitalOut EN3V3A(ENBL3V3A);
lakshya 49:61c9f28332ba 125 //====================================
lakshya 49:61c9f28332ba 126
lakshya 48:9fd15e3e0b53 127 DigitalOut BTRY_HTR_ENABLE(BATT_HEAT);// earlier BTRY_HTR_ENABLE
sakthipriya 0:7b4c00e3912f 128 //DigitalIn BTRY_HT_OUTPUT(BATT_HEAT_OUTPUT);
sakthipriya 3:07e15677a75c 129 //AnalogIn Vbatt_ang(VBATT);
sakthipriya 3:07e15677a75c 130 AnalogIn Batt_voltage(PIN20); //Battery voltage
sakthipriya 3:07e15677a75c 131
lakshya 15:e09aaaccf134 132 SPI spi_bt(PIN99,PIN100,PIN98); //MOSI,MISO,SLK // battery temp something 3
lakshya 15:e09aaaccf134 133 DigitalOut ssn1(PIN19); //Slave select1 // low line master talks
sakthipriya 2:c823d84b4cb0 134 DigitalOut ssn2(PIN21);//Slave select2
sakthipriya 2:c823d84b4cb0 135 //DigitalOut PS(PTB0);
sakthipriya 2:c823d84b4cb0 136 //DigitalOut HS(PTB1);
sakthipriya 2:c823d84b4cb0 137
sakthipriya 3:07e15677a75c 138 AnalogIn CurrentInput(PIN54); // Input from Current Multiplexer //PIN54
sakthipriya 3:07e15677a75c 139 AnalogIn VoltageInput(PIN53); // Input from Voltage Multiplexer //PIN53
sakthipriya 3:07e15677a75c 140 AnalogIn BAE_temp_sensor(PIN55); //Input from BAE temp sensor
sakthipriya 3:07e15677a75c 141
lakshya 15:e09aaaccf134 142 /*mux for reading value one by one*/
sakthipriya 3:07e15677a75c 143 DigitalOut SelectLinea3 (PIN46); // MSB of Select Lines
sakthipriya 3:07e15677a75c 144 DigitalOut SelectLinea2 (PIN45);
sakthipriya 3:07e15677a75c 145 DigitalOut SelectLinea1 (PIN44);
sakthipriya 3:07e15677a75c 146 DigitalOut SelectLinea0 (PIN43); // LSB of Select Lines
sakthipriya 3:07e15677a75c 147
lakshya 70:a2b6c20e2366 148 DigitalOut SelectLineb0 (PIN56); // MSB of Select Lines
lakshya 70:a2b6c20e2366 149 DigitalOut SelectLineb1 (PIN57);
lakshya 70:a2b6c20e2366 150 DigitalOut SelectLineb2 (PIN58);
lakshya 70:a2b6c20e2366 151 DigitalOut SelectLineb3 (PIN59); // LSB of Select Lines
sakthipriya 0:7b4c00e3912f 152
sakthipriya 0:7b4c00e3912f 153 //*********************************************************flags********************************************************//
lakshya 20:949d13045431 154 extern uint8_t EPS_INIT_STATUS ;
lakshya 20:949d13045431 155 extern uint8_t EPS_BATTERY_GAUGE_STATUS ;
lakshya 20:949d13045431 156 extern uint8_t EPS_MAIN_STATUS;
lakshya 33:76f2b8735501 157 extern uint8_t EPS_BTRY_TMP_STATUS ;
lakshya 20:949d13045431 158 extern uint8_t EPS_STATUS ;
lakshya 20:949d13045431 159
lakshya 33:76f2b8735501 160 extern uint8_t EPS_BTRY_HTR ;
lakshya 20:949d13045431 161
lakshya 20:949d13045431 162 //eps cdms fault
lakshya 20:949d13045431 163 extern uint8_t CDMS_SW_STATUS;
lakshya 49:61c9f28332ba 164 extern DigitalIn CDMS_OC_FAULT;
azaddevarm 77:6a5f6e1c7a35 165 extern DigitalOut CDMS_RESET; // CDMS RESET
azaddevarm 77:6a5f6e1c7a35 166 //extern bool CDMS_SW_ENABLE; //Temp name for CDMS_RESET pin
lakshya 20:949d13045431 167 extern int CDMS_FAULT_COUNTER;
lakshya 33:76f2b8735501 168 extern uint8_t EPS_BTRY_HTR_AUTO;
lakshya 20:949d13045431 169
lakshya 20:949d13045431 170 //eps hw faults
lakshya 20:949d13045431 171
lakshya 20:949d13045431 172 /********* EXTERN ACS VAR ********************/
lakshya 20:949d13045431 173 extern uint8_t ACS_ATS_STATUS;
lakshya 20:949d13045431 174 extern uint8_t ACS_TR_Z_SW_STATUS;
lakshya 49:61c9f28332ba 175 extern DigitalOut ACS_TR_Z_ENABLE;
lakshya 49:61c9f28332ba 176 extern DigitalIn ACS_TR_Z_OC_FAULT;
lakshya 49:61c9f28332ba 177 extern DigitalIn ACS_TR_Z_FAULT; //Driver IC fault
lakshya 20:949d13045431 178 extern int ACS_TR_Z_FAULT_COUNTER;
sakthipriya 0:7b4c00e3912f 179
lakshya 20:949d13045431 180 extern uint8_t ACS_TR_XY_SW_STATUS;
lakshya 49:61c9f28332ba 181 extern DigitalOut ACS_TR_XY_ENABLE;
lakshya 49:61c9f28332ba 182 extern DigitalIn ACS_TR_XY_OC_FAULT;
lakshya 49:61c9f28332ba 183 extern DigitalIn ACS_TR_XY_FAULT; //Driver IC fault
lakshya 20:949d13045431 184 extern int ACS_TR_XY_FAULT_COUNTER;
lakshya 20:949d13045431 185
lakshya 20:949d13045431 186 //extern uint8_t ACS_ATS1_SW_STATUS;
lakshya 49:61c9f28332ba 187 extern DigitalOut ATS1_SW_ENABLE;
lakshya 49:61c9f28332ba 188 extern DigitalIn ACS_ATS1_OC_FAULT;
lakshya 20:949d13045431 189 extern int ACS_ATS1_FAULT_COUNTER;
lakshya 20:949d13045431 190
lakshya 20:949d13045431 191 //extern uint8_t ACS_ATS2_SW_STATUS;
lakshya 20:949d13045431 192
lakshya 49:61c9f28332ba 193 extern DigitalOut ATS2_SW_ENABLE;
lakshya 49:61c9f28332ba 194 extern DigitalIn ACS_ATS2_OC_FAULT;
lakshya 20:949d13045431 195 extern int ACS_ATS2_FAULT_COUNTER;
lakshya 20:949d13045431 196
lakshya 20:949d13045431 197 /********* EXTERN BCN VAR ********************/
azaddevarm 76:293693fb7949 198 extern DigitalOut BCN_SW; //Beacon switch
lakshya 20:949d13045431 199 extern uint8_t BCN_TX_SW_STATUS;
azaddevarm 76:293693fb7949 200 //extern bool BCN_TX_ENABLE; //Temp variable in place of BCN_SW
lakshya 49:61c9f28332ba 201 extern DigitalIn BCN_TX_OC_FAULT;
lakshya 20:949d13045431 202 extern int BCN_TX_FAULT_COUNTER;
lakshya 20:949d13045431 203 extern uint8_t BCN_TMP;
sakthipriya 0:7b4c00e3912f 204
sakthipriya 0:7b4c00e3912f 205 //........................................... FUCTIONS.................................................//
sakthipriya 0:7b4c00e3912f 206
sakthipriya 0:7b4c00e3912f 207 void FCTN_EPS_INIT()
sakthipriya 0:7b4c00e3912f 208 {
lakshya 49:61c9f28332ba 209 //// eps_pc.printf("\n\r eps init \n");
lakshya 20:949d13045431 210 EPS_INIT_STATUS = 1 ; //set EPS_INIT_STATUS flag
sakthipriya 3:07e15677a75c 211 // FLAG();
sakthipriya 0:7b4c00e3912f 212 FCTN_BATTERYGAUGE_INIT();
sakthipriya 0:7b4c00e3912f 213 EN3V3A = 1; //enable dc dc converter A
lakshya 49:61c9f28332ba 214
lakshya 49:61c9f28332ba 215 timer_alertFlags.reset();
lakshya 49:61c9f28332ba 216 timer_alertFlags.start();
lakshya 15:e09aaaccf134 217 char value=alertFlags(); // initialization part of battery gauge
lakshya 49:61c9f28332ba 218 timer_alertFlags.stop();
lakshya 49:61c9f28332ba 219
sakthipriya 0:7b4c00e3912f 220 unsigned short value_u= (short int )value;
lakshya 33:76f2b8735501 221 //value_u &=0x0001;
Bragadeesh153 87:051ec436e75f 222 if(value_u & 0x0001 == 0x0001 )//&& eps_btg_read_flag == 0) // battery gauge not initialised
sakthipriya 0:7b4c00e3912f 223 {
azaddevarm 75:d05b0005ca50 224
azaddevarm 75:d05b0005ca50 225 actual_data.power_mode = 0; // indicates btg not working / NA
lakshya 20:949d13045431 226 EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
lakshya 49:61c9f28332ba 227 eps_pc.printf(" init BTG fail - %d\n\r", value_u);
sakthipriya 0:7b4c00e3912f 228 }
sakthipriya 0:7b4c00e3912f 229 else
sakthipriya 0:7b4c00e3912f 230 {
lakshya 49:61c9f28332ba 231 timer_soc.reset();
lakshya 49:61c9f28332ba 232 timer_soc.start();
sakthipriya 0:7b4c00e3912f 233 actual_data.Batt_gauge_actual[1] = soc();
azaddevarm 96:6603fedb6b69 234 //eps_pc.printf("\n\r is soc assigned??? \n\r");
azaddevarm 96:6603fedb6b69 235
lakshya 49:61c9f28332ba 236 timer_soc.stop();
lakshya 49:61c9f28332ba 237
samp1234 101:cf1976e16f28 238 actual_data.Batt_voltage_actual = Batt_voltage.read()*3.3*62/11; //1 corresponds to 3.3 scaling factor
sakthipriya 0:7b4c00e3912f 239 FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]);
azaddevarm 94:17172893d231 240 eps_pc.printf("Power Level: %d\n\r", actual_data.power_mode);
lakshya 20:949d13045431 241 EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
lakshya 49:61c9f28332ba 242 eps_pc.printf("init BTG success - %d\n\r", value_u);
sakthipriya 0:7b4c00e3912f 243 }
lakshya 33:76f2b8735501 244
lakshya 33:76f2b8735501 245 //if( read(REG_VERSION) ==
lakshya 49:61c9f28332ba 246 eps_pc.printf("REG_VERSION = %d\r\n",read(REG_VERSION));
sakthipriya 0:7b4c00e3912f 247
lakshya 20:949d13045431 248 FCTN_BATTTEMP_INIT();
lakshya 49:61c9f28332ba 249 //EPS_BATTERY_GAUGE_STATUS = 1;
lakshya 20:949d13045431 250
lakshya 20:949d13045431 251 EPS_INIT_STATUS = 0 ; //clear EPS_INIT_STATUS flag
lakshya 20:949d13045431 252
lakshya 20:949d13045431 253 }
lakshya 20:949d13045431 254
lakshya 20:949d13045431 255 void FCTN_EPS_HANDLE_CDMS_FAULT()
lakshya 20:949d13045431 256 { //Variable names from MMS structure, if not, marked as //Temp name
lakshya 63:55d32e7dcad7 257
lakshya 63:55d32e7dcad7 258 /*now if this solves the problem then turn it back and observe if it works if doesn't then chane at other places also */
lakshya 63:55d32e7dcad7 259
azaddevarm 76:293693fb7949 260 if(CDMS_SW_STATUS == 0b11)/*changed to just hex representation see if this solve the purpose->earlier 0b11*/ //powered on and oc fault
lakshya 67:c0dd13285d80 261 if(CDMS_OC_FAULT) // !CDMS_OC_FAULT 0 means badman, 1 means good man // changed
lakshya 67:c0dd13285d80 262 CDMS_SW_STATUS = 0b01;//chaged from 0b01; //powered on and working
lakshya 20:949d13045431 263 else
lakshya 20:949d13045431 264 {
lakshya 67:c0dd13285d80 265 if(CDMS_SW_STATUS == 0b10) //changed 0b10) //powered off and oc fault
azaddevarm 77:6a5f6e1c7a35 266 CDMS_RESET = 1;
lakshya 67:c0dd13285d80 267 if(CDMS_OC_FAULT == 1) //changed
lakshya 20:949d13045431 268 {
lakshya 20:949d13045431 269 CDMS_FAULT_COUNTER = 0; //Temp name
lakshya 67:c0dd13285d80 270 CDMS_SW_STATUS = 0b01; //changed->0b01; //powered on and working
lakshya 20:949d13045431 271 }
lakshya 20:949d13045431 272 else
lakshya 20:949d13045431 273 {
lakshya 20:949d13045431 274 CDMS_FAULT_COUNTER++;
lakshya 20:949d13045431 275 if(CDMS_FAULT_COUNTER == 3)
lakshya 67:c0dd13285d80 276 CDMS_SW_STATUS = 0b11; //changed->0b11; //powered on and oc fault
lakshya 20:949d13045431 277 else
lakshya 20:949d13045431 278 {
azaddevarm 77:6a5f6e1c7a35 279 CDMS_RESET = 0; //power OFF switch
lakshya 67:c0dd13285d80 280 CDMS_SW_STATUS = 0b10; //chaged->0b10; //powered off and oc fault
lakshya 20:949d13045431 281 }
lakshya 20:949d13045431 282 }
lakshya 20:949d13045431 283 }
lakshya 20:949d13045431 284 }
lakshya 20:949d13045431 285
lakshya 20:949d13045431 286 void FCTN_EPS_HANDLE_HW_FAULTS()
lakshya 20:949d13045431 287 { //Variable names from MMS structure, if not, marked as //Temp name
lakshya 20:949d13045431 288
lakshya 20:949d13045431 289 //--------ACS_TR_Z--------//
lakshya 20:949d13045431 290 if(ACS_TR_Z_SW_STATUS != 0b11) //!disabled
lakshya 20:949d13045431 291 {
lakshya 20:949d13045431 292 if(ACS_TR_Z_SW_STATUS == 0b10) //oc fault and powered off
Bragadeesh153 52:daa685b0e390 293 ACS_TR_Z_ENABLE = 0;
Bragadeesh153 52:daa685b0e390 294 //printf("ACS_TR_Z_OC_FAULT : %d \r\n",(int)ACS_TR_Z_OC_FAULT.read());
Bragadeesh153 52:daa685b0e390 295 //printf("ACS_TR_Z_FAULT : %d \r\n",(int)ACS_TR_Z_FAULT.read());
Bragadeesh153 52:daa685b0e390 296 if( (ACS_TR_Z_OC_FAULT == 0) || (ACS_TR_Z_FAULT==0))
Bragadeesh153 52:daa685b0e390 297 {
lakshya 20:949d13045431 298 ACS_TR_Z_ENABLE = 1;
lakshya 20:949d13045431 299 ACS_TR_Z_FAULT_COUNTER++; //Temp name
lakshya 20:949d13045431 300 if(ACS_TR_Z_FAULT_COUNTER == 3)
lakshya 20:949d13045431 301 ACS_TR_Z_SW_STATUS = 0b11; //disabled
lakshya 20:949d13045431 302 //update in flash as default state at bootup
lakshya 20:949d13045431 303 else ACS_TR_Z_SW_STATUS = 0b10; //oc fault and powered off
lakshya 20:949d13045431 304 }
lakshya 20:949d13045431 305 else
lakshya 20:949d13045431 306 {
lakshya 20:949d13045431 307 ACS_TR_Z_SW_STATUS = 0b01; //powered on and working;
lakshya 20:949d13045431 308 //update in flash also
lakshya 20:949d13045431 309 ACS_TR_Z_FAULT_COUNTER = 0;
lakshya 20:949d13045431 310 }
lakshya 20:949d13045431 311 }
lakshya 20:949d13045431 312
lakshya 20:949d13045431 313 //--------ACS_TR_XY--------//
lakshya 20:949d13045431 314 //Same as ACS_TR_Z, just replace Z with XY
lakshya 20:949d13045431 315 if(ACS_TR_XY_SW_STATUS != 0b11) //!disabled
lakshya 20:949d13045431 316 {
lakshya 20:949d13045431 317 if(ACS_TR_XY_SW_STATUS == 0b10) //oc fault and powered off
Bragadeesh153 52:daa685b0e390 318 ACS_TR_XY_ENABLE = 0;
Bragadeesh153 52:daa685b0e390 319
Bragadeesh153 52:daa685b0e390 320 //printf("ACS_TR_XY_OC_FAULT : %d \r\n",(int)ACS_TR_XY_OC_FAULT.read());
Bragadeesh153 52:daa685b0e390 321 //printf("ACS_TR_XY_FAULT : %d \r\n",(int)ACS_TR_XY_FAULT.read());
Bragadeesh153 52:daa685b0e390 322 if( (ACS_TR_XY_OC_FAULT==0) || (ACS_TR_XY_FAULT==0))
Bragadeesh153 52:daa685b0e390 323 {
lakshya 20:949d13045431 324 ACS_TR_XY_ENABLE = 1;
lakshya 20:949d13045431 325 ACS_TR_XY_FAULT_COUNTER++; //Temp name
lakshya 20:949d13045431 326 if(ACS_TR_XY_FAULT_COUNTER == 3)
lakshya 20:949d13045431 327 ACS_TR_XY_SW_STATUS = 0b11; //disabled
lakshya 20:949d13045431 328 //update in flash as default state at bootup
lakshya 20:949d13045431 329 else ACS_TR_XY_SW_STATUS = 0b10; //oc fault and powered off
lakshya 20:949d13045431 330 }
lakshya 20:949d13045431 331 else
lakshya 20:949d13045431 332 {
lakshya 20:949d13045431 333 ACS_TR_XY_SW_STATUS = 0b01; //powered on and working;
lakshya 20:949d13045431 334 //update in flash also
lakshya 20:949d13045431 335 ACS_TR_XY_FAULT_COUNTER = 0;
lakshya 20:949d13045431 336 }
lakshya 20:949d13045431 337 }
azaddevarm 76:293693fb7949 338
lakshya 20:949d13045431 339 //--------ACS_ATS1--------//
lakshya 20:949d13045431 340 //Same as ACS_ATS2
lakshya 20:949d13045431 341 //if(ACS_ATS1_SW_STATUS & 0b1100 != 0b1100) //!disabled
lakshya 20:949d13045431 342 if(ACS_ATS_STATUS&0xC0!=0xC0)
lakshya 20:949d13045431 343 {
lakshya 20:949d13045431 344 //if(ACS_ATS1_SW_STATUS & 0b1100 == 0b1000) //oc fault and powered off
lakshya 20:949d13045431 345 if(ACS_ATS_STATUS&0xC0!=0x80)
azaddevarm 76:293693fb7949 346 ATS1_SW_ENABLE = 1;
Bragadeesh153 52:daa685b0e390 347 //if(ACS_ATS1_OC_FAULT)
Bragadeesh153 52:daa685b0e390 348 if(0)
lakshya 20:949d13045431 349 {
Bragadeesh153 52:daa685b0e390 350 ATS1_SW_ENABLE = 0;
lakshya 20:949d13045431 351 ACS_ATS1_FAULT_COUNTER++; //Temp name
lakshya 20:949d13045431 352 if(ACS_ATS1_FAULT_COUNTER == 3)
lakshya 20:949d13045431 353 //ACS_ATS1_SW_STATUS = ACS_ATS1_SW_STATUS | 0b1100; //disabled
lakshya 20:949d13045431 354 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0xC0;
lakshya 20:949d13045431 355 //update in flash as default state at bootup
lakshya 20:949d13045431 356 else
lakshya 20:949d13045431 357 {
lakshya 20:949d13045431 358 //ACS_ATS1_SW_STATUS = ACS_ATS1_SW_STATUS | 0b1000; //setting to 10xx
lakshya 20:949d13045431 359 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x80;
lakshya 20:949d13045431 360 //ACS_ATS1_SW_STATUS = ACS_ATS1_SW_STATUS & 0b1011; //oc fault and powered off
lakshya 20:949d13045431 361 }
lakshya 20:949d13045431 362 }
lakshya 20:949d13045431 363 else
lakshya 20:949d13045431 364 {
lakshya 20:949d13045431 365 //if(ACS_ATS1_SW_STATUS & 0b1100 == 0b1000) //Device oc fault?
lakshya 20:949d13045431 366 if(ACS_ATS_STATUS&0xC0==0x80)
Bragadeesh153 52:daa685b0e390 367 ATS1_SW_ENABLE = 0;
lakshya 20:949d13045431 368 //ACS_ATS1_SW_STATUS = ACS_ATS1_SW_STATUS & 0b0011; //working but powered off
lakshya 20:949d13045431 369 ACS_ATS_STATUS = ACS_ATS_STATUS&0x3F;
lakshya 20:949d13045431 370 //Update in flash also
lakshya 20:949d13045431 371 ACS_ATS1_FAULT_COUNTER = 0;
lakshya 20:949d13045431 372 }
lakshya 20:949d13045431 373 }
lakshya 20:949d13045431 374
lakshya 20:949d13045431 375 //--------ACS_ATS2--------//
lakshya 20:949d13045431 376 //if(ACS_ATS2_SW_STATUS & 0b1100 != 0b1100) //!disabled
lakshya 20:949d13045431 377 if(ACS_ATS_STATUS&0x0C!=0x0C)
lakshya 20:949d13045431 378 {
lakshya 20:949d13045431 379 //if(ACS_ATS2_SW_STATUS & 0b1100 == 0b1000) //oc fault and powered off
lakshya 20:949d13045431 380 if(ACS_ATS_STATUS&0x0C!=0x08)
azaddevarm 76:293693fb7949 381 ATS2_SW_ENABLE = 0;
Bragadeesh153 52:daa685b0e390 382 //if(ACS_ATS2_OC_FAULT)
Bragadeesh153 52:daa685b0e390 383 if(0)
lakshya 20:949d13045431 384 {
lakshya 20:949d13045431 385 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 386 ACS_ATS2_FAULT_COUNTER++; //Temp name
lakshya 20:949d13045431 387 if(ACS_ATS2_FAULT_COUNTER == 3)
lakshya 20:949d13045431 388 //ACS_ATS2_SW_STATUS = ACS_ATS2_SW_STATUS | 0b1100; //disabled
lakshya 20:949d13045431 389 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x0C;
lakshya 20:949d13045431 390 //update in flash as default state at bootup
lakshya 20:949d13045431 391 else
lakshya 20:949d13045431 392 {
lakshya 20:949d13045431 393 //ACS_ATS2_SW_STATUS = ACS_ATS2_SW_STATUS | 0b1000; //setting to 10xx
lakshya 20:949d13045431 394 //ACS_ATS2_SW_STATUS = ACS_ATS2_SW_STATUS & 0b1011; //oc fault and powered off
lakshya 20:949d13045431 395 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x08;
lakshya 20:949d13045431 396 }
lakshya 20:949d13045431 397 }
lakshya 20:949d13045431 398 else
lakshya 20:949d13045431 399 {
lakshya 20:949d13045431 400 //if(ACS_ATS2_SW_STATUS & 0b1100 == 0b1000) //Device oc fault?
lakshya 20:949d13045431 401 if(ACS_ATS_STATUS&0x0C==0x08)
lakshya 20:949d13045431 402 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 403 //ACS_ATS2_SW_STATUS = ACS_ATS2_SW_STATUS & 0b0011; //working but powered off
lakshya 20:949d13045431 404 ACS_ATS_STATUS = ACS_ATS_STATUS&0xF3;
lakshya 20:949d13045431 405 //Update in flash also
lakshya 20:949d13045431 406 ACS_ATS2_FAULT_COUNTER = 0;
lakshya 20:949d13045431 407 }
lakshya 20:949d13045431 408 }
lakshya 20:949d13045431 409
azaddevarm 76:293693fb7949 410
Bragadeesh153 52:daa685b0e390 411
Bragadeesh153 52:daa685b0e390 412 printf("");
Bragadeesh153 52:daa685b0e390 413
Bragadeesh153 52:daa685b0e390 414
lakshya 20:949d13045431 415 //--------BCN_TX----------//
azaddevarm 76:293693fb7949 416
lakshya 20:949d13045431 417 if(BCN_TX_SW_STATUS != 0b11) //!disabled
lakshya 20:949d13045431 418 {
lakshya 20:949d13045431 419 if(BCN_TX_SW_STATUS == 0b10) //oc fault and powered off
azaddevarm 76:293693fb7949 420 BCN_SW = 1;
Bragadeesh153 52:daa685b0e390 421 if(BCN_TX_OC_FAULT==0)
lakshya 20:949d13045431 422 {
azaddevarm 76:293693fb7949 423 BCN_SW = 0;
lakshya 20:949d13045431 424 BCN_TX_FAULT_COUNTER++; //Temp name
lakshya 20:949d13045431 425 if(BCN_TX_FAULT_COUNTER == 3)
lakshya 20:949d13045431 426 BCN_TX_SW_STATUS = 0b11; //disabled
lakshya 20:949d13045431 427 //update in flash as default state at bootup
lakshya 20:949d13045431 428 else BCN_TX_SW_STATUS = 0b10; //oc fault and powered off
lakshya 20:949d13045431 429
lakshya 20:949d13045431 430 }
lakshya 20:949d13045431 431 else
lakshya 20:949d13045431 432 {
lakshya 20:949d13045431 433 BCN_TX_SW_STATUS = 0b01; //powered on and working;
lakshya 20:949d13045431 434 //update in flash also
lakshya 20:949d13045431 435 BCN_TX_FAULT_COUNTER = 0;
lakshya 20:949d13045431 436 }
lakshya 20:949d13045431 437 }
azaddevarm 76:293693fb7949 438
sakthipriya 0:7b4c00e3912f 439 }
sakthipriya 0:7b4c00e3912f 440
sakthipriya 0:7b4c00e3912f 441 //----------------------------------------------------Power algo code--------------------------------------------------------------------//
lakshya 15:e09aaaccf134 442 /*update the power modes*/
lakshya 15:e09aaaccf134 443
sakthipriya 0:7b4c00e3912f 444 void FCTN_EPS_POWERMODE(float soc) //dummy algo
sakthipriya 0:7b4c00e3912f 445 {
lakshya 67:c0dd13285d80 446 if(soc >= EPS_SOC_LEVEL_23 )
sakthipriya 0:7b4c00e3912f 447 actual_data.power_mode = 3;
lakshya 67:c0dd13285d80 448 else if(soc >= EPS_SOC_LEVEL_12 )
lakshya 49:61c9f28332ba 449 actual_data.power_mode = 2;
lakshya 49:61c9f28332ba 450 else actual_data.power_mode = 1;
sakthipriya 0:7b4c00e3912f 451 }
sakthipriya 0:7b4c00e3912f 452
sakthipriya 0:7b4c00e3912f 453 //...................................................HK...........................................//
lakshya 15:e09aaaccf134 454 /*reading values*/
sakthipriya 3:07e15677a75c 455
sakthipriya 3:07e15677a75c 456 void FCTN_HK_MAIN()
sakthipriya 3:07e15677a75c 457 {
sakthipriya 3:07e15677a75c 458 int Iteration=0;
sakthipriya 3:07e15677a75c 459
sakthipriya 3:07e15677a75c 460 SelectLinea0=0;
sakthipriya 3:07e15677a75c 461 SelectLinea1=0;
sakthipriya 3:07e15677a75c 462 SelectLinea2=0;
sakthipriya 3:07e15677a75c 463 SelectLinea3=0;
sakthipriya 3:07e15677a75c 464
sakthipriya 3:07e15677a75c 465 SelectLineb0=0;
sakthipriya 3:07e15677a75c 466 SelectLineb1=0;
sakthipriya 3:07e15677a75c 467 SelectLineb2=0;
sakthipriya 3:07e15677a75c 468 SelectLineb3=0;
samp1234 99:2cc5c0c98cb3 469 wait_ms(1);
sakthipriya 3:07e15677a75c 470 //collecting data
lakshya 20:949d13045431 471 for(Iteration=0; Iteration<16; Iteration++)
lakshya 20:949d13045431 472 {
sakthipriya 3:07e15677a75c 473 actual_data.voltage_actual[Iteration]=VoltageInput.read();
samp1234 99:2cc5c0c98cb3 474
sakthipriya 3:07e15677a75c 475 actual_data.current_actual[Iteration]=CurrentInput.read();
samp1234 99:2cc5c0c98cb3 476 // eps_pc.printf("\n\r %d %d %d %d", (int)SelectLineb3,(int)SelectLineb2,(int)SelectLineb1,(int)SelectLineb0);
samp1234 99:2cc5c0c98cb3 477 eps_pc.printf("\n\rthe raw current values CURR[%d] = %f",Iteration,3.3*CurrentInput.read()/(50*0.025));
samp1234 99:2cc5c0c98cb3 478
samp1234 99:2cc5c0c98cb3 479
lakshya 20:949d13045431 480 SelectLinea0=!(SelectLinea0);
sakthipriya 3:07e15677a75c 481 if(Iteration%2==1)
sakthipriya 3:07e15677a75c 482 SelectLinea1=!(SelectLinea1);
sakthipriya 3:07e15677a75c 483 if(Iteration%4==3)
sakthipriya 3:07e15677a75c 484 SelectLinea2=!(SelectLinea2);
sakthipriya 3:07e15677a75c 485 if(Iteration%8==7)
sakthipriya 3:07e15677a75c 486 SelectLinea3=!(SelectLinea3);
sakthipriya 3:07e15677a75c 487 int s0,s1,s2,s3;
sakthipriya 3:07e15677a75c 488 s0=SelectLineb0=SelectLinea0;
samp1234 99:2cc5c0c98cb3 489 s1=SelectLineb1=SelectLinea1;
sakthipriya 3:07e15677a75c 490 s2=SelectLineb2=SelectLinea2;
sakthipriya 3:07e15677a75c 491 s3=SelectLineb3=SelectLinea3;
samp1234 99:2cc5c0c98cb3 492 // eps_pc.printf("\n\r %d %d %d %d", (int)SelectLinea3,(int)SelectLinea2,(int)SelectLinea1,(int)SelectLinea0);
samp1234 99:2cc5c0c98cb3 493 // eps_pc.printf("\n\r %d %d %d %d", (int)SelectLineb3,(int)SelectLineb2,(int)SelectLineb1,(int)SelectLineb0);
samp1234 99:2cc5c0c98cb3 494 //// printf("\n\r %d %d %d %d", s0,s1,s2,s3);
sakthipriya 3:07e15677a75c 495
lakshya 64:241406992336 496 wait_ms(1);
lakshya 66:a5d2b8dc6b9e 497 /*$ wait of 3 milli sec $*/
sakthipriya 3:07e15677a75c 498 }
lakshya 19:79e69017c855 499 for(Iteration=0; Iteration<16; Iteration++)
lakshya 20:949d13045431 500 {
lakshya 64:241406992336 501 if(Iteration==1) //EPS 3.0 in EPS 2.1 it was 14th element
lakshya 66:a5d2b8dc6b9e 502 actual_data.voltage_actual[Iteration]= (-90.7*(3.3*actual_data.voltage_actual[Iteration]))+190.1543;
sakthipriya 3:07e15677a75c 503 else
lakshya 66:a5d2b8dc6b9e 504 actual_data.voltage_actual[Iteration] = (actual_data.voltage_actual[Iteration]*3.3*62)/11.0;
lakshya 66:a5d2b8dc6b9e 505
Bragadeesh153 90:2d0cdc87329a 506 // eps_pc.printf("VVVoltage[%d] %f\r\n",Iteration,actual_data.voltage_actual[Iteration]);
sakthipriya 3:07e15677a75c 507 }
sakthipriya 3:07e15677a75c 508
lakshya 66:a5d2b8dc6b9e 509 for(Iteration=0;Iteration<16;Iteration++){
samp1234 99:2cc5c0c98cb3 510
samp1234 99:2cc5c0c98cb3 511
lakshya 63:55d32e7dcad7 512 if(Iteration<8)// thermistors before in version 2.1 now from12th element but 8-11 are null values only
Bragadeesh153 56:32b1fb074138 513 {
samp1234 99:2cc5c0c98cb3 514 actual_data.current_actual[Iteration]= (actual_data.current_actual[Iteration]*330)/(50*0.025);
samp1234 99:2cc5c0c98cb3 515
samp1234 99:2cc5c0c98cb3 516
samp1234 99:2cc5c0c98cb3 517 // eps_pc.printf("I[%d],\t\r\n %f",Iteration,actual_data.current_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 518
samp1234 99:2cc5c0c98cb3 519
Bragadeesh153 65:d1b12729fcdc 520 }
samp1234 99:2cc5c0c98cb3 521
lakshya 66:a5d2b8dc6b9e 522 else{ /*earlier loop missing*/
lakshya 66:a5d2b8dc6b9e 523 actual_data.current_actual[Iteration] = (actual_data.current_actual[Iteration]*3.3);
sakthipriya 3:07e15677a75c 524 int resistance;
sakthipriya 3:07e15677a75c 525
lakshya 66:a5d2b8dc6b9e 526 resistance = (24300*actual_data.current_actual[Iteration])/(3.3-actual_data.current_actual[Iteration]);
lakshya 66:a5d2b8dc6b9e 527
lakshya 66:a5d2b8dc6b9e 528 if(actual_data.current_actual[Iteration]<1.38)
sakthipriya 3:07e15677a75c 529 {
sakthipriya 3:07e15677a75c 530 actual_data.current_actual[Iteration]=3694/log(24.032242*resistance);
sakthipriya 3:07e15677a75c 531 }
sakthipriya 3:07e15677a75c 532 else{
sakthipriya 3:07e15677a75c 533
sakthipriya 3:07e15677a75c 534 actual_data.current_actual[Iteration]=3365.4/log(7.60573*resistance);
sakthipriya 3:07e15677a75c 535 }
Bragadeesh153 56:32b1fb074138 536
lakshya 66:a5d2b8dc6b9e 537 actual_data.current_actual[Iteration] = actual_data.current_actual[Iteration] - 273.15; /*converting from C to kelvin*/
lakshya 66:a5d2b8dc6b9e 538
lakshya 66:a5d2b8dc6b9e 539 }
samp1234 99:2cc5c0c98cb3 540 // printf("Current[%d] %f\r\n",Iteration,actual_data.current_actual[Iteration]);
sakthipriya 3:07e15677a75c 541 }
lakshya 66:a5d2b8dc6b9e 542
samp1234 99:2cc5c0c98cb3 543
samp1234 99:2cc5c0c98cb3 544 // actual_data.BAE_temp_actual=(-90.7*3.3*BAE_temp_sensor.read())+190.1543;
samp1234 99:2cc5c0c98cb3 545
sakthipriya 3:07e15677a75c 546
azaddevarm 94:17172893d231 547 //actual_data.Batt_voltage_actual = (Batt_voltage.read()*3.3*5.63) * 10;
azaddevarm 94:17172893d231 548 actual_data.Batt_voltage_actual = vcell();
lakshya 51:661dc022613a 549 //quantizing data //changing the algo
sakthipriya 3:07e15677a75c 550 for(Iteration=0; Iteration<16; Iteration++){
sakthipriya 3:07e15677a75c 551
lakshya 64:241406992336 552 if(Iteration==1)
samp1234 99:2cc5c0c98cb3 553 quant_data.voltage_quant[Iteration] = 50+actual_data.voltage_actual[Iteration];//float_to_uint8(-50,150,actual_data.voltage_actual[Iteration]);//quantiz(tstart,tstep,actual_data.voltage_actual[Iteration]); /*for keeping the record of the temp'*/
sakthipriya 3:07e15677a75c 554 else
lakshya 66:a5d2b8dc6b9e 555 quant_data.voltage_quant[Iteration] = 10*actual_data.voltage_actual[Iteration];
lakshya 66:a5d2b8dc6b9e 556 //quant_data.voltage_quant[Iteration] = float_to_uint8(0.0,25,actual_data.voltage_actual[Iteration]);//quantiz(vstart,vstep,actual_data.voltage_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 557 // eps_pc.printf("\n\r quan vol data[%d],\t %d",Iteration,quant_data.voltage_quant[Iteration]);
sakthipriya 3:07e15677a75c 558
sakthipriya 3:07e15677a75c 559 }
lakshya 66:a5d2b8dc6b9e 560 for(Iteration=0;Iteration<16;Iteration++){
samp1234 99:2cc5c0c98cb3 561
samp1234 99:2cc5c0c98cb3 562
samp1234 101:cf1976e16f28 563 if(Iteration==3)/*consedering 200 mili amp as limit here*/
samp1234 101:cf1976e16f28 564 {
samp1234 101:cf1976e16f28 565 quant_data.current_quant[Iteration] = 10*actual_data.current_actual[Iteration];
samp1234 101:cf1976e16f28 566 //quantiz(cstart,cstep,actual_data.current_actual[Iteration]);
samp1234 101:cf1976e16f28 567 // quant_data.current_quant[Iteration] = float_to_uint8(0.0,2640,actual_data.current_actual[Iteration]);
samp1234 101:cf1976e16f28 568 // eps_pc.printf("\n\r quan curr1 data[%d] = %d ",Iteration,quant_data.current_quant[Iteration] );
samp1234 101:cf1976e16f28 569 }
samp1234 101:cf1976e16f28 570 else if(Iteration==4)/*consedering 200 mili amp as limit here*/
samp1234 99:2cc5c0c98cb3 571 {
samp1234 101:cf1976e16f28 572 quant_data.current_quant[Iteration] = 10*actual_data.current_actual[Iteration];
samp1234 101:cf1976e16f28 573 //quantiz(cstart,cstep,actual_data.current_actual[Iteration]);
samp1234 101:cf1976e16f28 574 // quant_data.current_quant[Iteration] = float_to_uint8(0.0,2640,actual_data.current_actual[Iteration]);
samp1234 101:cf1976e16f28 575 // eps_pc.printf("\n\r quan curr1 data[%d] = %d ",Iteration,quant_data.current_quant[Iteration] );
samp1234 101:cf1976e16f28 576 }
samp1234 101:cf1976e16f28 577 else if(Iteration==6)/*consedering 200 mili amp as limit here*/
samp1234 101:cf1976e16f28 578 {
samp1234 101:cf1976e16f28 579 quant_data.current_quant[Iteration] = 10*actual_data.current_actual[Iteration];
samp1234 99:2cc5c0c98cb3 580 //quantiz(cstart,cstep,actual_data.current_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 581 // quant_data.current_quant[Iteration] = float_to_uint8(0.0,2640,actual_data.current_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 582 // eps_pc.printf("\n\r quan curr1 data[%d] = %d ",Iteration,quant_data.current_quant[Iteration] );
samp1234 99:2cc5c0c98cb3 583 }
samp1234 99:2cc5c0c98cb3 584 else if(Iteration<9)/*consedering 200 mili amp as limit here*/
samp1234 99:2cc5c0c98cb3 585 {
samp1234 101:cf1976e16f28 586 quant_data.current_quant[Iteration] = actual_data.current_actual[Iteration];
samp1234 99:2cc5c0c98cb3 587 //quantiz(cstart,cstep,actual_data.current_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 588 // quant_data.current_quant[Iteration] = float_to_uint8(0.0,2640,actual_data.current_actual[Iteration]);
samp1234 99:2cc5c0c98cb3 589 // eps_pc.printf("\n\r quan curr1 data[%d] = %d ",Iteration,quant_data.current_quant[Iteration] );
samp1234 99:2cc5c0c98cb3 590 }
lakshya 66:a5d2b8dc6b9e 591 else if(Iteration>9)/*changed from 25 to 300 what value do we expectt?*/
lakshya 66:a5d2b8dc6b9e 592 quant_data.current_quant[Iteration] = float_to_uint8(-50,100,actual_data.current_actual[Iteration]);
lakshya 66:a5d2b8dc6b9e 593
Bragadeesh153 90:2d0cdc87329a 594 // eps_pc.printf("\n\r quan curr data[%d],\t %d",Iteration,quant_data.current_quant[Iteration]);
lakshya 66:a5d2b8dc6b9e 595 }
sakthipriya 3:07e15677a75c 596 for(Iteration=0;Iteration<2;Iteration++){
sakthipriya 3:07e15677a75c 597
samp1234 101:cf1976e16f28 598 // quant_data.Batt_temp_quant[Iteration] = float_to_uint8(-50,150,actual_data.Batt_temp_actual[Iteration]);//quantiz(tstart,tstep,actual_data.Batt_temp_actual[Iteration]);
samp1234 101:cf1976e16f28 599 quant_data.Batt_temp_quant[Iteration] = actual_data.Batt_temp_actual[Iteration] +50;
sakthipriya 3:07e15677a75c 600 }
sakthipriya 3:07e15677a75c 601
lakshya 53:459b71b1861c 602 //to be changed no need to quantized
sakthipriya 3:07e15677a75c 603
lakshya 53:459b71b1861c 604 /*no need*/// ->> quant_data.Batt_gauge_quant[0] = quantiz(vcell_start,vcell_step,actual_data.Batt_gauge_actual[0]);
lakshya 53:459b71b1861c 605 /*no need*/// ->> quant_data.Batt_gauge_quant[1]=quantiz(soc_start,soc_step,actual_data.Batt_gauge_actual[1]);
lakshya 53:459b71b1861c 606 /*no need*/// ->> quant_data.Batt_gauge_quant[2]=quantiz(crate_start,crate_step,actual_data.Batt_gauge_actual[2]);
lakshya 53:459b71b1861c 607 /*no need*/// ->> quant_data.Batt_gauge_alerts=actual_data.Batt_gauge_actual[3];
lakshya 53:459b71b1861c 608
samp1234 99:2cc5c0c98cb3 609 quant_data.BAE_temp_quant= 5*actual_data.BAE_temp_actual;
sakthipriya 3:07e15677a75c 610
lakshya 20:949d13045431 611 //// for(Iteration=0;Iteration<3;Iteration++){
lakshya 20:949d13045431 612 //// quant_data.AngularSpeed_quant[Iteration]=actual_data.AngularSpeed_actual[Iteration];
lakshya 20:949d13045431 613 //// printf("\n\r w value %f",quant_data.AngularSpeed_quant[Iteration]);
lakshya 20:949d13045431 614 //// }
sakthipriya 3:07e15677a75c 615
lakshya 20:949d13045431 616 //// for(Iteration=0;Iteration<3;Iteration++){
lakshya 20:949d13045431 617 //// quant_data.Bvalue_quant[Iteration]=actual_data.Bvalue_actual[Iteration];
lakshya 20:949d13045431 618 //// printf("\n\r b value %f",quant_data.Bvalue_quant[Iteration]);
lakshya 20:949d13045431 619 //// }
sakthipriya 3:07e15677a75c 620
lakshya 66:a5d2b8dc6b9e 621 //changed
lakshya 66:a5d2b8dc6b9e 622 quant_data.Batt_voltage_quant = 10*(actual_data.Batt_voltage_actual);
azaddevarm 96:6603fedb6b69 623 // eps_pc.printf("\n\r the actual_data.batt_vol_actual %f \n\r",actual_data.Batt_voltage_actual);
azaddevarm 96:6603fedb6b69 624
azaddevarm 96:6603fedb6b69 625 // eps_pc.printf("\n\r the quant_data.batt_vol_actual %d \n\r",quant_data.Batt_voltage_quant);
lakshya 66:a5d2b8dc6b9e 626 /*quant_data.Batt_voltage_quant= float_to_uint8(0,25.0,actual_data.Batt_voltage_actual);*/
lakshya 66:a5d2b8dc6b9e 627 /*
lakshya 66:a5d2b8dc6b9e 628 for(Iteration=0; Iteration<16; Iteration++)
lakshya 66:a5d2b8dc6b9e 629 eps_pc.printf("Current[%d] %d\r\n",Iteration, quant_data.current_quant[Iteration]);
lakshya 66:a5d2b8dc6b9e 630 for(Iteration=0; Iteration<16; Iteration++)
lakshya 66:a5d2b8dc6b9e 631 eps_pc.printf("vvol[%d] %d\r\n",Iteration,quant_data.voltage_quant[Iteration]);*/
sakthipriya 3:07e15677a75c 632
lakshya 53:459b71b1861c 633 //?? WHAT DO here
sakthipriya 3:07e15677a75c 634 arch_data.Batt_1_temp=quant_data.Batt_temp_quant[0];
sakthipriya 3:07e15677a75c 635 arch_data.Batt_2_temp=quant_data.Batt_temp_quant[1];
lakshya 66:a5d2b8dc6b9e 636 arch_data.EPS_PCB_temp=quant_data.voltage_quant[1];
lakshya 53:459b71b1861c 637 //arch_data.Batt_SOC=quant_data.Batt_gauge_quant[1];
sakthipriya 3:07e15677a75c 638 arch_data.power_mode=actual_data.power_mode;
sakthipriya 5:bb592f3185cc 639 arch_data.faultPoll_status=actual_data.faultPoll_status;
sakthipriya 5:bb592f3185cc 640 arch_data.faultIr_status=actual_data.faultIr_status;
lakshya 66:a5d2b8dc6b9e 641 arch_data.Batt_voltage=quant_data.Batt_voltage_quant ;
lakshya 20:949d13045431 642 //// printf("\n\r in hk");
sakthipriya 3:07e15677a75c 643
sakthipriya 3:07e15677a75c 644 }
sakthipriya 3:07e15677a75c 645
sakthipriya 5:bb592f3185cc 646 void FCTN_APPEND_HKDATA()
sakthipriya 5:bb592f3185cc 647 {
lakshya 33:76f2b8735501 648 LONG_HK_data[1][0] = 0x28;
lakshya 33:76f2b8735501 649 LONG_HK_data[1][1] = 0x00;
lakshya 33:76f2b8735501 650 LONG_HK_data[1][2] = 0x00;
lakshya 33:76f2b8735501 651 LONG_HK_data[1][3] = 0x00;
lakshya 33:76f2b8735501 652 LONG_HK_data[1][4] = ACS_ATS_STATUS;
lakshya 33:76f2b8735501 653 LONG_HK_data[1][5] = ACS_TR_XY_SW_STATUS;
lakshya 33:76f2b8735501 654 LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<2)| ACS_TR_Z_SW_STATUS;
lakshya 33:76f2b8735501 655 LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<4) | ACS_STATE;
lakshya 27:61c856be467e 656
lakshya 33:76f2b8735501 657 LONG_HK_data[1][6] = ACS_DETUMBLING_ALGO_TYPE;
lakshya 33:76f2b8735501 658 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<2) | BCN_TX_SW_STATUS;
lakshya 33:76f2b8735501 659 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_SPND_TX;
lakshya 33:76f2b8735501 660 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_FEN;
lakshya 33:76f2b8735501 661 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_LONG_MSG_TYPE;
lakshya 33:76f2b8735501 662 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
lakshya 33:76f2b8735501 663 LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1);
lakshya 27:61c856be467e 664 //now one spares in BAE_HK_data[5]
lakshya 33:76f2b8735501 665 LONG_HK_data[1][7] = BAE_RESET_COUNTER;
lakshya 33:76f2b8735501 666 LONG_HK_data[1][8] = EPS_SOC_LEVEL_12;
lakshya 33:76f2b8735501 667 LONG_HK_data[1][9] = EPS_SOC_LEVEL_23;
lakshya 33:76f2b8735501 668 LONG_HK_data[1][10] = ACS_MAG_TIME_DELAY;
lakshya 33:76f2b8735501 669 LONG_HK_data[1][11] = ACS_DEMAG_TIME_DELAY;
lakshya 33:76f2b8735501 670 LONG_HK_data[1][12] = EPS_BAT_TEMP_LOW;
lakshya 33:76f2b8735501 671 LONG_HK_data[1][13] = EPS_BAT_TEMP_HIGH;
lakshya 33:76f2b8735501 672 LONG_HK_data[1][14] = EPS_BAT_TEMP_DEFAULT;
lakshya 33:76f2b8735501 673 LONG_HK_data[1][15] = ACS_MM_X_COMSN >> 8;
lakshya 33:76f2b8735501 674 LONG_HK_data[1][16] = ACS_MM_X_COMSN;
sakthipriya 5:bb592f3185cc 675
lakshya 33:76f2b8735501 676 LONG_HK_data[1][17] = ACS_MM_Y_COMSN >> 8;
lakshya 33:76f2b8735501 677 LONG_HK_data[1][18] = ACS_MM_Y_COMSN;
lakshya 20:949d13045431 678
lakshya 33:76f2b8735501 679 LONG_HK_data[1][19] = ACS_MG_X_COMSN >> 8;
lakshya 33:76f2b8735501 680 LONG_HK_data[1][20] = ACS_MG_X_COMSN;
lakshya 20:949d13045431 681
lakshya 33:76f2b8735501 682 LONG_HK_data[1][21] = ACS_MG_Y_COMSN >> 8;
lakshya 33:76f2b8735501 683 LONG_HK_data[1][22] = ACS_MG_Y_COMSN;
lakshya 20:949d13045431 684
lakshya 33:76f2b8735501 685 LONG_HK_data[1][23] = ACS_MM_Z_COMSN >> 8;
lakshya 33:76f2b8735501 686 LONG_HK_data[1][24] = ACS_MM_Z_COMSN;
lakshya 20:949d13045431 687
lakshya 33:76f2b8735501 688 LONG_HK_data[1][25] = ACS_MG_Z_COMSN >> 8;
lakshya 33:76f2b8735501 689 LONG_HK_data[1][26] = ACS_MG_Z_COMSN;
lakshya 20:949d13045431 690
lakshya 33:76f2b8735501 691 LONG_HK_data[1][27] = ACS_Z_FIXED_MOMENT >> 8;
lakshya 33:76f2b8735501 692 LONG_HK_data[1][28] = ACS_Z_FIXED_MOMENT;
lakshya 20:949d13045431 693
lakshya 20:949d13045431 694 //BAE RAM PARAMETER
lakshya 33:76f2b8735501 695 LONG_HK_data[1][29] = BAE_INIT_STATUS;
samp1234 101:cf1976e16f28 696 LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) |BAE_MNG_I2C_STATUS;//change it================================
lakshya 33:76f2b8735501 697 LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_INIT_STATUS;
lakshya 33:76f2b8735501 698 LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_TX_MAIN_STATUS;
lakshya 33:76f2b8735501 699 LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<3) | BCN_TX_STATUS;
samp1234 101:cf1976e16f28 700 LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | ACS_INIT_STATUS;
lakshya 20:949d13045431 701
lakshya 33:76f2b8735501 702 LONG_HK_data[1][30] = ACS_DATA_ACQ_STATUS;
lakshya 33:76f2b8735501 703 LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | ACS_MAIN_STATUS;
lakshya 33:76f2b8735501 704 LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<4) | ACS_STATUS;
lakshya 33:76f2b8735501 705 LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | EPS_INIT_STATUS;
lakshya 27:61c856be467e 706
lakshya 33:76f2b8735501 707 LONG_HK_data[1][31] = EPS_BATTERY_GAUGE_STATUS;
lakshya 33:76f2b8735501 708 LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_MAIN_STATUS;
lakshya 33:76f2b8735501 709 LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_BTRY_TMP_STATUS;;
lakshya 33:76f2b8735501 710 LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<3) | EPS_STATUS;
lakshya 33:76f2b8735501 711 LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<2) | CDMS_SW_STATUS;
lakshya 27:61c856be467e 712 ////BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_BTRY_HTR_STATUS;//new to : implement===========
lakshya 27:61c856be467e 713
lakshya 33:76f2b8735501 714 LONG_HK_data[1][32] = EPS_BTRY_HTR;// to be disscussed
lakshya 27:61c856be467e 715 //spare 4
lakshya 33:76f2b8735501 716 LONG_HK_data[1][32] = (LONG_HK_data[1][32]<<7) | BAE_STANDBY;
lakshya 49:61c9f28332ba 717
lakshya 20:949d13045431 718 // 6 next telemetries value to be given by registers
lakshya 33:76f2b8735501 719 LONG_HK_data[1][33] = ATS1_EVENT_STATUS_RGTR;
lakshya 33:76f2b8735501 720 LONG_HK_data[1][34] = ATS1_SENTRAL_STATUS_RGTR;
lakshya 33:76f2b8735501 721 LONG_HK_data[1][35] = ATS1_ERROR_RGTR;
lakshya 33:76f2b8735501 722 LONG_HK_data[1][36] = ATS2_EVENT_STATUS_RGTR;
lakshya 33:76f2b8735501 723 LONG_HK_data[1][37] = ATS2_SENTRAL_STATUS_RGTR;
lakshya 33:76f2b8735501 724 LONG_HK_data[1][38] = ATS2_ERROR_RGTR;
lakshya 20:949d13045431 725
lakshya 33:76f2b8735501 726 LONG_HK_data[1][39] = BCN_FAIL_COUNT;
lakshya 33:76f2b8735501 727 LONG_HK_data[1][40] = actual_data.power_mode;
lakshya 33:76f2b8735501 728 LONG_HK_data[1][41] = HTR_CYCLE_COUNTER;//new to : implement
lakshya 20:949d13045431 729
samp1234 101:cf1976e16f28 730 LONG_HK_data[1][43] = BAE_I2C_COUNTER;
samp1234 101:cf1976e16f28 731 LONG_HK_data[1][42] = BAE_I2C_COUNTER>>8;
samp1234 101:cf1976e16f28 732 LONG_HK_data[1][45] = ACS_MAIN_COUNTER;
samp1234 101:cf1976e16f28 733 LONG_HK_data[1][44] = ACS_MAIN_COUNTER>>8;
samp1234 101:cf1976e16f28 734 LONG_HK_data[1][47] = BCN_TX_MAIN_COUNTER;
samp1234 101:cf1976e16f28 735 LONG_HK_data[1][46] = BCN_TX_MAIN_COUNTER>>8;
samp1234 101:cf1976e16f28 736 LONG_HK_data[1][49] = EPS_MAIN_COUNTER;
samp1234 101:cf1976e16f28 737 LONG_HK_data[1][48] = EPS_MAIN_COUNTER>>8;
lakshya 49:61c9f28332ba 738
lakshya 49:61c9f28332ba 739 uint8_t days,hours,mins;
lakshya 49:61c9f28332ba 740 RETURN_UPTIME(BAE_uptime.read(),&days,&hours,&mins);
lakshya 49:61c9f28332ba 741 LONG_HK_data[1][50] = days;
lakshya 49:61c9f28332ba 742 RETURN_UPTIME(I2C_last.read(),&days,&hours,&mins);
lakshya 49:61c9f28332ba 743 LONG_HK_data[1][50] = (LONG_HK_data[1][50]) | (hours>>2);
lakshya 49:61c9f28332ba 744 LONG_HK_data[1][51] = hours;
lakshya 49:61c9f28332ba 745 LONG_HK_data[1][51] = (LONG_HK_data[1][51]<<6) | mins;
samp1234 101:cf1976e16f28 746 uint16_t scaled1;
samp1234 101:cf1976e16f28 747 scaled1 = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
samp1234 101:cf1976e16f28 748 LONG_HK_data[1][52] = (scaled1>>8);
samp1234 101:cf1976e16f28 749 LONG_HK_data[1][53] = scaled1;
samp1234 101:cf1976e16f28 750 scaled1 = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
samp1234 101:cf1976e16f28 751 LONG_HK_data[1][54] = (scaled1>>8);
samp1234 101:cf1976e16f28 752 LONG_HK_data[1][55] = scaled1;
samp1234 101:cf1976e16f28 753 scaled1 = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
samp1234 101:cf1976e16f28 754 LONG_HK_data[1][56] = (scaled1>>8);
samp1234 101:cf1976e16f28 755 LONG_HK_data[1][57] = scaled1;
samp1234 101:cf1976e16f28 756 scaled1 = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[0]);
samp1234 101:cf1976e16f28 757 LONG_HK_data[1][58] = (scaled1>>8);
samp1234 101:cf1976e16f28 758 LONG_HK_data[1][59] = scaled1;
samp1234 101:cf1976e16f28 759 scaled1 = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[1]);
samp1234 101:cf1976e16f28 760 LONG_HK_data[1][60] = (scaled1>>8);
samp1234 101:cf1976e16f28 761 LONG_HK_data[1][61] = scaled1;
samp1234 101:cf1976e16f28 762 scaled1 = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[2]);
samp1234 101:cf1976e16f28 763 LONG_HK_data[1][62] = (scaled1>>8);
samp1234 101:cf1976e16f28 764 LONG_HK_data[1][63] = scaled1;
samp1234 101:cf1976e16f28 765
samp1234 101:cf1976e16f28 766 /*
samp1234 101:cf1976e16f28 767 LONG_HK_data[1][52] = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);//actual_data.bit_data_acs_mm[0];
lakshya 49:61c9f28332ba 768 LONG_HK_data[1][53] = actual_data.bit_data_acs_mm[0]>>8;
lakshya 49:61c9f28332ba 769 LONG_HK_data[1][54] = actual_data.bit_data_acs_mm[1];
lakshya 49:61c9f28332ba 770 LONG_HK_data[1][55] = actual_data.bit_data_acs_mm[1]>>8;
lakshya 49:61c9f28332ba 771 LONG_HK_data[1][56] = actual_data.bit_data_acs_mm[2];
lakshya 49:61c9f28332ba 772 LONG_HK_data[1][57] = actual_data.bit_data_acs_mm[2]>>8;
lakshya 20:949d13045431 773
lakshya 49:61c9f28332ba 774 LONG_HK_data[1][58] = actual_data.bit_data_acs_mg[0];
lakshya 49:61c9f28332ba 775 LONG_HK_data[1][59] = actual_data.bit_data_acs_mg[0]>>8;
lakshya 49:61c9f28332ba 776 LONG_HK_data[1][60] = actual_data.bit_data_acs_mg[1];
lakshya 49:61c9f28332ba 777 LONG_HK_data[1][61] = actual_data.bit_data_acs_mg[1]>>8;
lakshya 49:61c9f28332ba 778 LONG_HK_data[1][62] = actual_data.bit_data_acs_mg[2];
lakshya 49:61c9f28332ba 779 LONG_HK_data[1][63] = actual_data.bit_data_acs_mg[2]>>8;
samp1234 101:cf1976e16f28 780 */
samp1234 101:cf1976e16f28 781 LONG_HK_data[1][64] = (~BCN_TX_OC_FAULT&&0x01);
samp1234 101:cf1976e16f28 782 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_XY_ENABLE&&0x01;
samp1234 101:cf1976e16f28 783 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | ACS_TR_Z_ENABLE&&0x01;
samp1234 101:cf1976e16f28 784 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | (~ACS_TR_XY_OC_FAULT&&0x01);
samp1234 101:cf1976e16f28 785 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | (~ACS_TR_Z_OC_FAULT)&&0x01;
samp1234 101:cf1976e16f28 786 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | (~ACS_TR_XY_FAULT&&0x01);
samp1234 101:cf1976e16f28 787 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | (~EPS_CHARGER_FAULT&&0x01);
samp1234 101:cf1976e16f28 788 LONG_HK_data[1][64] = (LONG_HK_data[1][64]<<1) | EPS_CHARGER_STATUS&&0x01;
lakshya 49:61c9f28332ba 789
lakshya 49:61c9f28332ba 790 LONG_HK_data[1][65] = EPS_BATTERY_GAUGE_ALERT;
samp1234 101:cf1976e16f28 791 LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | (~CDMS_OC_FAULT&&0x01);
samp1234 101:cf1976e16f28 792 LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | (~ACS_ATS1_OC_FAULT&&0x01);
samp1234 101:cf1976e16f28 793 LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | (~ACS_ATS2_OC_FAULT&&0x01);
samp1234 101:cf1976e16f28 794 LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<1) | (~ACS_TR_Z_FAULT&&0x01);
lakshya 49:61c9f28332ba 795 LONG_HK_data[1][65] = (LONG_HK_data[1][65]<<3);
lakshya 20:949d13045431 796 //3 spare
samp1234 101:cf1976e16f28 797
lakshya 20:949d13045431 798
lakshya 49:61c9f28332ba 799 LONG_HK_data[1][66] = ACS_TR_X_PWM;
lakshya 49:61c9f28332ba 800 LONG_HK_data[1][67] = ACS_TR_Y_PWM;
lakshya 49:61c9f28332ba 801 LONG_HK_data[1][68] = ACS_TR_Z_PWM;
lakshya 20:949d13045431 802 //spare byte
lakshya 20:949d13045431 803 //assigned it to counter HTR_CYCLE_COUNTER
lakshya 20:949d13045431 804
lakshya 20:949d13045431 805 //assign it b_scz_angle
lakshya 49:61c9f28332ba 806 LONG_HK_data[1][69] = B_SCZ_ANGLE>>4; ;
lakshya 49:61c9f28332ba 807 LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | alarmmode;
lakshya 49:61c9f28332ba 808 LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | controlmode_mms;
lakshya 49:61c9f28332ba 809 LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1) | singularity_flag_mms;
lakshya 49:61c9f28332ba 810 LONG_HK_data[1][69] = (LONG_HK_data[1][69]<<1);
lakshya 49:61c9f28332ba 811 //1 bit spare
lakshya 20:949d13045431 812
lakshya 20:949d13045431 813 for(int i=0;i<9;i++)
lakshya 20:949d13045431 814 {
lakshya 49:61c9f28332ba 815 LONG_HK_data[1][70+i] = invjm_mms[i];
lakshya 33:76f2b8735501 816 LONG_HK_data[1][81+i] = jm_mms[i];
lakshya 20:949d13045431 817 }
lakshya 20:949d13045431 818
lakshya 49:61c9f28332ba 819 for(int i=0;i<2;i++)
lakshya 49:61c9f28332ba 820 LONG_HK_data[1][79+i] = bb_mms[i];
lakshya 20:949d13045431 821
lakshya 20:949d13045431 822 for(int i=0;i<16;i++)
lakshya 20:949d13045431 823 {
lakshya 33:76f2b8735501 824 LONG_HK_data[1][90+i] = quant_data.voltage_quant[i];
lakshya 33:76f2b8735501 825 LONG_HK_data[1][106+i] = quant_data.current_quant[i];
lakshya 20:949d13045431 826 }
lakshya 20:949d13045431 827
azaddevarm 96:6603fedb6b69 828 LONG_HK_data[1][122] = quant_data.Batt_voltage_quant;//checked
azaddevarm 95:d9ad0e6481be 829 eps_pc.printf("\n\rBattery voltage in LONG_HK: %d\n\r",LONG_HK_data[1][122]);
azaddevarm 96:6603fedb6b69 830 LONG_HK_data[1][123] = quant_data.BAE_temp_quant; /**/
azaddevarm 96:6603fedb6b69 831 eps_pc.printf("\n\rquant_data.BAE_temp_quant %d \n\r",LONG_HK_data[1][123]);
azaddevarm 96:6603fedb6b69 832
azaddevarm 96:6603fedb6b69 833
lakshya 33:76f2b8735501 834 LONG_HK_data[1][124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
azaddevarm 96:6603fedb6b69 835 //LONG_HK_data[1][124] = soc();//just for debugging
azaddevarm 96:6603fedb6b69 836 //eps_pc.printf("Battery SOC in LONG_HK in float: %f\n\r",actual_data.Batt_gauge_actual[1]); //not needed
azaddevarm 95:d9ad0e6481be 837 eps_pc.printf("Battery SOC in LONG_HK: %d\n\r",LONG_HK_data[1][124]);
azaddevarm 96:6603fedb6b69 838 eps_pc.printf("Battery SOC in eps in float: %f\n\r",soc());
azaddevarm 96:6603fedb6b69 839 eps_pc.printf("Battery SOC in eps: %d\n\r",(int)soc());
samp1234 101:cf1976e16f28 840 FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual); // for debugging
samp1234 101:cf1976e16f28 841
samp1234 101:cf1976e16f28 842 LONG_HK_data[1][125] = actual_data.Batt_temp_actual[0]+50;//quant_data.Batt_temp_quant[0];
azaddevarm 96:6603fedb6b69 843 //LONG_HK_data[1][125] = actual_data.Batt_temp_actual[0]; //just for debugging
azaddevarm 95:d9ad0e6481be 844 eps_pc.printf("Battery TMP1 in LONG_HK: %d\n\r",LONG_HK_data[1][125]);
samp1234 101:cf1976e16f28 845 LONG_HK_data[1][126] = actual_data.Batt_temp_actual[1]+50; //quant_data.Batt_temp_quant[1];
azaddevarm 95:d9ad0e6481be 846 eps_pc.printf("Battery TMP2 in LONG_HK: %d\n\r",LONG_HK_data[1][126]);
samp1234 99:2cc5c0c98cb3 847 LONG_HK_data[1][127] = BCN_TMP+50;
azaddevarm 95:d9ad0e6481be 848 eps_pc.printf("BCN TMP in LONG_HK: %d\n\r",LONG_HK_data[1][127]);
lakshya 33:76f2b8735501 849 LONG_HK_data[1][128] = 0x00;
lakshya 33:76f2b8735501 850 LONG_HK_data[1][129] = 0x00;
lakshya 33:76f2b8735501 851 LONG_HK_data[1][130] = 0x00;
lakshya 33:76f2b8735501 852 LONG_HK_data[1][131] = 0x00;
lakshya 20:949d13045431 853 uint16_t crc = crc_hk_data();
lakshya 33:76f2b8735501 854 LONG_HK_data[1][132] = (uint8_t)(crc >> 8);
lakshya 33:76f2b8735501 855 LONG_HK_data[1][133] = crc;
lakshya 20:949d13045431 856
lakshya 20:949d13045431 857 //===================================================
lakshya 20:949d13045431 858 /* can be retrived from the earlier code (function)*/
sakthipriya 5:bb592f3185cc 859 }
sakthipriya 5:bb592f3185cc 860
sakthipriya 5:bb592f3185cc 861 uint8_t quantiz(float start,float step,float x)
sakthipriya 0:7b4c00e3912f 862 {
sakthipriya 0:7b4c00e3912f 863 int y=(x-start)/step;
sakthipriya 0:7b4c00e3912f 864 if(y<=0)y=0;
sakthipriya 0:7b4c00e3912f 865 if(y>=255)y=255;
sakthipriya 0:7b4c00e3912f 866 return y;
sakthipriya 0:7b4c00e3912f 867 }
sakthipriya 0:7b4c00e3912f 868
sakthipriya 3:07e15677a75c 869 bool firstCount=true; // goes to EPS init
sakthipriya 3:07e15677a75c 870
sakthipriya 3:07e15677a75c 871
lakshya 66:a5d2b8dc6b9e 872 uint8_t saveMin(uint8_t x,uint8_t y){
azaddevarm 79:bc093fd525d7 873 if(y<x)
azaddevarm 79:bc093fd525d7 874 {
sakthipriya 3:07e15677a75c 875 x=y;
azaddevarm 79:bc093fd525d7 876 }
lakshya 66:a5d2b8dc6b9e 877 return x;
sakthipriya 3:07e15677a75c 878 }
lakshya 66:a5d2b8dc6b9e 879 uint8_t saveMax(uint8_t x,uint8_t y){
sakthipriya 3:07e15677a75c 880 if (y>x)
sakthipriya 3:07e15677a75c 881 {
sakthipriya 3:07e15677a75c 882 x=y;
sakthipriya 3:07e15677a75c 883 }
lakshya 66:a5d2b8dc6b9e 884 return x;
sakthipriya 0:7b4c00e3912f 885 }
sakthipriya 0:7b4c00e3912f 886
sakthipriya 3:07e15677a75c 887
sakthipriya 3:07e15677a75c 888 void minMaxHkData(){
sakthipriya 3:07e15677a75c 889 if(firstCount==true){
sakthipriya 3:07e15677a75c 890 for (int i = 0; i < 16; ++i){
sakthipriya 3:07e15677a75c 891 bae_HK_minmax.voltage_min[i] = quant_data.voltage_quant[i];
sakthipriya 3:07e15677a75c 892 bae_HK_minmax.voltage_max[i] = quant_data.voltage_quant[i];
sakthipriya 3:07e15677a75c 893 }
lakshya 66:a5d2b8dc6b9e 894 for (int i = 0; i < 16; ++i){
sakthipriya 3:07e15677a75c 895 bae_HK_minmax.current_min[i] = quant_data.current_quant[i];
sakthipriya 3:07e15677a75c 896 bae_HK_minmax.current_max[i] = quant_data.current_quant[i];
sakthipriya 3:07e15677a75c 897 }
sakthipriya 3:07e15677a75c 898
sakthipriya 3:07e15677a75c 899 for (int i = 0; i < 2; ++i){
sakthipriya 3:07e15677a75c 900 bae_HK_minmax.Batt_temp_min[i] = quant_data.Batt_temp_quant[i];
sakthipriya 3:07e15677a75c 901 bae_HK_minmax.Batt_temp_max[i] = quant_data.Batt_temp_quant[i];
sakthipriya 3:07e15677a75c 902 }
lakshya 20:949d13045431 903 /*
sakthipriya 3:07e15677a75c 904 for (int i = 0; i < 3; ++i){
sakthipriya 3:07e15677a75c 905 bae_HK_minmax.Batt_gauge_min[i] = quant_data.Batt_gauge_quant[i];
sakthipriya 3:07e15677a75c 906 bae_HK_minmax.Batt_gauge_max[i] = quant_data.Batt_gauge_quant[i];
sakthipriya 3:07e15677a75c 907 }
lakshya 20:949d13045431 908 */
lakshya 53:459b71b1861c 909 bae_HK_minmax.Batt_SOC_min = (uint8_t)(actual_data.Batt_gauge_actual[1]);
lakshya 53:459b71b1861c 910 bae_HK_minmax.Batt_SOC_max = (uint8_t)(actual_data.Batt_gauge_actual[1]);
lakshya 20:949d13045431 911
samp1234 99:2cc5c0c98cb3 912 bae_HK_minmax.BCN_TEMP_min = BCN_TMP+50;
samp1234 99:2cc5c0c98cb3 913 bae_HK_minmax.BCN_TEMP_max = BCN_TMP+50;
lakshya 20:949d13045431 914
sakthipriya 3:07e15677a75c 915 for (int i = 0; i < 3; ++i){
lakshya 20:949d13045431 916 bae_HK_minmax.bit_data_acs_mg_min[i] = actual_data.bit_data_acs_mg[i];
lakshya 20:949d13045431 917 bae_HK_minmax.bit_data_acs_mg_max[i] = actual_data.bit_data_acs_mg[i];
sakthipriya 3:07e15677a75c 918 }
sakthipriya 3:07e15677a75c 919 for (int i = 0; i < 3; ++i){
lakshya 20:949d13045431 920 bae_HK_minmax.bit_data_acs_mm_min[i] = actual_data.bit_data_acs_mm[i];//Bvalue_quant earlier
lakshya 20:949d13045431 921 bae_HK_minmax.bit_data_acs_mm_max[i] = actual_data.bit_data_acs_mm[i];
sakthipriya 3:07e15677a75c 922 }
sakthipriya 3:07e15677a75c 923 bae_HK_minmax.BAE_temp_min=quant_data.BAE_temp_quant;
sakthipriya 3:07e15677a75c 924 bae_HK_minmax.BAE_temp_max=quant_data.BAE_temp_quant;
sakthipriya 3:07e15677a75c 925 bae_HK_minmax.Batt_voltage_min=quant_data.Batt_voltage_quant;
sakthipriya 3:07e15677a75c 926 bae_HK_minmax.Batt_voltage_max=quant_data.Batt_voltage_quant;
sakthipriya 3:07e15677a75c 927
lakshya 63:55d32e7dcad7 928 firstCount=false;//just as a precaution see if correct the problem
lakshya 63:55d32e7dcad7 929 //printf("/n/r the status is %d",firstCount);/*else during runtime write a printf and see the changes whether it changes or not*/
lakshya 63:55d32e7dcad7 930
sakthipriya 3:07e15677a75c 931 }
sakthipriya 3:07e15677a75c 932 else {
sakthipriya 3:07e15677a75c 933 for (int i = 0; i < 16; ++i)
sakthipriya 3:07e15677a75c 934 {
lakshya 66:a5d2b8dc6b9e 935 bae_HK_minmax.voltage_min[i] = saveMin(bae_HK_minmax.voltage_min[i],quant_data.voltage_quant[i]);
lakshya 66:a5d2b8dc6b9e 936 bae_HK_minmax.voltage_max[i] = saveMax(bae_HK_minmax.voltage_max[i],quant_data.voltage_quant[i]);
sakthipriya 3:07e15677a75c 937 }
lakshya 66:a5d2b8dc6b9e 938 for (int i = 0; i < 16; ++i)
sakthipriya 3:07e15677a75c 939 {
lakshya 66:a5d2b8dc6b9e 940 bae_HK_minmax.current_min[i] = saveMin(bae_HK_minmax.current_min[i],quant_data.current_quant[i]);
lakshya 66:a5d2b8dc6b9e 941 bae_HK_minmax.current_max[i] = saveMax(bae_HK_minmax.current_max[i],quant_data.current_quant[i]);
sakthipriya 3:07e15677a75c 942 }
sakthipriya 3:07e15677a75c 943
sakthipriya 3:07e15677a75c 944 for (int i = 0; i < 2; ++i)
sakthipriya 3:07e15677a75c 945 {
lakshya 66:a5d2b8dc6b9e 946 bae_HK_minmax.Batt_temp_min[i] = saveMin(bae_HK_minmax.Batt_temp_min[i],quant_data.Batt_temp_quant[i]);
lakshya 66:a5d2b8dc6b9e 947 bae_HK_minmax.Batt_temp_max[i] = saveMax(bae_HK_minmax.Batt_temp_max[i],quant_data.Batt_temp_quant[i]);
sakthipriya 3:07e15677a75c 948 }
lakshya 20:949d13045431 949 /*
sakthipriya 3:07e15677a75c 950 for (int i = 0; i < 3; ++i)
sakthipriya 3:07e15677a75c 951 {
sakthipriya 3:07e15677a75c 952 saveMin(bae_HK_minmax.Batt_gauge_min[i], quant_data.Batt_gauge_quant[i]);
sakthipriya 3:07e15677a75c 953 saveMax(bae_HK_minmax.Batt_gauge_max[i], quant_data.Batt_gauge_quant[i]);
sakthipriya 3:07e15677a75c 954 }
lakshya 20:949d13045431 955 */
lakshya 66:a5d2b8dc6b9e 956 bae_HK_minmax.Batt_SOC_min = saveMin(bae_HK_minmax.Batt_SOC_min, ((uint8_t)(actual_data.Batt_gauge_actual[1])) );
lakshya 66:a5d2b8dc6b9e 957 bae_HK_minmax.Batt_SOC_max = saveMax(bae_HK_minmax.Batt_SOC_max, ((uint8_t)(actual_data.Batt_gauge_actual[1])) );
lakshya 20:949d13045431 958
samp1234 99:2cc5c0c98cb3 959 bae_HK_minmax.BCN_TEMP_min = saveMin(bae_HK_minmax.BCN_TEMP_min, BCN_TMP+50);
samp1234 99:2cc5c0c98cb3 960 bae_HK_minmax.BCN_TEMP_max = saveMax(bae_HK_minmax.BCN_TEMP_max, BCN_TMP+50);
lakshya 20:949d13045431 961
sakthipriya 3:07e15677a75c 962 for (int i = 0; i < 3; ++i)
sakthipriya 3:07e15677a75c 963 {
lakshya 66:a5d2b8dc6b9e 964 bae_HK_minmax.bit_data_acs_mg_min[i] = saveMin(bae_HK_minmax.bit_data_acs_mg_min[i], actual_data.bit_data_acs_mg[i]);
lakshya 66:a5d2b8dc6b9e 965 bae_HK_minmax.bit_data_acs_mg_max[i] = saveMax(bae_HK_minmax.bit_data_acs_mg_max[i], actual_data.bit_data_acs_mg[i]);
sakthipriya 3:07e15677a75c 966 }
sakthipriya 3:07e15677a75c 967 for (int i = 0; i < 3; ++i)
sakthipriya 3:07e15677a75c 968 {
lakshya 66:a5d2b8dc6b9e 969 bae_HK_minmax.bit_data_acs_mm_min[i] = saveMin(bae_HK_minmax.bit_data_acs_mm_min[i], actual_data.bit_data_acs_mm[i]);
lakshya 66:a5d2b8dc6b9e 970 bae_HK_minmax.bit_data_acs_mm_max[i] = saveMax(bae_HK_minmax.bit_data_acs_mm_max[i], actual_data.bit_data_acs_mm[i]);
sakthipriya 3:07e15677a75c 971 }
lakshya 66:a5d2b8dc6b9e 972 bae_HK_minmax.BAE_temp_min = saveMin(bae_HK_minmax.BAE_temp_min,quant_data.BAE_temp_quant);
lakshya 66:a5d2b8dc6b9e 973 bae_HK_minmax.BAE_temp_max = saveMax(bae_HK_minmax.BAE_temp_max,quant_data.BAE_temp_quant);
lakshya 66:a5d2b8dc6b9e 974 bae_HK_minmax.Batt_voltage_min = saveMin(bae_HK_minmax.Batt_voltage_min,quant_data.Batt_voltage_quant);
lakshya 66:a5d2b8dc6b9e 975 bae_HK_minmax.Batt_voltage_max = saveMin(bae_HK_minmax.Batt_voltage_max,quant_data.Batt_voltage_quant);
sakthipriya 3:07e15677a75c 976
sakthipriya 3:07e15677a75c 977
sakthipriya 3:07e15677a75c 978 }
sakthipriya 3:07e15677a75c 979 firstCount=false;
lakshya 66:a5d2b8dc6b9e 980
lakshya 66:a5d2b8dc6b9e 981 //printing the min_max data shouldn't give the tc to get new min max data shouldn't call the case 0x41 now to reset the min_max data
lakshya 66:a5d2b8dc6b9e 982 for (int i = 0; i < 16; ++i)
Bragadeesh153 90:2d0cdc87329a 983 // eps_pc.printf("\n\rthe min volatages are %d = %d",i,bae_HK_minmax.voltage_min[i]);
lakshya 66:a5d2b8dc6b9e 984 for (int i = 0; i < 16; ++i)
Bragadeesh153 90:2d0cdc87329a 985 //eps_pc.printf("\n\rthe min current are %d = %d",i,bae_HK_minmax.current_min[i]);
lakshya 66:a5d2b8dc6b9e 986 for (int i = 0; i < 2; ++i)
Bragadeesh153 90:2d0cdc87329a 987 // eps_pc.printf("\n\rthe min bae_temp are %d = %d",i,bae_HK_minmax.Batt_temp_min[i]);
lakshya 66:a5d2b8dc6b9e 988
Bragadeesh153 90:2d0cdc87329a 989 //eps_pc.printf("\n\rthe min batt_SOC_min are %d",bae_HK_minmax.Batt_SOC_min);
Bragadeesh153 90:2d0cdc87329a 990 // eps_pc.printf("\n\rthe min BCN_TEMP_min are %d",bae_HK_minmax.BCN_TEMP_min);
lakshya 66:a5d2b8dc6b9e 991
lakshya 66:a5d2b8dc6b9e 992 for (int i = 0; i < 3; ++i)
lakshya 66:a5d2b8dc6b9e 993 {
Bragadeesh153 90:2d0cdc87329a 994 // eps_pc.printf("\n\rthe min bit_data_acs_mg_min are %d = %d",i,bae_HK_minmax.bit_data_acs_mg_min[i]);
lakshya 66:a5d2b8dc6b9e 995 }
lakshya 66:a5d2b8dc6b9e 996 for (int i = 0; i < 3; ++i)
lakshya 66:a5d2b8dc6b9e 997 {
Bragadeesh153 90:2d0cdc87329a 998 // eps_pc.printf("\n\rthe min bit_data_acs_mm_min are %d = %d",i,bae_HK_minmax.bit_data_acs_mm_min[i]);
lakshya 66:a5d2b8dc6b9e 999 }
lakshya 66:a5d2b8dc6b9e 1000
Bragadeesh153 90:2d0cdc87329a 1001 //eps_pc.printf("\n\rthe min BAE_temp_min are %d",bae_HK_minmax.BAE_temp_min);
Bragadeesh153 90:2d0cdc87329a 1002 //eps_pc.printf("\n\rthe min Batt_voltage_min %d",bae_HK_minmax.Batt_voltage_min);
lakshya 66:a5d2b8dc6b9e 1003
lakshya 66:a5d2b8dc6b9e 1004 //max data now
lakshya 66:a5d2b8dc6b9e 1005 for (int i = 0; i < 16; ++i)
Bragadeesh153 90:2d0cdc87329a 1006 // eps_pc.printf("\n\rthe max volatages are %d = %d",i,bae_HK_minmax.voltage_max[i]);
lakshya 66:a5d2b8dc6b9e 1007 for (int i = 0; i < 16; ++i)
Bragadeesh153 90:2d0cdc87329a 1008 //eps_pc.printf("\n\rthe max current are %d = %d",i,bae_HK_minmax.current_max[i]);
lakshya 66:a5d2b8dc6b9e 1009 for (int i = 0; i < 2; ++i)
Bragadeesh153 90:2d0cdc87329a 1010 //eps_pc.printf("\n\rthe max bae_temp are %d = %d",i,bae_HK_minmax.Batt_temp_max[i]);
lakshya 66:a5d2b8dc6b9e 1011
Bragadeesh153 90:2d0cdc87329a 1012 //eps_pc.printf("\n\rthe max batt_SOC_max are %d",bae_HK_minmax.Batt_SOC_max);
Bragadeesh153 90:2d0cdc87329a 1013 // eps_pc.printf("\n\rthe max BCN_TEMP_max are %d",bae_HK_minmax.BCN_TEMP_max);
lakshya 66:a5d2b8dc6b9e 1014
lakshya 66:a5d2b8dc6b9e 1015 for (int i = 0; i < 3; ++i)
lakshya 66:a5d2b8dc6b9e 1016 {
Bragadeesh153 90:2d0cdc87329a 1017 // eps_pc.printf("\n\rthe max bit_data_acs_mg_max are %d = %d",i,bae_HK_minmax.bit_data_acs_mg_max[i]);
lakshya 66:a5d2b8dc6b9e 1018 }
lakshya 66:a5d2b8dc6b9e 1019 for (int i = 0; i < 3; ++i)
lakshya 66:a5d2b8dc6b9e 1020 {
Bragadeesh153 90:2d0cdc87329a 1021 //eps_pc.printf("\n\rthe max bit_data_acs_mm_max are %d = %d",i,bae_HK_minmax.bit_data_acs_mm_max[i]);
lakshya 66:a5d2b8dc6b9e 1022 }
lakshya 66:a5d2b8dc6b9e 1023
Bragadeesh153 90:2d0cdc87329a 1024 //eps_pc.printf("\n\rthe max BAE_temp_max are %d ",bae_HK_minmax.BAE_temp_max);
Bragadeesh153 90:2d0cdc87329a 1025 // eps_pc.printf("\n\rthe max Batt_voltage_max %d ",bae_HK_minmax.Batt_voltage_max);
lakshya 66:a5d2b8dc6b9e 1026
lakshya 66:a5d2b8dc6b9e 1027
sakthipriya 3:07e15677a75c 1028 }
lakshya 66:a5d2b8dc6b9e 1029
sakthipriya 3:07e15677a75c 1030
sakthipriya 0:7b4c00e3912f 1031 //............................................BATTERY GAUGE......................................//
sakthipriya 0:7b4c00e3912f 1032 void FCTN_BATTERYGAUGE_INIT()
sakthipriya 0:7b4c00e3912f 1033 {
sakthipriya 0:7b4c00e3912f 1034 disable_sleep();
sakthipriya 0:7b4c00e3912f 1035 disable_hibernate();
sakthipriya 0:7b4c00e3912f 1036 socChangeAlertEnabled(true); //enabling alert on soc changing by 1%
sakthipriya 0:7b4c00e3912f 1037 emptyAlertThreshold(32);//setting empty alert threshold to 32% soc
sakthipriya 0:7b4c00e3912f 1038 vAlertMinMaxThreshold();//set min, max value of Valrt register
sakthipriya 0:7b4c00e3912f 1039 vResetThresholdSet();//set threshold voltage for reset
sakthipriya 0:7b4c00e3912f 1040 vResetAlertEnabled(true);//enable alert on reset for V < Vreset
lakshya 33:76f2b8735501 1041 int ack = write(REG_STATUS, read(REG_STATUS) & 0xFEFF); //Clearing Reset Indicator bit
Bragadeesh153 87:051ec436e75f 1042 if( ack == 0 ) eps_pc.printf("\n\rBTG init success\n\r");
Bragadeesh153 87:051ec436e75f 1043 else eps_pc.printf("\n\rBTG init fail ack = %d\n\r", ack);
lakshya 33:76f2b8735501 1044 write(REG_STATUS, read(REG_STATUS) & 0xFEFF); //Clearing Reset Indicator bit
sakthipriya 0:7b4c00e3912f 1045 }
sakthipriya 0:7b4c00e3912f 1046
lakshya 33:76f2b8735501 1047 int FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4], float temp)
sakthipriya 0:7b4c00e3912f 1048 {
lakshya 49:61c9f28332ba 1049 //// eps_pc.printf("\n\r battery gauge \n");
sakthipriya 0:7b4c00e3912f 1050
lakshya 33:76f2b8735501 1051 //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.
lakshya 49:61c9f28332ba 1052 int flag = tempCompensation(temp);
lakshya 49:61c9f28332ba 1053 //tempCompensation(temp);
sakthipriya 0:7b4c00e3912f 1054
lakshya 49:61c9f28332ba 1055 if( flag == 0 )
lakshya 49:61c9f28332ba 1056 {
lakshya 49:61c9f28332ba 1057 Battery_parameters[0]=vcell();
lakshya 49:61c9f28332ba 1058
lakshya 49:61c9f28332ba 1059 timer_soc.reset();
lakshya 49:61c9f28332ba 1060 timer_soc.start();
lakshya 49:61c9f28332ba 1061 Battery_parameters[1]=soc();
lakshya 49:61c9f28332ba 1062 timer_soc.stop();
lakshya 49:61c9f28332ba 1063
lakshya 49:61c9f28332ba 1064 Battery_parameters[2]=crate();
lakshya 49:61c9f28332ba 1065
Bragadeesh153 87:051ec436e75f 1066 eps_pc.printf("\nVcell=%f",vcell()); //remove this for final code
Bragadeesh153 87:051ec436e75f 1067 eps_pc.printf("\nSOC=%f",soc()); //remove this for final code
Bragadeesh153 87:051ec436e75f 1068 eps_pc.printf("\nC_rate=%f",crate()); //remove this for final code
lakshya 49:61c9f28332ba 1069
lakshya 49:61c9f28332ba 1070
lakshya 49:61c9f28332ba 1071 if (alerting()== true) //alert is on
lakshya 49:61c9f28332ba 1072 { timer_alertFlags.reset();
lakshya 49:61c9f28332ba 1073 timer_alertFlags.start();
lakshya 49:61c9f28332ba 1074 Battery_parameters[3]=alertFlags();
lakshya 49:61c9f28332ba 1075 timer_alertFlags.stop();
lakshya 49:61c9f28332ba 1076
lakshya 49:61c9f28332ba 1077 clearAlert();//clear alert
lakshya 49:61c9f28332ba 1078 clearAlertFlags();//clear all alert flags
lakshya 49:61c9f28332ba 1079 }
lakshya 49:61c9f28332ba 1080 }
sakthipriya 0:7b4c00e3912f 1081
lakshya 49:61c9f28332ba 1082 if( soc() == 200 || flag != 0) return 1;
lakshya 49:61c9f28332ba 1083 else return 0;
sakthipriya 0:7b4c00e3912f 1084
sakthipriya 0:7b4c00e3912f 1085 }
lakshya 49:61c9f28332ba 1086 int tempCompensation(float temp)
lakshya 33:76f2b8735501 1087 {
lakshya 33:76f2b8735501 1088 //Calculate the new RCOMP value
lakshya 33:76f2b8735501 1089 char rcomp;
lakshya 33:76f2b8735501 1090 if (temp > 20.0) {
lakshya 33:76f2b8735501 1091 rcomp = RCOMP0 + (temp - 20.0) * -0.5;
lakshya 33:76f2b8735501 1092 } else {
lakshya 33:76f2b8735501 1093 rcomp = RCOMP0 + (temp - 20.0) * -5.0;
lakshya 33:76f2b8735501 1094 }
lakshya 33:76f2b8735501 1095
lakshya 33:76f2b8735501 1096 //Update the RCOMP value
lakshya 49:61c9f28332ba 1097 return compensation(rcomp);
lakshya 33:76f2b8735501 1098 }
lakshya 33:76f2b8735501 1099
lakshya 49:61c9f28332ba 1100 int compensation(char rcomp)
lakshya 33:76f2b8735501 1101 {
lakshya 33:76f2b8735501 1102 //Read the current 16-bit register value
lakshya 33:76f2b8735501 1103 unsigned short value = read(REG_CONFIG);
lakshya 33:76f2b8735501 1104
lakshya 33:76f2b8735501 1105 //Update the register value
lakshya 33:76f2b8735501 1106 value &= 0x00FF;
lakshya 33:76f2b8735501 1107 value |= rcomp << 8;
lakshya 33:76f2b8735501 1108
lakshya 33:76f2b8735501 1109 //Write the value back out
lakshya 49:61c9f28332ba 1110 return (write(REG_CONFIG, value));
lakshya 33:76f2b8735501 1111 }
lakshya 33:76f2b8735501 1112
lakshya 33:76f2b8735501 1113 int write(char reg, unsigned short data)
lakshya 33:76f2b8735501 1114 {
lakshya 49:61c9f28332ba 1115 eps_btg_writ_flag = -1;
lakshya 33:76f2b8735501 1116 //Create a temporary buffer
lakshya 33:76f2b8735501 1117 char buff[3];
lakshya 33:76f2b8735501 1118
lakshya 33:76f2b8735501 1119 //Load the register address and 16-bit data
lakshya 33:76f2b8735501 1120 buff[0] = reg;
lakshya 33:76f2b8735501 1121 buff[1] = data >> 8;
lakshya 33:76f2b8735501 1122 buff[2] = data;
lakshya 33:76f2b8735501 1123
Bragadeesh153 52:daa685b0e390 1124 int flag = i2c.write(m_ADDR, buff, 3); //Write the data and return ack
lakshya 33:76f2b8735501 1125
lakshya 33:76f2b8735501 1126 if( flag != 0 )
lakshya 33:76f2b8735501 1127 {
Bragadeesh153 52:daa685b0e390 1128 flag = i2c.write(m_ADDR, buff, 3); //Write the data and return ack
lakshya 49:61c9f28332ba 1129 if( data != read(reg) )
lakshya 49:61c9f28332ba 1130 eps_btg_writ_flag = 1;
lakshya 49:61c9f28332ba 1131 //EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
lakshya 49:61c9f28332ba 1132 else eps_btg_writ_flag = 0;
lakshya 49:61c9f28332ba 1133 //Verify written data
lakshya 49:61c9f28332ba 1134 //EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
lakshya 33:76f2b8735501 1135 }
lakshya 33:76f2b8735501 1136
lakshya 33:76f2b8735501 1137 return flag;
lakshya 33:76f2b8735501 1138 }
lakshya 33:76f2b8735501 1139
lakshya 33:76f2b8735501 1140 unsigned short read(char reg)
lakshya 33:76f2b8735501 1141 {
lakshya 49:61c9f28332ba 1142 eps_btg_read_flag = -1;
lakshya 33:76f2b8735501 1143 int flag = 1;
lakshya 33:76f2b8735501 1144 char buff[2]; //Create a temporary buffer
lakshya 33:76f2b8735501 1145
lakshya 33:76f2b8735501 1146 //Select the register
Bragadeesh153 52:daa685b0e390 1147 i2c.write(m_ADDR, &reg, 1, true);
lakshya 33:76f2b8735501 1148 //Read the 16-bit register
Bragadeesh153 52:daa685b0e390 1149 flag = i2c.read(m_ADDR, buff, 2);
lakshya 33:76f2b8735501 1150
lakshya 33:76f2b8735501 1151 if( flag )
lakshya 33:76f2b8735501 1152 {
Bragadeesh153 52:daa685b0e390 1153 i2c.write(m_ADDR, &reg, 1, true);
Bragadeesh153 52:daa685b0e390 1154 flag = i2c.read(m_ADDR, buff, 2);
lakshya 49:61c9f28332ba 1155 //if( flag )
lakshya 49:61c9f28332ba 1156 // EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
lakshya 33:76f2b8735501 1157 }
lakshya 33:76f2b8735501 1158
lakshya 49:61c9f28332ba 1159 eps_btg_read_flag = flag;
lakshya 33:76f2b8735501 1160 //Return the combined 16-bit value
lakshya 33:76f2b8735501 1161 return (buff[0] << 8) | buff[1];
lakshya 33:76f2b8735501 1162 }
lakshya 33:76f2b8735501 1163 /*
lakshya 33:76f2b8735501 1164
sakthipriya 0:7b4c00e3912f 1165 unsigned short read(char reg)
sakthipriya 0:7b4c00e3912f 1166 {
sakthipriya 0:7b4c00e3912f 1167
sakthipriya 0:7b4c00e3912f 1168 //Create a temporary buffer
sakthipriya 0:7b4c00e3912f 1169 char buff[2];
sakthipriya 0:7b4c00e3912f 1170
sakthipriya 0:7b4c00e3912f 1171 //Select the register
Bragadeesh153 52:daa685b0e390 1172 i2c.write(m_ADDR, &reg, 1, true);
sakthipriya 0:7b4c00e3912f 1173
sakthipriya 0:7b4c00e3912f 1174 //Read the 16-bit register
Bragadeesh153 52:daa685b0e390 1175 i2c.read(m_ADDR, buff, 2);
sakthipriya 0:7b4c00e3912f 1176
sakthipriya 0:7b4c00e3912f 1177 //Return the combined 16-bit value
sakthipriya 0:7b4c00e3912f 1178 return (buff[0] << 8) | buff[1];
sakthipriya 0:7b4c00e3912f 1179 }
sakthipriya 0:7b4c00e3912f 1180
sakthipriya 3:07e15677a75c 1181
sakthipriya 1:446a959e36ce 1182
sakthipriya 3:07e15677a75c 1183
sakthipriya 0:7b4c00e3912f 1184
sakthipriya 0:7b4c00e3912f 1185 void write(char reg, unsigned short data)
sakthipriya 0:7b4c00e3912f 1186 {
sakthipriya 0:7b4c00e3912f 1187 //Create a temporary buffer
sakthipriya 0:7b4c00e3912f 1188 char buff[3];
sakthipriya 0:7b4c00e3912f 1189
sakthipriya 0:7b4c00e3912f 1190 //Load the register address and 16-bit data
sakthipriya 0:7b4c00e3912f 1191 buff[0] = reg;
sakthipriya 0:7b4c00e3912f 1192 buff[1] = data >> 8;
sakthipriya 0:7b4c00e3912f 1193 buff[2] = data;
sakthipriya 0:7b4c00e3912f 1194
sakthipriya 0:7b4c00e3912f 1195 //Write the data
Bragadeesh153 52:daa685b0e390 1196 i2c.write(m_ADDR, buff, 3);
sakthipriya 0:7b4c00e3912f 1197 }
sakthipriya 0:7b4c00e3912f 1198
sakthipriya 0:7b4c00e3912f 1199
lakshya 33:76f2b8735501 1200 */
sakthipriya 0:7b4c00e3912f 1201 // Command the MAX17049 to perform a power-on reset
sakthipriya 0:7b4c00e3912f 1202 void reset()
sakthipriya 0:7b4c00e3912f 1203 {
sakthipriya 0:7b4c00e3912f 1204 //Write the POR command
sakthipriya 0:7b4c00e3912f 1205 write(REG_CMD, 0x5400);
lakshya 33:76f2b8735501 1206 //Re-initialise gauge
lakshya 49:61c9f28332ba 1207
lakshya 49:61c9f28332ba 1208 timer_FCTN_BATTERYGAUGE_INIT.reset();
lakshya 49:61c9f28332ba 1209 timer_FCTN_BATTERYGAUGE_INIT.start();
lakshya 33:76f2b8735501 1210 FCTN_BATTERYGAUGE_INIT();
lakshya 49:61c9f28332ba 1211 timer_FCTN_BATTERYGAUGE_INIT.stop();
sakthipriya 0:7b4c00e3912f 1212 }
sakthipriya 0:7b4c00e3912f 1213
sakthipriya 0:7b4c00e3912f 1214 // Command the MAX17049 to perform a QuickStart
sakthipriya 0:7b4c00e3912f 1215 void quickStart()
sakthipriya 0:7b4c00e3912f 1216 {
sakthipriya 0:7b4c00e3912f 1217 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1218 unsigned short value = read(REG_MODE);
lakshya 15:e09aaaccf134 1219
sakthipriya 0:7b4c00e3912f 1220 //Set the QuickStart bit
sakthipriya 0:7b4c00e3912f 1221 value |= (1 << 14);
sakthipriya 0:7b4c00e3912f 1222
sakthipriya 0:7b4c00e3912f 1223 //Write the value back out
sakthipriya 0:7b4c00e3912f 1224 write(REG_MODE, value);
sakthipriya 0:7b4c00e3912f 1225 }
sakthipriya 0:7b4c00e3912f 1226
sakthipriya 0:7b4c00e3912f 1227
sakthipriya 0:7b4c00e3912f 1228 //disable sleep
sakthipriya 0:7b4c00e3912f 1229 void disable_sleep()
sakthipriya 0:7b4c00e3912f 1230 {
sakthipriya 0:7b4c00e3912f 1231 unsigned short value = read(REG_MODE);
sakthipriya 0:7b4c00e3912f 1232 value &= ~(1 << 13);
sakthipriya 0:7b4c00e3912f 1233 write(REG_MODE, value);
sakthipriya 0:7b4c00e3912f 1234 }
sakthipriya 0:7b4c00e3912f 1235
sakthipriya 0:7b4c00e3912f 1236 //disable the hibernate of the MAX17049
sakthipriya 0:7b4c00e3912f 1237 void disable_hibernate()
sakthipriya 0:7b4c00e3912f 1238 {
sakthipriya 0:7b4c00e3912f 1239 write(REG_HIBRT, 0x0000);
sakthipriya 0:7b4c00e3912f 1240 }
sakthipriya 0:7b4c00e3912f 1241
sakthipriya 0:7b4c00e3912f 1242
sakthipriya 0:7b4c00e3912f 1243 // Enable or disable the SOC 1% change alert on the MAX17049
sakthipriya 0:7b4c00e3912f 1244 void socChangeAlertEnabled(bool enabled)
sakthipriya 0:7b4c00e3912f 1245 {
sakthipriya 0:7b4c00e3912f 1246 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1247 unsigned short value = read(REG_CONFIG);
sakthipriya 0:7b4c00e3912f 1248
sakthipriya 0:7b4c00e3912f 1249 //Set or clear the ALSC bit
sakthipriya 0:7b4c00e3912f 1250 if (enabled)
sakthipriya 0:7b4c00e3912f 1251 value |= (1 << 6);
sakthipriya 0:7b4c00e3912f 1252 else
sakthipriya 0:7b4c00e3912f 1253 value &= ~(1 << 6);
sakthipriya 0:7b4c00e3912f 1254
sakthipriya 0:7b4c00e3912f 1255 //Write the value back out
sakthipriya 0:7b4c00e3912f 1256 write(REG_CONFIG, value);
sakthipriya 0:7b4c00e3912f 1257 }
sakthipriya 0:7b4c00e3912f 1258
lakshya 33:76f2b8735501 1259 /*
sakthipriya 0:7b4c00e3912f 1260 void compensation(char rcomp)
sakthipriya 0:7b4c00e3912f 1261 {
sakthipriya 0:7b4c00e3912f 1262 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1263 unsigned short value = read(REG_CONFIG);
sakthipriya 0:7b4c00e3912f 1264
sakthipriya 0:7b4c00e3912f 1265 //Update the register value
sakthipriya 0:7b4c00e3912f 1266 value &= 0x00FF;
sakthipriya 0:7b4c00e3912f 1267 value |= rcomp << 8;
sakthipriya 0:7b4c00e3912f 1268
sakthipriya 0:7b4c00e3912f 1269 //Write the value back out
sakthipriya 0:7b4c00e3912f 1270 write(REG_CONFIG, value);
sakthipriya 0:7b4c00e3912f 1271 }
sakthipriya 0:7b4c00e3912f 1272
lakshya 33:76f2b8735501 1273
sakthipriya 0:7b4c00e3912f 1274 void tempCompensation(float temp)
sakthipriya 0:7b4c00e3912f 1275 {
sakthipriya 0:7b4c00e3912f 1276 //Calculate the new RCOMP value
sakthipriya 0:7b4c00e3912f 1277 char rcomp;
sakthipriya 0:7b4c00e3912f 1278 if (temp > 20.0) {
sakthipriya 0:7b4c00e3912f 1279 rcomp = RCOMP0 + (temp - 20.0) * -0.5;
sakthipriya 0:7b4c00e3912f 1280 } else {
sakthipriya 0:7b4c00e3912f 1281 rcomp = RCOMP0 + (temp - 20.0) * -5.0;
sakthipriya 0:7b4c00e3912f 1282 }
sakthipriya 0:7b4c00e3912f 1283
sakthipriya 0:7b4c00e3912f 1284 //Update the RCOMP value
sakthipriya 0:7b4c00e3912f 1285 compensation(rcomp);
sakthipriya 0:7b4c00e3912f 1286 }
sakthipriya 0:7b4c00e3912f 1287
lakshya 33:76f2b8735501 1288 */
sakthipriya 0:7b4c00e3912f 1289 // Command the MAX17049 to de-assert the ALRT pin
sakthipriya 0:7b4c00e3912f 1290 void clearAlert()
sakthipriya 0:7b4c00e3912f 1291 {
sakthipriya 0:7b4c00e3912f 1292 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1293 unsigned short value = read(REG_CONFIG);
sakthipriya 0:7b4c00e3912f 1294
sakthipriya 0:7b4c00e3912f 1295 //Clear the ALRT bit
sakthipriya 0:7b4c00e3912f 1296 value &= ~(1 << 5);
sakthipriya 0:7b4c00e3912f 1297
sakthipriya 0:7b4c00e3912f 1298 //Write the value back out
sakthipriya 0:7b4c00e3912f 1299 write(REG_CONFIG, value);
sakthipriya 0:7b4c00e3912f 1300 }
sakthipriya 0:7b4c00e3912f 1301
sakthipriya 0:7b4c00e3912f 1302
sakthipriya 0:7b4c00e3912f 1303 //Set the SOC empty alert threshold of the MAX17049
sakthipriya 0:7b4c00e3912f 1304 void emptyAlertThreshold(char threshold)
sakthipriya 0:7b4c00e3912f 1305 {
sakthipriya 0:7b4c00e3912f 1306 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1307 unsigned short value = read(REG_CONFIG);
sakthipriya 0:7b4c00e3912f 1308
sakthipriya 0:7b4c00e3912f 1309 //Update the register value
sakthipriya 0:7b4c00e3912f 1310 value &= 0xFFE0;
sakthipriya 0:7b4c00e3912f 1311 value |= 32 - threshold;
sakthipriya 0:7b4c00e3912f 1312
sakthipriya 0:7b4c00e3912f 1313 //Write the 16-bit register
sakthipriya 0:7b4c00e3912f 1314 write(REG_CONFIG, value);
sakthipriya 0:7b4c00e3912f 1315 }
sakthipriya 0:7b4c00e3912f 1316
sakthipriya 0:7b4c00e3912f 1317 // Set the low and high voltage alert threshold of the MAX17049
sakthipriya 0:7b4c00e3912f 1318 void vAlertMinMaxThreshold()
sakthipriya 0:7b4c00e3912f 1319 {
sakthipriya 0:7b4c00e3912f 1320 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1321 unsigned short value = read(REG_VALRT);
sakthipriya 0:7b4c00e3912f 1322
sakthipriya 0:7b4c00e3912f 1323 //Mask off the old value
sakthipriya 0:7b4c00e3912f 1324
sakthipriya 0:7b4c00e3912f 1325 value = 0x96D2;
sakthipriya 0:7b4c00e3912f 1326
sakthipriya 0:7b4c00e3912f 1327 //Write the 16-bit register
sakthipriya 0:7b4c00e3912f 1328 write(REG_VALRT, value);
sakthipriya 0:7b4c00e3912f 1329 }
sakthipriya 0:7b4c00e3912f 1330
sakthipriya 0:7b4c00e3912f 1331
sakthipriya 0:7b4c00e3912f 1332 // Set the reset voltage threshold of the MAX17049
sakthipriya 0:7b4c00e3912f 1333 void vResetThresholdSet()
sakthipriya 0:7b4c00e3912f 1334 {
sakthipriya 0:7b4c00e3912f 1335 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1336 unsigned short value = read(REG_VRESET_ID);
sakthipriya 0:7b4c00e3912f 1337
sakthipriya 0:7b4c00e3912f 1338 //Mask off the old //value
sakthipriya 0:7b4c00e3912f 1339 value &= 0x00FF;//Dis=0
sakthipriya 0:7b4c00e3912f 1340
sakthipriya 0:7b4c00e3912f 1341 value |= 0x9400;//corresponding to 2.5 V
sakthipriya 0:7b4c00e3912f 1342
sakthipriya 0:7b4c00e3912f 1343
sakthipriya 0:7b4c00e3912f 1344 //Write the 16-bit register
sakthipriya 0:7b4c00e3912f 1345 write(REG_VRESET_ID, value);
sakthipriya 0:7b4c00e3912f 1346 }
sakthipriya 0:7b4c00e3912f 1347
sakthipriya 0:7b4c00e3912f 1348
sakthipriya 0:7b4c00e3912f 1349 // Enable or disable the voltage reset alert on the MAX17049
sakthipriya 0:7b4c00e3912f 1350 void vResetAlertEnabled(bool enabled)
sakthipriya 0:7b4c00e3912f 1351 {
sakthipriya 0:7b4c00e3912f 1352 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1353 unsigned short value = read(REG_STATUS);
sakthipriya 0:7b4c00e3912f 1354
sakthipriya 0:7b4c00e3912f 1355 //Set or clear the EnVR bit
sakthipriya 0:7b4c00e3912f 1356 if (enabled)
sakthipriya 0:7b4c00e3912f 1357 value |= (1 << 14);
sakthipriya 0:7b4c00e3912f 1358 else
sakthipriya 0:7b4c00e3912f 1359 value &= ~(1 << 14);
sakthipriya 0:7b4c00e3912f 1360
sakthipriya 0:7b4c00e3912f 1361 //Write the value back out
sakthipriya 0:7b4c00e3912f 1362 write(REG_STATUS, value);
sakthipriya 0:7b4c00e3912f 1363 }
sakthipriya 0:7b4c00e3912f 1364
sakthipriya 0:7b4c00e3912f 1365 //Get the current alert flags on the MAX17049
sakthipriya 0:7b4c00e3912f 1366 //refer datasheet-status registers section to decode it.
sakthipriya 0:7b4c00e3912f 1367 char alertFlags()
sakthipriya 0:7b4c00e3912f 1368 {
sakthipriya 0:7b4c00e3912f 1369 //Read the 16-bit register value
sakthipriya 0:7b4c00e3912f 1370 unsigned short value = read(REG_STATUS);
sakthipriya 0:7b4c00e3912f 1371
sakthipriya 0:7b4c00e3912f 1372 //Return only the flag bits
sakthipriya 0:7b4c00e3912f 1373 return (value >> 8) & 0x3F;
sakthipriya 0:7b4c00e3912f 1374 }
sakthipriya 0:7b4c00e3912f 1375
sakthipriya 0:7b4c00e3912f 1376 // Clear all the alert flags on the MAX17049
sakthipriya 0:7b4c00e3912f 1377 void clearAlertFlags()
sakthipriya 0:7b4c00e3912f 1378 {
sakthipriya 0:7b4c00e3912f 1379 //Read the current 16-bit register value
sakthipriya 0:7b4c00e3912f 1380 unsigned short value = read(REG_STATUS);
sakthipriya 0:7b4c00e3912f 1381
sakthipriya 0:7b4c00e3912f 1382 //Clear the specified flag bits
sakthipriya 0:7b4c00e3912f 1383 value &= ~( 0x3F<< 8);
sakthipriya 0:7b4c00e3912f 1384
sakthipriya 0:7b4c00e3912f 1385 //Write the value back out
sakthipriya 0:7b4c00e3912f 1386 write(REG_STATUS, value);
sakthipriya 0:7b4c00e3912f 1387 }
sakthipriya 0:7b4c00e3912f 1388
sakthipriya 0:7b4c00e3912f 1389 // Get the current cell voltage measurement of the MAX17049
sakthipriya 0:7b4c00e3912f 1390 float vcell()
sakthipriya 0:7b4c00e3912f 1391 {
sakthipriya 1:446a959e36ce 1392
sakthipriya 0:7b4c00e3912f 1393 //Read the 16-bit raw Vcell value
sakthipriya 0:7b4c00e3912f 1394 unsigned short value = read(REG_VCELL);
sakthipriya 0:7b4c00e3912f 1395
sakthipriya 0:7b4c00e3912f 1396 //Return Vcell in volts
sakthipriya 0:7b4c00e3912f 1397 return value * 0.000078125*2;
sakthipriya 0:7b4c00e3912f 1398 }
sakthipriya 0:7b4c00e3912f 1399
sakthipriya 0:7b4c00e3912f 1400 // Get the current state of charge measurement of the MAX17049 as a float
sakthipriya 0:7b4c00e3912f 1401 float soc()
sakthipriya 0:7b4c00e3912f 1402 {
sakthipriya 3:07e15677a75c 1403
sakthipriya 3:07e15677a75c 1404 //Create a temporary buffer
sakthipriya 0:7b4c00e3912f 1405 char buff[2];
sakthipriya 3:07e15677a75c 1406 int ack = 1;
sakthipriya 3:07e15677a75c 1407 //Select the register
sakthipriya 3:07e15677a75c 1408 char reg = REG_SOC; // cannot pass the hash defined values directly
Bragadeesh153 52:daa685b0e390 1409 i2c.write(m_ADDR, &reg, 1, true);
sakthipriya 3:07e15677a75c 1410
sakthipriya 3:07e15677a75c 1411
sakthipriya 3:07e15677a75c 1412 //Read the 16-bit register
sakthipriya 3:07e15677a75c 1413
Bragadeesh153 52:daa685b0e390 1414 ack = i2c.read(m_ADDR, buff, 2);
sakthipriya 3:07e15677a75c 1415
lakshya 49:61c9f28332ba 1416 //// eps_pc.printf("\n\r acknow %d", ack);
sakthipriya 0:7b4c00e3912f 1417
sakthipriya 0:7b4c00e3912f 1418 //Return SOC in percent
sakthipriya 2:c823d84b4cb0 1419 if(ack == 0)
sakthipriya 3:07e15677a75c 1420 return ((buff[0] << 8) | buff[1]) * 0.00390625;
sakthipriya 2:c823d84b4cb0 1421 else
azaddevarm 75:d05b0005ca50 1422 return 200; //SOC not available
sakthipriya 0:7b4c00e3912f 1423 }
sakthipriya 0:7b4c00e3912f 1424
sakthipriya 0:7b4c00e3912f 1425
sakthipriya 0:7b4c00e3912f 1426
sakthipriya 0:7b4c00e3912f 1427 // Get the current C rate measurement of the MAX17049
sakthipriya 0:7b4c00e3912f 1428 float crate()
sakthipriya 0:7b4c00e3912f 1429 {
sakthipriya 0:7b4c00e3912f 1430 //Read the 16-bit raw C/Rate value
sakthipriya 0:7b4c00e3912f 1431 short value = read(REG_CRATE);
sakthipriya 0:7b4c00e3912f 1432
sakthipriya 0:7b4c00e3912f 1433 //Return C/Rate in %/hr
sakthipriya 0:7b4c00e3912f 1434 return value * 0.208;
sakthipriya 0:7b4c00e3912f 1435 }
sakthipriya 0:7b4c00e3912f 1436
sakthipriya 0:7b4c00e3912f 1437 // Determine whether or not the MAX17049 is asserting the ALRT pin
sakthipriya 0:7b4c00e3912f 1438 bool alerting()
sakthipriya 0:7b4c00e3912f 1439 {
sakthipriya 0:7b4c00e3912f 1440 //Read the 16-bit register value
sakthipriya 0:7b4c00e3912f 1441 unsigned short value = read(REG_CONFIG);
sakthipriya 0:7b4c00e3912f 1442
sakthipriya 0:7b4c00e3912f 1443 //Return the status of the ALRT bit
sakthipriya 0:7b4c00e3912f 1444 if (value & (1 << 5))
sakthipriya 0:7b4c00e3912f 1445 return true;
sakthipriya 0:7b4c00e3912f 1446 else
sakthipriya 0:7b4c00e3912f 1447 return false;
sakthipriya 2:c823d84b4cb0 1448 }
sakthipriya 2:c823d84b4cb0 1449
sakthipriya 2:c823d84b4cb0 1450 //.............................Battery board Temp sensor........................//
sakthipriya 2:c823d84b4cb0 1451 void FCTN_BATTTEMP_INIT()
sakthipriya 2:c823d84b4cb0 1452 {
sakthipriya 2:c823d84b4cb0 1453 ssn1=1;ssn2=1;
sakthipriya 2:c823d84b4cb0 1454 //PS=0;
sakthipriya 2:c823d84b4cb0 1455 //HS=0;
sakthipriya 2:c823d84b4cb0 1456 spi_bt.format(8,3);
sakthipriya 2:c823d84b4cb0 1457 spi_bt.frequency(1000000);
lakshya 33:76f2b8735501 1458 EPS_BTRY_TMP_STATUS = 1;
sakthipriya 2:c823d84b4cb0 1459 }
sakthipriya 2:c823d84b4cb0 1460
sakthipriya 2:c823d84b4cb0 1461 void FCTN_BATT_TEMP_SENSOR_MAIN(float temp[2])
sakthipriya 2:c823d84b4cb0 1462 {
sakthipriya 2:c823d84b4cb0 1463 uint8_t MSB, LSB;
sakthipriya 2:c823d84b4cb0 1464 int16_t bit_data;
sakthipriya 2:c823d84b4cb0 1465 float sensitivity=0.0078125; //1 LSB = sensitivity degree celcius
sakthipriya 2:c823d84b4cb0 1466 wait_ms(320);
lakshya 20:949d13045431 1467 //can we reduce it further ??? azad.......!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sakthipriya 2:c823d84b4cb0 1468 ssn1=0;
sakthipriya 2:c823d84b4cb0 1469
sakthipriya 2:c823d84b4cb0 1470 spi_bt.write(0x80);//Reading digital data from Sensor 1
sakthipriya 2:c823d84b4cb0 1471 LSB = spi_bt.write(0x00);//LSB first
lakshya 20:949d13045431 1472 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1473 MSB = spi_bt.write(0x00);
sakthipriya 2:c823d84b4cb0 1474 wait_ms(10);
lakshya 49:61c9f28332ba 1475 //// pc_eps.eps_pc.printf("%d %d\n",MSB,LSB);
sakthipriya 2:c823d84b4cb0 1476 bit_data= ((uint16_t)MSB<<8)|LSB;
sakthipriya 2:c823d84b4cb0 1477 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1478 temp[0]=(float)bit_data*sensitivity;//Converting into decimal value
sakthipriya 2:c823d84b4cb0 1479 ssn1=1;
sakthipriya 2:c823d84b4cb0 1480 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1481 ssn2=0;//Reading data from sensor 2
sakthipriya 2:c823d84b4cb0 1482 spi_bt.write(0x80);
sakthipriya 2:c823d84b4cb0 1483 LSB = spi_bt.write(0x00);
sakthipriya 2:c823d84b4cb0 1484 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1485 MSB = spi_bt.write(0x00);
sakthipriya 2:c823d84b4cb0 1486 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1487 bit_data= ((int16_t)MSB<<8)|LSB;
sakthipriya 2:c823d84b4cb0 1488 wait_ms(10);
sakthipriya 2:c823d84b4cb0 1489 temp[1]=(float)bit_data*sensitivity;
sakthipriya 2:c823d84b4cb0 1490 ssn2=1;
sakthipriya 2:c823d84b4cb0 1491
samp1234 99:2cc5c0c98cb3 1492 }
samp1234 99:2cc5c0c98cb3 1493 void Read_I_B_IN_BCN()
samp1234 99:2cc5c0c98cb3 1494 {
samp1234 99:2cc5c0c98cb3 1495 float test_current;
samp1234 99:2cc5c0c98cb3 1496 SelectLineb0=0;
samp1234 99:2cc5c0c98cb3 1497 SelectLineb1=0;
samp1234 99:2cc5c0c98cb3 1498 SelectLineb2=1;
samp1234 99:2cc5c0c98cb3 1499 SelectLineb3=0;
samp1234 99:2cc5c0c98cb3 1500 wait_ms(1);
samp1234 99:2cc5c0c98cb3 1501 test_current= (CurrentInput.read()*330)/(50*0.025);
samp1234 99:2cc5c0c98cb3 1502 actual_data.BAE_temp_actual = test_current;
samp1234 99:2cc5c0c98cb3 1503 eps_pc.printf("\n\r I_B = %f",3.3*CurrentInput.read()/(50*0.025));
samp1234 99:2cc5c0c98cb3 1504 }
samp1234 99:2cc5c0c98cb3 1505 void Read_I_D_IN_COMTX()
samp1234 99:2cc5c0c98cb3 1506 {
samp1234 99:2cc5c0c98cb3 1507 float test_Dcurrent;
samp1234 99:2cc5c0c98cb3 1508 SelectLineb0=1;
samp1234 99:2cc5c0c98cb3 1509 SelectLineb1=0;
samp1234 99:2cc5c0c98cb3 1510 SelectLineb2=0;
samp1234 99:2cc5c0c98cb3 1511 SelectLineb3=0;
samp1234 99:2cc5c0c98cb3 1512 wait_ms(1);
samp1234 99:2cc5c0c98cb3 1513 test_Dcurrent= (CurrentInput.read()*330)/(50*0.025);
samp1234 99:2cc5c0c98cb3 1514 // actual_data.BAE_temp_actual = test_current;
samp1234 99:2cc5c0c98cb3 1515 eps_pc.printf("\n\r I_D = %f",3.3*CurrentInput.read()/(50*0.025));
samp1234 99:2cc5c0c98cb3 1516 }
samp1234 99:2cc5c0c98cb3 1517
samp1234 99:2cc5c0c98cb3 1518 void Read_V_D_IN_COMTX()
samp1234 99:2cc5c0c98cb3 1519 {
samp1234 99:2cc5c0c98cb3 1520 float test_Dvoltage;
samp1234 99:2cc5c0c98cb3 1521 SelectLinea0=0;
samp1234 99:2cc5c0c98cb3 1522 SelectLinea1=1;
samp1234 99:2cc5c0c98cb3 1523 SelectLinea2=1;
samp1234 99:2cc5c0c98cb3 1524 SelectLinea3=0;
samp1234 99:2cc5c0c98cb3 1525 wait_ms(1);
samp1234 99:2cc5c0c98cb3 1526 test_Dvoltage= (VoltageInput.read()*3.3*62)/11;
samp1234 99:2cc5c0c98cb3 1527 // actual_data.BAE_temp_actual = test_current;
samp1234 99:2cc5c0c98cb3 1528 eps_pc.printf("\n\r V_D = %f",test_Dvoltage);
samp1234 99:2cc5c0c98cb3 1529 }