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_5thJan_azad by
Diff: main.cpp
- Revision:
- 30:22b338b027de
- Parent:
- 29:bb0d64656ba1
- Child:
- 31:046685b48b71
--- a/main.cpp Thu Jun 23 12:14:28 2016 +0000 +++ b/main.cpp Fri Jul 01 14:59:12 2016 +0000 @@ -44,7 +44,7 @@ char EPS_BATTERY_GAUGE_STATUS = 'q'; //eps main char EPS_MAIN_STATUS = 'q'; -char EPS_BATTERY_TEMP_STATUS = 'q'; +char EPS_BTRY_TMP_STATUS = 'q'; char EPS_STATUS = 'q'; char EPS_BATTERY_HEATER_ENABLE = 'q'; @@ -55,13 +55,18 @@ //eps main uint8_t EPS_MAIN_STATUS = 0; -uint8_t EPS_BATTERY_TEMP_STATUS = 0; +uint8_t EPS_BTRY_TMP_STATUS = 0; uint8_t EPS_STATUS = 7; //invalid status +uint8_t EPS_BTRY_HTR_AUTO = 1; int EPS_MAIN_COUNTER = 0; -uint8_t EPS_BATTERY_HEATER_ENABLE = 0; -float EPS_BAT_TEMP_LOW = 20.0; +uint8_t EPS_BTRY_HTR = 0; +float EPS_BTRY_TMP_LOW; +float EPS_BTRY_TMP_HIGH; +int EPS_BAT_TEMP_DEFAULT = 20; + + //eps cdms fault uint8_t CDMS_SW_STATUS; @@ -98,6 +103,7 @@ bool BCN_TX_OC_FAULT; int BCN_TX_FAULT_COUNTER; + //.......................global variables..................................................................// new hk structure- everything has to changed based on this uint8_t BAE_data[74]; char BAE_chardata[74]; @@ -137,7 +143,7 @@ InterruptIn irpt_4m_mstr(PIN38); //I2c interrupt from CDMS DigitalOut irpt_2_mstr(PIN4); //I2C interrupt to CDMS I2CSlave slave (PIN1,PIN2);///pin1 pin2 -DigitalOut batt_heat(PIN96); +DigitalOut BTRY_HTR_ENABLE(BATT_HEAT); //BTRY_HEAT //ATS1_SW_ENABLE = 0; PwmOut PWM1(PIN93); //x //Functions used to generate PWM signal @@ -396,81 +402,64 @@ void F_EPS() { - - 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_HEATER_ENABLE == 1) - { - 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_HEATER_ENABLE == 0) - { - EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED - } - - int BTG_MAIN_FLAG = 0; //Flag to check whether data received from gauge + float eps_btry_temp; + 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]); + if(abs(actual_data.Batt_temp_actual[0] - actual_data.Batt_temp_actual[1]) > 10) + { + EPS_BTRY_TMP_STATUS = 0; //clear EPS_BTRY_TMP_STATUS + eps_btry_temp = (float) EPS_BAT_TEMP_DEFAULT; + } + else + { + EPS_BTRY_TMP_STATUS = 1; //set EPS_BTRY_TMP_STATUS + eps_btry_temp = ( actual_data.Batt_temp_actual[0] + actual_data.Batt_temp_actual[1] )/2; + } + + if(EPS_BTRY_HTR_AUTO == 0) + EPS_STATUS = 1; //EPS_BATTERY_HEATER_DISABLED + else if( EPS_BTRY_TMP_STATUS == 0 ) + { + BTRY_HTR_ENABLE = 0; + EPS_BTRY_HTR = 0; + EPS_STATUS = 0; //Set EPS_ERR_BATTERY_TEMP + } + else + { + if( EPS_BTRY_HTR == 1 && eps_btry_temp >= EPS_BTRY_TMP_HIGH ) + { + BTRY_HTR_ENABLE = 0; + EPS_BTRY_HTR = 0; + EPS_STATUS = 4; //Set EPS_BATTERY_HEATER_OFF + } + else if( EPS_BTRY_HTR == 0 && eps_btry_temp < EPS_BTRY_TMP_LOW ) + { + BTRY_HTR_ENABLE = 1; + EPS_BTRY_HTR = 1; + EPS_STATUS = 5; //Set EPS_BATTERY_HEATER_ON + } + } + + unsigned short statusreg = read(REG_STATUS); + if( EPS_BATTERY_GAUGE_STATUS == 0 ) reset(); if( read(REG_STATUS) & 0x0100 == 0x0100 ) //checking if Reset Indicator bit is set - { 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 + + int BTG_MAIN_FLAG = FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual, eps_btry_temp); + if( BTG_MAIN_FLAG == 0 ) //Data not received { actual_data.power_mode = 1; EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS } - } - if( read(REG_STATUS) & 0x0100 == 0x0000 ) - { - 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 + 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) - //{ - - - // } -// else -// { -// Set battery temp to XX -// EPS_BATTERY_TEMP_STATUS = 0; //clear EPS_BATTERY_TEMP_STATUS -// EPS_STATUS = EPS_ERR_BATTERY_TEMP; -// } + FCTN_HK_MAIN(); // printf("\n\r here"); FCTN_EPS_HANDLE_HW_FAULTS(); @@ -700,19 +689,19 @@ schedcount = 1; } if(schedcount%1==0) - { pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE); - pc.printf("\niterp1 !!!!!! = %x !!\n",iterP1); - pc.printf("\niteri2 IS !!!!!! = %x !!\n",iterI2); - F_ACS(); + { //pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE); + //pc.printf("\niterp1 !!!!!! = %x !!\n",iterP1); + //pc.printf("\niteri2 IS !!!!!! = %x !!\n",iterI2); + //F_ACS(); } if(schedcount%2==0) { - // F_EPS(); + F_EPS(); } if(schedcount%1==0) { - F_BCN(); + // F_BCN(); } schedcount++; printf("\n\r exited scheduler"); @@ -797,9 +786,9 @@ BAE_STATUS &= 0xFFFDFFFF; -if (EPS_BATTERY_TEMP_STATUS==1) // Set EPS_BATTERY_TEMP_STATUS +if (EPS_BTRY_TMP_STATUS==1) // Set EPS_BTRY_TMP_STATUS BAE_STATUS |= 0x00080000; -else if(EPS_BATTERY_TEMP_STATUS==0) // Clear +else if(EPS_BTRY_TMP_STATUS==0) // Clear BAE_STATUS &= 0xFFF7FFFF; if (EPS_STATUS==0) @@ -816,9 +805,9 @@ BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000; // Set EPS_BATTERY_HEATER_ON - if(EPS_BATTERY_HEATER_ENABLE == 1) + if(EPS_BTRY_HTR == 1) BAE_ENABLE |= 0x00000080; - else if(EPS_BATTERY_HEATER_ENABLE == 0) + else if(EPS_BTRY_HTR == 0) BAE_ENABLE = BAE_ENABLE &0xFFFFFF7; @@ -833,7 +822,7 @@ ACS_STATE = 4; ACS_ATS_ENABLE = 1; ACS_DATA_ACQ_ENABLE = 1; - EPS_BATTERY_HEATER_ENABLE = 1; + EPS_BTRY_HTR = 1; actual_data.power_mode=3; //............intializing pins................// ATS1_SW_ENABLE = 0; @@ -845,8 +834,8 @@ TRXY_SW = 1; //............................// - FCTN_ACS_INIT(); - // FCTN_EPS_INIT(); + //FCTN_ACS_INIT(); + FCTN_EPS_INIT(); //FCTN_BCN_INIT(); @@ -872,7 +861,7 @@ //FLAG(); - FCTN_BAE_INIT(); + //FCTN_BAE_INIT(); //...i2c..