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 BAE_CODE_MARCH_2017 by
Diff: EPS.cpp
- Revision:
- 33:76f2b8735501
- Parent:
- 27:61c856be467e
- Child:
- 39:670133e7ffd8
diff -r 61c856be467e -r 76f2b8735501 EPS.cpp
--- a/EPS.cpp Sat Jul 02 14:06:34 2016 +0000
+++ b/EPS.cpp Mon Jul 04 04:29:59 2016 +0000
@@ -47,6 +47,7 @@
extern uint8_t BCN_INIT_STATUS;
extern uint8_t BCN_FAIL_COUNT;
extern uint16_t BCN_TX_MAIN_COUNTER;
+extern uint8_t BCN_TX_MAIN_STATUS;
//bae
extern uint8_t BAE_RESET_COUNTER;
@@ -57,6 +58,8 @@
//eps
extern uint8_t ACS_INIT_STATUS;
extern uint16_t EPS_MAIN_COUNTER;
+extern uint8_t EPS_BTRY_TMP_STATUS;
+
//main
extern uint8_t HTR_CYCLE_COUNTER;
@@ -69,7 +72,8 @@
/***********************************************global variable declaration***************************************************************/
extern uint32_t BAE_STATUS;
extern uint32_t BAE_ENABLE;
-extern uint8_t BAE_HK_data[134];
+extern uint8_t LONG_HK_data[2][134];
+//extern uint8_t BAE_HK_data[134];
//extern char BAE_chardata[74];
//implement them assign them default values
@@ -102,7 +106,7 @@
DigitalOut TRXY(TRXY_DR_EN); //active high
DigitalOut TRZ(TRZ_DR_EN); //active high
DigitalOut EN3V3A(ENBL3V3A);
-DigitalOut EN_BTRY_HT(BATT_HEAT);
+DigitalOut BTRY_HTR_ENABLE(BATT_HEAT);// earlier BTRY_HTR_ENABLE
//DigitalIn BTRY_HT_OUTPUT(BATT_HEAT_OUTPUT);
//AnalogIn Vbatt_ang(VBATT);
AnalogIn Batt_voltage(PIN20); //Battery voltage
@@ -132,16 +136,17 @@
extern uint8_t EPS_INIT_STATUS ;
extern uint8_t EPS_BATTERY_GAUGE_STATUS ;
extern uint8_t EPS_MAIN_STATUS;
-extern uint8_t EPS_BATTERY_TEMP_STATUS ;
+extern uint8_t EPS_BTRY_TMP_STATUS ;
extern uint8_t EPS_STATUS ;
-extern uint8_t EPS_BTRY_HTR_AUTO ;
+extern uint8_t EPS_BTRY_HTR ;
//eps cdms fault
extern uint8_t CDMS_SW_STATUS;
extern DigitalOut CDMS_OC_FAULT;
extern bool CDMS_SW_ENABLE;
extern int CDMS_FAULT_COUNTER;
+extern uint8_t EPS_BTRY_HTR_AUTO;
//eps hw faults
@@ -188,11 +193,12 @@
EN3V3A = 1; //enable dc dc converter A
char value=alertFlags(); // initialization part of battery gauge
unsigned short value_u= (short int )value;
- value_u &=0x0001;
- if(value_u ==0x0001) // battery gauge not initialised
+ //value_u &=0x0001;
+ if(value_u & 0x0001 == 0x0001) // battery gauge not initialised
{
actual_data.power_mode = 1;
EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
+ printf(" init BTG fail - %d\n\r", value_u);
}
else
{
@@ -200,7 +206,11 @@
actual_data.Batt_voltage_actual = Batt_voltage.read()*3.3; //1 corresponds to 3.3 scaling factor
FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]);
EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
+ printf("init BTG success - %d\n\r", value_u);
}
+
+ //if( read(REG_VERSION) ==
+ printf("REG_VERSION = %d\r\n",read(REG_VERSION));
FCTN_BATTTEMP_INIT();
EPS_BATTERY_GAUGE_STATUS = 1;
@@ -515,169 +525,169 @@
void FCTN_APPEND_HKDATA()
{
- BAE_HK_data[0] = 0x28;
- BAE_HK_data[1] = 0x00;
- BAE_HK_data[2] = 0x00;
- BAE_HK_data[3] = 0x00;
- BAE_HK_data[4] = ACS_ATS_STATUS;
- BAE_HK_data[5] = ACS_TR_XY_SW_STATUS;
- BAE_HK_data[5] = (BAE_HK_data[5]<<2)| ACS_TR_Z_SW_STATUS;
- BAE_HK_data[5] = (BAE_HK_data[5]<<4) | ACS_STATE;
+ LONG_HK_data[1][0] = 0x28;
+ LONG_HK_data[1][1] = 0x00;
+ LONG_HK_data[1][2] = 0x00;
+ LONG_HK_data[1][3] = 0x00;
+ LONG_HK_data[1][4] = ACS_ATS_STATUS;
+ LONG_HK_data[1][5] = ACS_TR_XY_SW_STATUS;
+ LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<2)| ACS_TR_Z_SW_STATUS;
+ LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<4) | ACS_STATE;
- BAE_HK_data[6] = ACS_DETUMBLING_ALGO_TYPE;
- BAE_HK_data[6] = (BAE_HK_data[6]<<2) | BCN_TX_SW_STATUS;
- BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_SPND_TX;
- BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_FEN;
- BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_LONG_MSG_TYPE;
- BAE_HK_data[6] = (BAE_HK_data[6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
- BAE_HK_data[6] = (BAE_HK_data[6]<<1);
+ LONG_HK_data[1][6] = ACS_DETUMBLING_ALGO_TYPE;
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<2) | BCN_TX_SW_STATUS;
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_SPND_TX;
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_FEN;
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_LONG_MSG_TYPE;
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
+ LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1);
//now one spares in BAE_HK_data[5]
- BAE_HK_data[7] = BAE_RESET_COUNTER;
- BAE_HK_data[8] = EPS_SOC_LEVEL_12;
- BAE_HK_data[9] = EPS_SOC_LEVEL_23;
- BAE_HK_data[10] = ACS_MAG_TIME_DELAY;
- BAE_HK_data[11] = ACS_DEMAG_TIME_DELAY;
- BAE_HK_data[12] = EPS_BAT_TEMP_LOW;
- BAE_HK_data[13] = EPS_BAT_TEMP_HIGH;
- BAE_HK_data[14] = EPS_BAT_TEMP_DEFAULT;
- BAE_HK_data[15] = ACS_MM_X_COMSN >> 8;
- BAE_HK_data[16] = ACS_MM_X_COMSN;
+ LONG_HK_data[1][7] = BAE_RESET_COUNTER;
+ LONG_HK_data[1][8] = EPS_SOC_LEVEL_12;
+ LONG_HK_data[1][9] = EPS_SOC_LEVEL_23;
+ LONG_HK_data[1][10] = ACS_MAG_TIME_DELAY;
+ LONG_HK_data[1][11] = ACS_DEMAG_TIME_DELAY;
+ LONG_HK_data[1][12] = EPS_BAT_TEMP_LOW;
+ LONG_HK_data[1][13] = EPS_BAT_TEMP_HIGH;
+ LONG_HK_data[1][14] = EPS_BAT_TEMP_DEFAULT;
+ LONG_HK_data[1][15] = ACS_MM_X_COMSN >> 8;
+ LONG_HK_data[1][16] = ACS_MM_X_COMSN;
- BAE_HK_data[17] = ACS_MM_Y_COMSN >> 8;
- BAE_HK_data[18] = ACS_MM_Y_COMSN;
+ LONG_HK_data[1][17] = ACS_MM_Y_COMSN >> 8;
+ LONG_HK_data[1][18] = ACS_MM_Y_COMSN;
- BAE_HK_data[19] = ACS_MG_X_COMSN >> 8;
- BAE_HK_data[20] = ACS_MG_X_COMSN;
+ LONG_HK_data[1][19] = ACS_MG_X_COMSN >> 8;
+ LONG_HK_data[1][20] = ACS_MG_X_COMSN;
- BAE_HK_data[21] = ACS_MG_Y_COMSN >> 8;
- BAE_HK_data[22] = ACS_MG_Y_COMSN;
+ LONG_HK_data[1][21] = ACS_MG_Y_COMSN >> 8;
+ LONG_HK_data[1][22] = ACS_MG_Y_COMSN;
- BAE_HK_data[23] = ACS_MM_Z_COMSN >> 8;
- BAE_HK_data[24] = ACS_MM_Z_COMSN;
+ LONG_HK_data[1][23] = ACS_MM_Z_COMSN >> 8;
+ LONG_HK_data[1][24] = ACS_MM_Z_COMSN;
- BAE_HK_data[25] = ACS_MG_Z_COMSN >> 8;
- BAE_HK_data[26] = ACS_MG_Z_COMSN;
+ LONG_HK_data[1][25] = ACS_MG_Z_COMSN >> 8;
+ LONG_HK_data[1][26] = ACS_MG_Z_COMSN;
- BAE_HK_data[27] = ACS_Z_FIXED_MOMENT >> 8;
- BAE_HK_data[28] = ACS_Z_FIXED_MOMENT;
+ LONG_HK_data[1][27] = ACS_Z_FIXED_MOMENT >> 8;
+ LONG_HK_data[1][28] = ACS_Z_FIXED_MOMENT;
//BAE RAM PARAMETER
- BAE_HK_data[29] = BAE_INIT_STATUS;
- BAE_HK_data[29] = (BAE_HK_data[29]<<1) | 0;//change it================================
- BAE_HK_data[29] = (BAE_HK_data[29]<<1) | BCN_INIT_STATUS;
- BAE_HK_data[29] = (BAE_HK_data[29]<<1) | BCN_TX_MAIN_STATUS;
- BAE_HK_data[29] = (BAE_HK_data[29]<<3) | BCN_TX_STATUS;
- BAE_HK_data[29] = (BAE_HK_data[29]<<3) | ACS_INIT_STATUS;
+ LONG_HK_data[1][29] = BAE_INIT_STATUS;
+ LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | 0;//change it================================
+ LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_INIT_STATUS;
+ LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_TX_MAIN_STATUS;
+ LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<3) | BCN_TX_STATUS;
+ LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<3) | ACS_INIT_STATUS;
- BAE_HK_data[30] = ACS_DATA_ACQ_STATUS;
- BAE_HK_data[30] = (BAE_HK_data[30]<<1) | ACS_MAIN_STATUS;
- BAE_HK_data[30] = (BAE_HK_data[30]<<4) | ACS_STATUS;
- BAE_HK_data[30] = (BAE_HK_data[30]<<1) | EPS_INIT_STATUS;
+ LONG_HK_data[1][30] = ACS_DATA_ACQ_STATUS;
+ LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | ACS_MAIN_STATUS;
+ LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<4) | ACS_STATUS;
+ LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | EPS_INIT_STATUS;
- BAE_HK_data[31] = EPS_BATTERY_GAUGE_STATUS;
- BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_MAIN_STATUS;
- BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_BATTERY_TEMP_STATUS;
- BAE_HK_data[31] = (BAE_HK_data[31]<<3) | EPS_STATUS;
- BAE_HK_data[31] = (BAE_HK_data[31]<<2) | CDMS_SW_STATUS;
+ LONG_HK_data[1][31] = EPS_BATTERY_GAUGE_STATUS;
+ LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_MAIN_STATUS;
+ LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_BTRY_TMP_STATUS;;
+ LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<3) | EPS_STATUS;
+ LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<2) | CDMS_SW_STATUS;
////BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_BTRY_HTR_STATUS;//new to : implement===========
- //BAE_HK_data[32] = EPS_BTRY_HTR_STATUS;
+ LONG_HK_data[1][32] = EPS_BTRY_HTR;// to be disscussed
//spare 4
- BAE_HK_data[32] = (BAE_HK_data[32]<<7) | BAE_STANDBY;
+ LONG_HK_data[1][32] = (LONG_HK_data[1][32]<<7) | BAE_STANDBY;
// 6 next telemetries value to be given by registers
- BAE_HK_data[33] = ATS1_EVENT_STATUS_RGTR;
- BAE_HK_data[34] = ATS1_SENTRAL_STATUS_RGTR;
- BAE_HK_data[35] = ATS1_ERROR_RGTR;
- BAE_HK_data[36] = ATS2_EVENT_STATUS_RGTR;
- BAE_HK_data[37] = ATS2_SENTRAL_STATUS_RGTR;
- BAE_HK_data[38] = ATS2_ERROR_RGTR;
+ LONG_HK_data[1][33] = ATS1_EVENT_STATUS_RGTR;
+ LONG_HK_data[1][34] = ATS1_SENTRAL_STATUS_RGTR;
+ LONG_HK_data[1][35] = ATS1_ERROR_RGTR;
+ LONG_HK_data[1][36] = ATS2_EVENT_STATUS_RGTR;
+ LONG_HK_data[1][37] = ATS2_SENTRAL_STATUS_RGTR;
+ LONG_HK_data[1][38] = ATS2_ERROR_RGTR;
- BAE_HK_data[39] = BCN_FAIL_COUNT;
- BAE_HK_data[40] = actual_data.power_mode;
- BAE_HK_data[41] = HTR_CYCLE_COUNTER;//new to : implement
+ LONG_HK_data[1][39] = BCN_FAIL_COUNT;
+ LONG_HK_data[1][40] = actual_data.power_mode;
+ LONG_HK_data[1][41] = HTR_CYCLE_COUNTER;//new to : implement
- BAE_HK_data[42] = BAE_I2C_COUNTER;
- BAE_HK_data[43] = BAE_I2C_COUNTER>>8;
- BAE_HK_data[44] = ACS_MAIN_COUNTER;
- BAE_HK_data[45] = ACS_MAIN_COUNTER>>8;
- BAE_HK_data[46] = BCN_TX_MAIN_COUNTER;
- BAE_HK_data[47] = BCN_TX_MAIN_COUNTER>>8;
- BAE_HK_data[48] = EPS_MAIN_COUNTER;
- BAE_HK_data[49] = EPS_MAIN_COUNTER>>8;
- BAE_HK_data[50] = actual_data.bit_data_acs_mm[0];
- BAE_HK_data[51] = actual_data.bit_data_acs_mm[0]>>8;
- BAE_HK_data[52] = actual_data.bit_data_acs_mm[1];
- BAE_HK_data[53] = actual_data.bit_data_acs_mm[1]>>8;
- BAE_HK_data[54] = actual_data.bit_data_acs_mm[2];
- BAE_HK_data[55] = actual_data.bit_data_acs_mm[2]>>8;
+ LONG_HK_data[1][42] = BAE_I2C_COUNTER;
+ LONG_HK_data[1][43] = BAE_I2C_COUNTER>>8;
+ LONG_HK_data[1][44] = ACS_MAIN_COUNTER;
+ LONG_HK_data[1][45] = ACS_MAIN_COUNTER>>8;
+ LONG_HK_data[1][46] = BCN_TX_MAIN_COUNTER;
+ LONG_HK_data[1][47] = BCN_TX_MAIN_COUNTER>>8;
+ LONG_HK_data[1][48] = EPS_MAIN_COUNTER;
+ LONG_HK_data[1][49] = EPS_MAIN_COUNTER>>8;
+ LONG_HK_data[1][50] = actual_data.bit_data_acs_mm[0];
+ LONG_HK_data[1][51] = actual_data.bit_data_acs_mm[0]>>8;
+ LONG_HK_data[1][52] = actual_data.bit_data_acs_mm[1];
+ LONG_HK_data[1][53] = actual_data.bit_data_acs_mm[1]>>8;
+ LONG_HK_data[1][54] = actual_data.bit_data_acs_mm[2];
+ LONG_HK_data[1][55] = actual_data.bit_data_acs_mm[2]>>8;
- BAE_HK_data[56] = actual_data.bit_data_acs_mg[0];
- BAE_HK_data[57] = actual_data.bit_data_acs_mg[0]>>8;
- BAE_HK_data[58] = actual_data.bit_data_acs_mg[1];
- BAE_HK_data[59] = actual_data.bit_data_acs_mg[1]>>8;
- BAE_HK_data[60] = actual_data.bit_data_acs_mg[2];
- BAE_HK_data[61] = actual_data.bit_data_acs_mg[2]>>8;
+ LONG_HK_data[1][56] = actual_data.bit_data_acs_mg[0];
+ LONG_HK_data[1][57] = actual_data.bit_data_acs_mg[0]>>8;
+ LONG_HK_data[1][58] = actual_data.bit_data_acs_mg[1];
+ LONG_HK_data[1][59] = actual_data.bit_data_acs_mg[1]>>8;
+ LONG_HK_data[1][60] = actual_data.bit_data_acs_mg[2];
+ LONG_HK_data[1][61] = actual_data.bit_data_acs_mg[2]>>8;
- BAE_HK_data[62] = BCN_TX_OC_FAULT;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_ENABLE;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_Z_ENABLE;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_OC_FAULT;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_Z_OC_FAULT;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_FAULT;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | EPS_CHARGER_FAULT;
- BAE_HK_data[62] = (BAE_HK_data[62]<<1) | EPS_CHARGER_STATUS;
+ LONG_HK_data[1][62] = BCN_TX_OC_FAULT;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_ENABLE;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_ENABLE;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_OC_FAULT;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_OC_FAULT;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_FAULT;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_FAULT;
+ LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_STATUS;
- BAE_HK_data[63] = EPS_BATTERY_GAUGE_ALERT;
- BAE_HK_data[63] = (BAE_HK_data[63]<<1) | CDMS_OC_FAULT;
- BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_ATS1_OC_FAULT;
- BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_ATS2_OC_FAULT;
- BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_TR_Z_FAULT;
- BAE_HK_data[63] = (BAE_HK_data[63]<<3);
+ LONG_HK_data[1][63] = EPS_BATTERY_GAUGE_ALERT;
+ LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | CDMS_OC_FAULT;
+ LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS1_OC_FAULT;
+ LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS2_OC_FAULT;
+ LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_TR_Z_FAULT;
+ LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<3);
//3 spare
- BAE_HK_data[64] = ACS_TR_X_PWM;
- BAE_HK_data[65] = ACS_TR_Y_PWM;
- BAE_HK_data[66] = ACS_TR_Z_PWM;
+ LONG_HK_data[1][64] = ACS_TR_X_PWM;
+ LONG_HK_data[1][65] = ACS_TR_Y_PWM;
+ LONG_HK_data[1][66] = ACS_TR_Z_PWM;
//spare byte
//assigned it to counter HTR_CYCLE_COUNTER
//assign it b_scz_angle
- BAE_HK_data[67] = 0x00;
- BAE_HK_data[67] = (BAE_HK_data[67]<<1) | alarmmode;
- BAE_HK_data[67] = (BAE_HK_data[67]<<1) | controlmode_mms;
- BAE_HK_data[67] = (BAE_HK_data[67]<<2);
+ LONG_HK_data[1][67] = 0x00;
+ LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | alarmmode;
+ LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | controlmode_mms;
+ LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<2);
//2 bit spare
for(int i=0;i<9;i++)
{
- BAE_HK_data[68+i] = invjm_mms[i];
- BAE_HK_data[81+i] = jm_mms[i];
+ LONG_HK_data[1][68+i] = invjm_mms[i];
+ LONG_HK_data[1][81+i] = jm_mms[i];
}
for(int i=0;i<3;i++)
- BAE_HK_data[77+i] = bb_mms[i];
+ LONG_HK_data[1][77+i] = bb_mms[i];
- BAE_HK_data[80] = singularity_flag_mms;
+ LONG_HK_data[1][80] = singularity_flag_mms;
for(int i=0;i<16;i++)
{
- BAE_HK_data[90+i] = quant_data.voltage_quant[i];
- BAE_HK_data[106+i] = quant_data.current_quant[i];
+ LONG_HK_data[1][90+i] = quant_data.voltage_quant[i];
+ LONG_HK_data[1][106+i] = quant_data.current_quant[i];
}
- BAE_HK_data[122] = quant_data.Batt_voltage_quant;
- BAE_HK_data[123] = quant_data.BAE_temp_quant;
- BAE_HK_data[124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
- BAE_HK_data[125] = quant_data.Batt_temp_quant[0];
- BAE_HK_data[126] = quant_data.Batt_temp_quant[1];
- BAE_HK_data[127] = BCN_TMP;
- BAE_HK_data[128] = 0x00;
- BAE_HK_data[129] = 0x00;
- BAE_HK_data[130] = 0x00;
- BAE_HK_data[131] = 0x00;
+ LONG_HK_data[1][122] = quant_data.Batt_voltage_quant;
+ LONG_HK_data[1][123] = quant_data.BAE_temp_quant;
+ LONG_HK_data[1][124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
+ LONG_HK_data[1][125] = quant_data.Batt_temp_quant[0];
+ LONG_HK_data[1][126] = quant_data.Batt_temp_quant[1];
+ LONG_HK_data[1][127] = BCN_TMP;
+ LONG_HK_data[1][128] = 0x00;
+ LONG_HK_data[1][129] = 0x00;
+ LONG_HK_data[1][130] = 0x00;
+ LONG_HK_data[1][131] = 0x00;
uint16_t crc = crc_hk_data();
- BAE_HK_data[132] = (uint8_t)(crc >> 8);
- BAE_HK_data[133] = crc;
+ LONG_HK_data[1][132] = (uint8_t)(crc >> 8);
+ LONG_HK_data[1][133] = crc;
//===================================================
/* can be retrived from the earlier code (function)*/
@@ -810,13 +820,17 @@
vAlertMinMaxThreshold();//set min, max value of Valrt register
vResetThresholdSet();//set threshold voltage for reset
vResetAlertEnabled(true);//enable alert on reset for V < Vreset
+ int ack = write(REG_STATUS, read(REG_STATUS) & 0xFEFF); //Clearing Reset Indicator bit
+ if( ack == 0 ) printf("BTG init success\n\r");
+ else printf("BTG init fail ack = %d\n\r", ack);
+ write(REG_STATUS, read(REG_STATUS) & 0xFEFF); //Clearing Reset Indicator bit
}
-void FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4])
+int FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4], float temp)
{
//// printf("\n\r battery gauge \n");
- float temp=30; //=Battery_temp (from temp sensor on battery board) //value of battery temperature in C currently given a dummy value. Should be updated everytime.
+ //float temp=30; //=Battery_temp (from temp sensor on battery board) //value of battery temperature in C currently given a dummy value. Should be updated everytime.
tempCompensation(temp);
@@ -835,9 +849,83 @@
clearAlert();//clear alert
clearAlertFlags();//clear all alert flags
}
+ if( soc() == 200) return 0;
+ else return 1;
}
+void tempCompensation(float temp)
+{
+ //Calculate the new RCOMP value
+ char rcomp;
+ if (temp > 20.0) {
+ rcomp = RCOMP0 + (temp - 20.0) * -0.5;
+ } else {
+ rcomp = RCOMP0 + (temp - 20.0) * -5.0;
+ }
+
+ //Update the RCOMP value
+ compensation(rcomp);
+}
+
+void compensation(char rcomp)
+{
+ //Read the current 16-bit register value
+ unsigned short value = read(REG_CONFIG);
+
+ //Update the register value
+ value &= 0x00FF;
+ value |= rcomp << 8;
+
+ //Write the value back out
+ write(REG_CONFIG, value);
+}
+
+int write(char reg, unsigned short data)
+ {
+ //Create a temporary buffer
+ char buff[3];
+
+ //Load the register address and 16-bit data
+ buff[0] = reg;
+ buff[1] = data >> 8;
+ buff[2] = data;
+
+ int flag = m_I2C.write(m_ADDR, buff, 3); //Write the data and return ack
+
+ if( flag != 0 )
+ {
+ flag = m_I2C.write(m_ADDR, buff, 3); //Write the data and return ack
+ if( data != read(reg) ) //Verify written data
+ EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
+ }
+
+ return flag;
+ }
+
+unsigned short read(char reg)
+ {
+ int flag = 1;
+ char buff[2]; //Create a temporary buffer
+
+ //Select the register
+ m_I2C.write(m_ADDR, ®, 1, true);
+ //Read the 16-bit register
+ flag = m_I2C.read(m_ADDR, buff, 2);
+
+ if( flag )
+ {
+ m_I2C.write(m_ADDR, ®, 1, true);
+ flag = m_I2C.read(m_ADDR, buff, 2);
+ if( flag )
+ EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
+ }
+
+ //Return the combined 16-bit value
+ return (buff[0] << 8) | buff[1];
+ }
+/*
+
unsigned short read(char reg)
{
@@ -873,12 +961,14 @@
}
-
+*/
// Command the MAX17049 to perform a power-on reset
void reset()
{
//Write the POR command
write(REG_CMD, 0x5400);
+ //Re-initialise gauge
+ FCTN_BATTERYGAUGE_INIT();
}
// Command the MAX17049 to perform a QuickStart
@@ -926,7 +1016,7 @@
write(REG_CONFIG, value);
}
-
+/*
void compensation(char rcomp)
{
//Read the current 16-bit register value
@@ -940,7 +1030,7 @@
write(REG_CONFIG, value);
}
-
+
void tempCompensation(float temp)
{
//Calculate the new RCOMP value
@@ -955,6 +1045,7 @@
compensation(rcomp);
}
+*/
// Command the MAX17049 to de-assert the ALRT pin
void clearAlert()
{
@@ -1124,7 +1215,7 @@
//HS=0;
spi_bt.format(8,3);
spi_bt.frequency(1000000);
- EPS_BATTERY_TEMP_STATUS = 1;
+ EPS_BTRY_TMP_STATUS = 1;
}
void FCTN_BATT_TEMP_SENSOR_MAIN(float temp[2])
