bae wrking isr no bcn

Dependencies:   mbed-rtos mbed

Fork of TV_BAE_conops1_1_1 by Team Fox

Committer:
sakthipriya
Date:
Tue Nov 03 14:46:51 2015 +0000
Revision:
0:913c9e982740
i2c in rtos working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:913c9e982740 1 #include "EPS.h"
sakthipriya 0:913c9e982740 2 #include "pin_config.h"
sakthipriya 0:913c9e982740 3 /***********************************************global variable declaration***************************************************************/
sakthipriya 0:913c9e982740 4 extern uint32_t BAE_STATUS;
sakthipriya 0:913c9e982740 5 extern uint32_t BAE_ENABLE;
sakthipriya 0:913c9e982740 6 extern char hk_data[25];
sakthipriya 0:913c9e982740 7 const char RCOMP0= 0x97;
sakthipriya 0:913c9e982740 8 SensorData Sensor;
sakthipriya 0:913c9e982740 9 SensorDataQuantised SensorQuantised;
sakthipriya 0:913c9e982740 10 ShortBeacy Shortbeacon;
sakthipriya 0:913c9e982740 11
sakthipriya 0:913c9e982740 12
sakthipriya 0:913c9e982740 13 /***********************************************Configuring Peripherals*******************************************************************/
sakthipriya 0:913c9e982740 14 Serial pc_eps(USBTX,USBRX);
sakthipriya 0:913c9e982740 15
sakthipriya 0:913c9e982740 16 I2C BG_I2C(D14,D15); //i2c btwn bae and battery gauge
sakthipriya 0:913c9e982740 17 DigitalOut SelectLinesA[] = {PIN43,PIN44,PIN45,PIN46}; //to mux1=>voltage mux , PTA 13-16 , CHNGE TO PIN43 LATER
sakthipriya 0:913c9e982740 18 DigitalOut SelectLinesB[] = {PIN56,PIN57,PIN58,PIN59}; //to mux2=>current mux(differential mux) , PTB 3,7,8,9
sakthipriya 0:913c9e982740 19 //MSB is SelectLines[0],LSB is SelectLines[3]
sakthipriya 0:913c9e982740 20 AnalogIn CurrentInput(PIN53); // output from Current Mux PTB0
sakthipriya 0:913c9e982740 21 AnalogIn VoltageInput(PIN54); // output from Voltage Multiplexer PTB1
sakthipriya 0:913c9e982740 22 AnalogIn Vbatt_ang(VBATT); //VBATT of battery gauge
sakthipriya 0:913c9e982740 23
sakthipriya 0:913c9e982740 24 SPI BTemp_spi(PTD6,PTD7,PTD5); //MOSI,MISO,SLK
sakthipriya 0:913c9e982740 25 DigitalOut BTemp_ssn1(PTD4); //Slave select1
sakthipriya 0:913c9e982740 26 DigitalOut BTemp_ssn2(PTD2);//Slave select2
sakthipriya 0:913c9e982740 27 DigitalOut BTemp_PS(PTB0);
sakthipriya 0:913c9e982740 28 DigitalOut BTemp_HS(PTB1);
sakthipriya 0:913c9e982740 29
sakthipriya 0:913c9e982740 30 DigitalOut TRXY(TRXY_DR_EN); //active high
sakthipriya 0:913c9e982740 31 DigitalOut TRZ(TRZ_DR_EN); //active high
sakthipriya 0:913c9e982740 32 DigitalOut EN3V3A(ENBL3V3A);
sakthipriya 0:913c9e982740 33 DigitalOut EN_BTRY_HT(BATT_HEAT);
sakthipriya 0:913c9e982740 34 //DigitalIn BTRY_HT_OUTPUT(BATT_HEAT_OUTPUT);
sakthipriya 0:913c9e982740 35
sakthipriya 0:913c9e982740 36 //*********************************************************flags********************************************************//
sakthipriya 0:913c9e982740 37 extern char EPS_INIT_STATUS ;
sakthipriya 0:913c9e982740 38 extern char EPS_BATTERY_GAUGE_STATUS ;
sakthipriya 0:913c9e982740 39 extern char EPS_MAIN_STATUS;
sakthipriya 0:913c9e982740 40 extern char EPS_BATTERY_TEMP_STATUS ;
sakthipriya 0:913c9e982740 41 extern char EPS_STATUS ;
sakthipriya 0:913c9e982740 42
sakthipriya 0:913c9e982740 43 extern char EPS_BATTERY_HEAT_ENABLE ;
sakthipriya 0:913c9e982740 44
sakthipriya 0:913c9e982740 45 //----------------------------------------------------EPS INIT---------------------------------------------------------------------------//
sakthipriya 0:913c9e982740 46 void FCTN_EPS_INIT()
sakthipriya 0:913c9e982740 47 {
sakthipriya 0:913c9e982740 48 printf("\n\r eps init \n");
sakthipriya 0:913c9e982740 49 EPS_INIT_STATUS = 's' ; //set EPS_INIT_STATUS flag
sakthipriya 0:913c9e982740 50 FLAG();
sakthipriya 0:913c9e982740 51 FCTN_EPS_BG_INIT();
sakthipriya 0:913c9e982740 52 FCTN_EPS_BTEMP_INIT();
sakthipriya 0:913c9e982740 53 EN3V3A = 1; //enable dc dc converter A
sakthipriya 0:913c9e982740 54 char value=BG_alertFlags();
sakthipriya 0:913c9e982740 55 unsigned short value_u= (short int )value;
sakthipriya 0:913c9e982740 56 value_u &=0x0001;
sakthipriya 0:913c9e982740 57 if(value_u ==0x0001) // battery gauge not initialised
sakthipriya 0:913c9e982740 58 {
sakthipriya 0:913c9e982740 59 Sensor.power_mode = 1;
sakthipriya 0:913c9e982740 60 Sensor.SOC = 80; //dummy
sakthipriya 0:913c9e982740 61 FCTN_EPS_POWERMODE(Sensor.SOC);
sakthipriya 0:913c9e982740 62 EPS_BATTERY_GAUGE_STATUS = 'c'; //clear EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:913c9e982740 63 }
sakthipriya 0:913c9e982740 64 else
sakthipriya 0:913c9e982740 65 {
sakthipriya 0:913c9e982740 66 Sensor.SOC = BG_soc();
sakthipriya 0:913c9e982740 67 Sensor.SOC = 80; //dummy
sakthipriya 0:913c9e982740 68 Sensor.Vbatt = Vbatt_ang.read()*3.3;
sakthipriya 0:913c9e982740 69 FCTN_EPS_POWERMODE(Sensor.SOC);
sakthipriya 0:913c9e982740 70 EPS_BATTERY_GAUGE_STATUS = 's'; //set EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:913c9e982740 71 }
sakthipriya 0:913c9e982740 72
sakthipriya 0:913c9e982740 73 EPS_INIT_STATUS = 'c' ; //clear EPS_INIT_STATUS flag
sakthipriya 0:913c9e982740 74
sakthipriya 0:913c9e982740 75 }
sakthipriya 0:913c9e982740 76
sakthipriya 0:913c9e982740 77 //---------------------------------------------battery Temp sensor code------------------------------------------------------------------//
sakthipriya 0:913c9e982740 78 void FCTN_EPS_BTEMP_INIT()
sakthipriya 0:913c9e982740 79 {
sakthipriya 0:913c9e982740 80 BTemp_ssn1=1;BTemp_ssn2=1;
sakthipriya 0:913c9e982740 81 BTemp_PS=0; //power switch control enable
sakthipriya 0:913c9e982740 82 BTemp_HS=0; //heater switch
sakthipriya 0:913c9e982740 83 BTemp_spi.format(8,3);
sakthipriya 0:913c9e982740 84 BTemp_spi.frequency(1000000);
sakthipriya 0:913c9e982740 85 }
sakthipriya 0:913c9e982740 86
sakthipriya 0:913c9e982740 87 //----------------------------------------------------Battery Gauge code-----------------------------------------------------------------//
sakthipriya 0:913c9e982740 88
sakthipriya 0:913c9e982740 89 void FCTN_EPS_BG_INIT()
sakthipriya 0:913c9e982740 90 {
sakthipriya 0:913c9e982740 91 BG_disableSleep();
sakthipriya 0:913c9e982740 92 BG_disableHibernate();
sakthipriya 0:913c9e982740 93 BG_socChangeAlertEnabled(true); //enabling alert on soc changing by 1%
sakthipriya 0:913c9e982740 94 BG_emptyAlertThreshold(32);//setting empty alert threshold to 32% soc
sakthipriya 0:913c9e982740 95 BG_vAlertMinMaxThreshold();//set min, max value of Valrt register
sakthipriya 0:913c9e982740 96 BG_vResetThresholdSet();//set threshold voltage for reset
sakthipriya 0:913c9e982740 97 BG_vResetAlertEnabled(true);//enable alert on reset for V < Vreset
sakthipriya 0:913c9e982740 98 }
sakthipriya 0:913c9e982740 99
sakthipriya 0:913c9e982740 100 unsigned short BG_readReg(char reg)
sakthipriya 0:913c9e982740 101 {
sakthipriya 0:913c9e982740 102 //Create a temporary buffer
sakthipriya 0:913c9e982740 103 char buff[2] = {0,0};
sakthipriya 0:913c9e982740 104
sakthipriya 0:913c9e982740 105 //Select the register
sakthipriya 0:913c9e982740 106 BG_I2C.write(BG_ADDR, &reg, 1, true);
sakthipriya 0:913c9e982740 107
sakthipriya 0:913c9e982740 108 //Read the 16-bit register
sakthipriya 0:913c9e982740 109 BG_I2C.read(BG_ADDR, buff, 2);
sakthipriya 0:913c9e982740 110
sakthipriya 0:913c9e982740 111 //Return the combined 16-bit value
sakthipriya 0:913c9e982740 112 return (buff[0] << 8) | buff[1];
sakthipriya 0:913c9e982740 113 }
sakthipriya 0:913c9e982740 114
sakthipriya 0:913c9e982740 115 void BG_writeReg(char reg, unsigned short data)
sakthipriya 0:913c9e982740 116 {
sakthipriya 0:913c9e982740 117 //Create a temporary buffer
sakthipriya 0:913c9e982740 118 char buff[3];
sakthipriya 0:913c9e982740 119
sakthipriya 0:913c9e982740 120 //Load the register address and 16-bit data
sakthipriya 0:913c9e982740 121 buff[0] = reg;
sakthipriya 0:913c9e982740 122 buff[1] = data >> 8;
sakthipriya 0:913c9e982740 123 buff[2] = data;
sakthipriya 0:913c9e982740 124
sakthipriya 0:913c9e982740 125 //Write the data
sakthipriya 0:913c9e982740 126 BG_I2C.write(BG_ADDR, buff, 3);
sakthipriya 0:913c9e982740 127 }
sakthipriya 0:913c9e982740 128
sakthipriya 0:913c9e982740 129
sakthipriya 0:913c9e982740 130
sakthipriya 0:913c9e982740 131 // Command the MAX17049 to perform a power-on reset
sakthipriya 0:913c9e982740 132 void BG_reset()
sakthipriya 0:913c9e982740 133 {
sakthipriya 0:913c9e982740 134 //Write the POR command
sakthipriya 0:913c9e982740 135 BG_writeReg(REG_CMD, 0x5400);
sakthipriya 0:913c9e982740 136 }
sakthipriya 0:913c9e982740 137
sakthipriya 0:913c9e982740 138 // Command the MAX17049 to perform a QuickStart
sakthipriya 0:913c9e982740 139 void BG_quickStart()
sakthipriya 0:913c9e982740 140 {
sakthipriya 0:913c9e982740 141 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 142 unsigned short value = BG_readReg(REG_MODE);
sakthipriya 0:913c9e982740 143
sakthipriya 0:913c9e982740 144 //Set the QuickStart bit
sakthipriya 0:913c9e982740 145 value |= (1 << 14);
sakthipriya 0:913c9e982740 146
sakthipriya 0:913c9e982740 147 //Write the value back out
sakthipriya 0:913c9e982740 148 BG_writeReg(REG_MODE, value);
sakthipriya 0:913c9e982740 149 }
sakthipriya 0:913c9e982740 150
sakthipriya 0:913c9e982740 151
sakthipriya 0:913c9e982740 152 //disable sleep
sakthipriya 0:913c9e982740 153 void BG_disableSleep()
sakthipriya 0:913c9e982740 154 {
sakthipriya 0:913c9e982740 155 unsigned short value = BG_readReg(REG_MODE);
sakthipriya 0:913c9e982740 156 value &= ~(1 << 13);
sakthipriya 0:913c9e982740 157 BG_writeReg(REG_MODE, value);
sakthipriya 0:913c9e982740 158 }
sakthipriya 0:913c9e982740 159
sakthipriya 0:913c9e982740 160 //disable the hibernate of the MAX17049
sakthipriya 0:913c9e982740 161 void BG_disableHibernate()
sakthipriya 0:913c9e982740 162 {
sakthipriya 0:913c9e982740 163 BG_writeReg(REG_HIBRT, 0x0000);
sakthipriya 0:913c9e982740 164 }
sakthipriya 0:913c9e982740 165
sakthipriya 0:913c9e982740 166
sakthipriya 0:913c9e982740 167 // Enable or disable the SOC 1% change alert on the MAX17049
sakthipriya 0:913c9e982740 168 void BG_socChangeAlertEnabled(bool enabled)
sakthipriya 0:913c9e982740 169 {
sakthipriya 0:913c9e982740 170 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 171 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 172
sakthipriya 0:913c9e982740 173 //Set or clear the ALSC bit
sakthipriya 0:913c9e982740 174 if (enabled)
sakthipriya 0:913c9e982740 175 value |= (1 << 6);
sakthipriya 0:913c9e982740 176 else
sakthipriya 0:913c9e982740 177 value &= ~(1 << 6);
sakthipriya 0:913c9e982740 178
sakthipriya 0:913c9e982740 179 //Write the value back out
sakthipriya 0:913c9e982740 180 BG_writeReg(REG_CONFIG, value);
sakthipriya 0:913c9e982740 181 }
sakthipriya 0:913c9e982740 182
sakthipriya 0:913c9e982740 183 float BG_compensation()
sakthipriya 0:913c9e982740 184 {
sakthipriya 0:913c9e982740 185 //Read the 16-bit register value
sakthipriya 0:913c9e982740 186 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 187
sakthipriya 0:913c9e982740 188 //Return only the upper byte
sakthipriya 0:913c9e982740 189 return (char)(value >> 8);
sakthipriya 0:913c9e982740 190 }
sakthipriya 0:913c9e982740 191
sakthipriya 0:913c9e982740 192 void BG_compensation(char rcomp)
sakthipriya 0:913c9e982740 193 {
sakthipriya 0:913c9e982740 194 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 195 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 196
sakthipriya 0:913c9e982740 197 //Update the register value
sakthipriya 0:913c9e982740 198 value &= 0x00FF;
sakthipriya 0:913c9e982740 199 value |= rcomp << 8;
sakthipriya 0:913c9e982740 200
sakthipriya 0:913c9e982740 201 //Write the value back out
sakthipriya 0:913c9e982740 202 BG_writeReg(REG_CONFIG, value);
sakthipriya 0:913c9e982740 203 }
sakthipriya 0:913c9e982740 204
sakthipriya 0:913c9e982740 205
sakthipriya 0:913c9e982740 206 void BG_tempCompensation(float temp)
sakthipriya 0:913c9e982740 207 {
sakthipriya 0:913c9e982740 208 //Calculate the new RCOMP value
sakthipriya 0:913c9e982740 209 char rcomp;
sakthipriya 0:913c9e982740 210 if (temp > 20.0) {
sakthipriya 0:913c9e982740 211 rcomp = RCOMP0 + (temp - 20.0) * -0.5;
sakthipriya 0:913c9e982740 212 } else {
sakthipriya 0:913c9e982740 213 rcomp = RCOMP0 + (temp - 20.0) * -5.0;
sakthipriya 0:913c9e982740 214 }
sakthipriya 0:913c9e982740 215
sakthipriya 0:913c9e982740 216 //Update the RCOMP value
sakthipriya 0:913c9e982740 217 BG_compensation(rcomp);
sakthipriya 0:913c9e982740 218 }
sakthipriya 0:913c9e982740 219
sakthipriya 0:913c9e982740 220 // Determine whether or not the MAX17049 is asserting the ALRT pin
sakthipriya 0:913c9e982740 221 bool BG_alerting()
sakthipriya 0:913c9e982740 222 {
sakthipriya 0:913c9e982740 223 //Read the 16-bit register value
sakthipriya 0:913c9e982740 224 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 225
sakthipriya 0:913c9e982740 226 //Return the status of the ALRT bit
sakthipriya 0:913c9e982740 227 if (value & (1 << 5))
sakthipriya 0:913c9e982740 228 return true;
sakthipriya 0:913c9e982740 229 else
sakthipriya 0:913c9e982740 230 return false;
sakthipriya 0:913c9e982740 231 }
sakthipriya 0:913c9e982740 232
sakthipriya 0:913c9e982740 233 // Command the MAX17049 to de-assert the ALRT pin
sakthipriya 0:913c9e982740 234 void BG_clearAlert()
sakthipriya 0:913c9e982740 235 {
sakthipriya 0:913c9e982740 236 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 237 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 238
sakthipriya 0:913c9e982740 239 //Clear the ALRT bit
sakthipriya 0:913c9e982740 240 value &= ~(1 << 5);
sakthipriya 0:913c9e982740 241
sakthipriya 0:913c9e982740 242 //Write the value back out
sakthipriya 0:913c9e982740 243 BG_writeReg(REG_CONFIG, value);
sakthipriya 0:913c9e982740 244 }
sakthipriya 0:913c9e982740 245
sakthipriya 0:913c9e982740 246
sakthipriya 0:913c9e982740 247 //Set the SOC empty alert threshold of the MAX17049
sakthipriya 0:913c9e982740 248 void BG_emptyAlertThreshold(char threshold)
sakthipriya 0:913c9e982740 249 {
sakthipriya 0:913c9e982740 250 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 251 unsigned short value = BG_readReg(REG_CONFIG);
sakthipriya 0:913c9e982740 252
sakthipriya 0:913c9e982740 253 //Update the register value
sakthipriya 0:913c9e982740 254 value &= 0xFFE0;
sakthipriya 0:913c9e982740 255 value |= 32 - threshold;
sakthipriya 0:913c9e982740 256
sakthipriya 0:913c9e982740 257 //Write the 16-bit register
sakthipriya 0:913c9e982740 258 BG_writeReg(REG_CONFIG, value);
sakthipriya 0:913c9e982740 259 }
sakthipriya 0:913c9e982740 260
sakthipriya 0:913c9e982740 261 // Set the low and high voltage alert threshold of the MAX17049
sakthipriya 0:913c9e982740 262 void BG_vAlertMinMaxThreshold()
sakthipriya 0:913c9e982740 263 {
sakthipriya 0:913c9e982740 264 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 265 unsigned short value = BG_readReg(REG_VALRT);
sakthipriya 0:913c9e982740 266
sakthipriya 0:913c9e982740 267 //Mask off the old value
sakthipriya 0:913c9e982740 268 value = 0x96D2; // threshold is betweeen 6 and 8.4 v
sakthipriya 0:913c9e982740 269
sakthipriya 0:913c9e982740 270 //Write the 16-bit register
sakthipriya 0:913c9e982740 271 BG_writeReg(REG_VALRT, value);
sakthipriya 0:913c9e982740 272 }
sakthipriya 0:913c9e982740 273
sakthipriya 0:913c9e982740 274
sakthipriya 0:913c9e982740 275 // Set the reset voltage threshold of the MAX17049
sakthipriya 0:913c9e982740 276 void BG_vResetThresholdSet()
sakthipriya 0:913c9e982740 277 {
sakthipriya 0:913c9e982740 278 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 279 unsigned short value = BG_readReg(REG_VRESET_ID);
sakthipriya 0:913c9e982740 280
sakthipriya 0:913c9e982740 281 //Mask off the old //value
sakthipriya 0:913c9e982740 282 value &= 0x00FF;//Dis=0
sakthipriya 0:913c9e982740 283
sakthipriya 0:913c9e982740 284 value |= 0x7C00;//corresponding to 2.5 V
sakthipriya 0:913c9e982740 285
sakthipriya 0:913c9e982740 286
sakthipriya 0:913c9e982740 287 //write the 16-bit register
sakthipriya 0:913c9e982740 288 BG_writeReg(REG_VRESET_ID, value);
sakthipriya 0:913c9e982740 289 }
sakthipriya 0:913c9e982740 290
sakthipriya 0:913c9e982740 291
sakthipriya 0:913c9e982740 292 // Enable or disable the voltage reset alert on the MAX17049
sakthipriya 0:913c9e982740 293 void BG_vResetAlertEnabled(bool enabled)
sakthipriya 0:913c9e982740 294 {
sakthipriya 0:913c9e982740 295 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 296 unsigned short value = BG_readReg(REG_STATUS);
sakthipriya 0:913c9e982740 297
sakthipriya 0:913c9e982740 298 //Set or clear the EnVR bit
sakthipriya 0:913c9e982740 299 if (enabled)
sakthipriya 0:913c9e982740 300 value |= (1 << 14);
sakthipriya 0:913c9e982740 301 else
sakthipriya 0:913c9e982740 302 value &= ~(1 << 14);
sakthipriya 0:913c9e982740 303
sakthipriya 0:913c9e982740 304 //Write the value back out
sakthipriya 0:913c9e982740 305 BG_writeReg(REG_STATUS, value);
sakthipriya 0:913c9e982740 306 }
sakthipriya 0:913c9e982740 307
sakthipriya 0:913c9e982740 308 //Get the current alert flags on the MAX17049
sakthipriya 0:913c9e982740 309 //refer datasheet-status registers section to decode it.
sakthipriya 0:913c9e982740 310 char BG_alertFlags()
sakthipriya 0:913c9e982740 311 {
sakthipriya 0:913c9e982740 312 //Read the 16-bit register value
sakthipriya 0:913c9e982740 313 unsigned short value = BG_readReg(REG_STATUS);
sakthipriya 0:913c9e982740 314
sakthipriya 0:913c9e982740 315 //Return only the flag bits
sakthipriya 0:913c9e982740 316 return (value >> 8) & 0x3F;
sakthipriya 0:913c9e982740 317 }
sakthipriya 0:913c9e982740 318
sakthipriya 0:913c9e982740 319 // Clear all the alert flags on the MAX17049
sakthipriya 0:913c9e982740 320 void BG_clearAlertFlags()
sakthipriya 0:913c9e982740 321 {
sakthipriya 0:913c9e982740 322 //Read the current 16-bit register value
sakthipriya 0:913c9e982740 323 unsigned short value = BG_readReg(REG_STATUS);
sakthipriya 0:913c9e982740 324
sakthipriya 0:913c9e982740 325 //Clear the specified flag bits
sakthipriya 0:913c9e982740 326 value &= ~( 0x3F<< 8);
sakthipriya 0:913c9e982740 327
sakthipriya 0:913c9e982740 328 //Write the value back out
sakthipriya 0:913c9e982740 329 BG_writeReg(REG_STATUS, value);
sakthipriya 0:913c9e982740 330 }
sakthipriya 0:913c9e982740 331
sakthipriya 0:913c9e982740 332 // Get the current cell voltage measurement of the MAX17049
sakthipriya 0:913c9e982740 333 float BG_vcell()
sakthipriya 0:913c9e982740 334 {
sakthipriya 0:913c9e982740 335 //Read the 16-bit raw Vcell value
sakthipriya 0:913c9e982740 336 unsigned short value = BG_readReg(REG_VCELL);
sakthipriya 0:913c9e982740 337
sakthipriya 0:913c9e982740 338 //Return Vcell in volts
sakthipriya 0:913c9e982740 339 return value * 0.000078125*2;
sakthipriya 0:913c9e982740 340 }
sakthipriya 0:913c9e982740 341
sakthipriya 0:913c9e982740 342 // Get the current state of charge measurement of the MAX17049 as a float
sakthipriya 0:913c9e982740 343 float BG_soc()
sakthipriya 0:913c9e982740 344 {
sakthipriya 0:913c9e982740 345 //Read the 16-bit raw SOC value
sakthipriya 0:913c9e982740 346 unsigned short value = BG_readReg(REG_SOC);
sakthipriya 0:913c9e982740 347
sakthipriya 0:913c9e982740 348 //Return SOC in percent
sakthipriya 0:913c9e982740 349 return value * 0.00390625;
sakthipriya 0:913c9e982740 350 }
sakthipriya 0:913c9e982740 351
sakthipriya 0:913c9e982740 352
sakthipriya 0:913c9e982740 353
sakthipriya 0:913c9e982740 354 // Get the current C rate measurement of the MAX17049
sakthipriya 0:913c9e982740 355 float BG_crate()
sakthipriya 0:913c9e982740 356 {
sakthipriya 0:913c9e982740 357 //Read the 16-bit raw C/Rate value
sakthipriya 0:913c9e982740 358 short value = BG_readReg(REG_CRATE);
sakthipriya 0:913c9e982740 359
sakthipriya 0:913c9e982740 360 //Return C/Rate in %/hr
sakthipriya 0:913c9e982740 361 return value * 0.208;
sakthipriya 0:913c9e982740 362 }
sakthipriya 0:913c9e982740 363
sakthipriya 0:913c9e982740 364
sakthipriya 0:913c9e982740 365 //----------------------------------------------------Power algo code--------------------------------------------------------------------//
sakthipriya 0:913c9e982740 366 void FCTN_EPS_POWERMODE(float soc) //dummy algo
sakthipriya 0:913c9e982740 367 {
sakthipriya 0:913c9e982740 368 if(soc >= 80)
sakthipriya 0:913c9e982740 369 Sensor.power_mode = 4;
sakthipriya 0:913c9e982740 370 else if(soc >= 70 & soc < 80)
sakthipriya 0:913c9e982740 371 Sensor.power_mode = 3;
sakthipriya 0:913c9e982740 372 else if(soc >= 60 & soc < 70)
sakthipriya 0:913c9e982740 373 Sensor.power_mode = 2;
sakthipriya 0:913c9e982740 374 else if(soc < 60)
sakthipriya 0:913c9e982740 375 Sensor.power_mode = 1;
sakthipriya 0:913c9e982740 376 }