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
Diff: main.cpp
- Revision:
- 29:bb0d64656ba1
- Parent:
- 28:5f0f2a3f3e8d
- Child:
- 30:22b338b027de
--- a/main.cpp Mon Jun 13 10:37:50 2016 +0000
+++ b/main.cpp Thu Jun 23 12:14:28 2016 +0000
@@ -8,7 +8,7 @@
#define tm_len 135
#define tc_len 11
-#define batt_heat_low 20
+//#define batt_heat_low 20
//***************************************************** flags *************************************************************//
uint32_t BAE_STATUS = 0x00000000;
@@ -47,7 +47,7 @@
char EPS_BATTERY_TEMP_STATUS = 'q';
char EPS_STATUS = 'q';
-char EPS_BATTERY_HEAT_ENABLE = 'q';
+char EPS_BATTERY_HEATER_ENABLE = 'q';
*/
uint8_t EPS_INIT_STATUS = 0;
@@ -58,7 +58,10 @@
uint8_t EPS_BATTERY_TEMP_STATUS = 0;
uint8_t EPS_STATUS = 7; //invalid status
-uint8_t EPS_BATTERY_HEAT_ENABLE = 0;
+int EPS_MAIN_COUNTER = 0;
+
+uint8_t EPS_BATTERY_HEATER_ENABLE = 0;
+float EPS_BAT_TEMP_LOW = 20.0;
//eps cdms fault
uint8_t CDMS_SW_STATUS;
@@ -396,37 +399,67 @@
pc.printf("\n\rEntered EPS %f\n",t_start.read());
EPS_MAIN_STATUS = 1; // Set EPS main status
+ EPS_MAIN_COUNTER++;
FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
EPS_BATTERY_TEMP_STATUS = 1; //set EPS_BATTERY_TEMP_STATUS
- if(EPS_BATTERY_HEAT_ENABLE == 1)
+ if(EPS_BATTERY_HEATER_ENABLE == 1)
{
- if((actual_data.Batt_temp_actual[0] < batt_heat_low) && (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm
+ if((actual_data.Batt_temp_actual[0] < EPS_BAT_TEMP_LOW) && (actual_data.Batt_temp_actual[1] < EPS_BAT_TEMP_LOW)) // to confirm
{
batt_heat = 1; //turn on battery heater
+ if( actual_data.current_actual[12] == 0 )
+ EPS_STATUS = 3; // Set EPS_ERR_HEATER_SWITCH_ON
+ else
+ EPS_STATUS = 5; // Set EPS_BATTERY_HEATER_ON
}
else
{
batt_heat = 0; //turn off battery heater
+ if( actual_data.current_actual[12] == 0 )
+ EPS_STATUS = 2; // Set EPS_ERR_HEATER_SWITCH_OFF
+ else
+ EPS_STATUS = 4; // Set EPS_BATTERY_HEATER_OFF
}
}
- else if(EPS_BATTERY_HEAT_ENABLE == 0)
+ else if(EPS_BATTERY_HEATER_ENABLE == 0)
{
EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
}
- FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
- if (actual_data.Batt_gauge_actual[1] == 200) //data not received
+
+ int BTG_MAIN_FLAG = 0; //Flag to check whether data received from gauge
+ if( read(REG_STATUS) & 0x0100 == 0x0100 ) //checking if Reset Indicator bit is set
{
- actual_data.power_mode = 1;
- EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
-
+ FCTN_BATTERYGAUGE_INIT();
+ write(REG_STATUS, read(REG_STATUS) & 0xFEFF); //Clearing Reset Indicator bit
+ if( EPS_BATTERY_TEMP_STATUS == 1 )
+ {
+ FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
+ BTG_MAIN_FLAG = 1;
+ }
+ else
+ {
+ actual_data.power_mode = 1;
+ EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
+ }
}
- else
+ if( read(REG_STATUS) & 0x0100 == 0x0000 )
{
- FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level
- EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
+ FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
+ BTG_MAIN_FLAG = 1;
}
+ if( BTG_MAIN_FLAG == 1 )
+ if (actual_data.Batt_gauge_actual[1] == 200) //data not received
+ {
+ actual_data.power_mode = 1;
+ EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
+ }
+ else
+ {
+ FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level
+ EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
+ }
// if( Temperature data received)
//{
@@ -440,6 +473,8 @@
// }
FCTN_HK_MAIN();
// printf("\n\r here");
+ FCTN_EPS_HANDLE_HW_FAULTS();
+ FCTN_EPS_HANDLE_CDMS_FAULT();
FCTN_APPEND_HKDATA();
minMaxHkData();
//printf("\n\r here");
@@ -781,9 +816,9 @@
BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000; // Set EPS_BATTERY_HEATER_ON
- if(EPS_BATTERY_HEAT_ENABLE == 1)
+ if(EPS_BATTERY_HEATER_ENABLE == 1)
BAE_ENABLE |= 0x00000080;
- else if(EPS_BATTERY_HEAT_ENABLE == 0)
+ else if(EPS_BATTERY_HEATER_ENABLE == 0)
BAE_ENABLE = BAE_ENABLE &0xFFFFFF7;
@@ -798,7 +833,7 @@
ACS_STATE = 4;
ACS_ATS_ENABLE = 1;
ACS_DATA_ACQ_ENABLE = 1;
- EPS_BATTERY_HEAT_ENABLE = 1;
+ EPS_BATTERY_HEATER_ENABLE = 1;
actual_data.power_mode=3;
//............intializing pins................//
ATS1_SW_ENABLE = 0;
