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