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 QM_BAE_review_1 by
Diff: main.cpp
- Revision:
- 9:194afacf7449
- Parent:
- 8:82250e41da81
- Child:
- 12:af1d7e18b868
--- a/main.cpp Sat Mar 12 12:54:14 2016 +0000
+++ b/main.cpp Fri Apr 01 21:13:16 2016 +0000
@@ -9,6 +9,7 @@
#define tm_len 134
#define tc_len 135
#define batt_heat_low 20
+
//***************************************************** flags *************************************************************//
uint32_t BAE_STATUS = 0x00000000;
uint32_t BAE_ENABLE = 0xFFFFFFFF;
@@ -17,7 +18,7 @@
char data_send_flag = 'h';
//.........acs...............//
-char ACS_INIT_STATUS = 'q';
+/* char ACS_INIT_STATUS = 'q';
char ACS_DATA_ACQ_STATUS = 'q';
char ACS_ATS_STATUS = 'q';
char ACS_MAIN_STATUS = 'q';
@@ -25,11 +26,21 @@
char ACS_ATS_ENABLE = 'q';
char ACS_DATA_ACQ_ENABLE = 'q';
-char ACS_STATE = 'q';
+char ACS_STATE = 'q';*/
+
+uint8_t ACS_INIT_STATUS = 0;
+uint8_t ACS_DATA_ACQ_STATUS = 0;
+uint8_t ACS_ATS_STATUS = 0;
+uint8_t ACS_MAIN_STATUS = 0;
+uint8_t ACS_STATUS = 0;
+
+uint8_t ACS_ATS_ENABLE = 1;
+uint8_t ACS_DATA_ACQ_ENABLE = 1;
+uint8_t ACS_STATE = 4;
//.....................eps...................//
//eps init
-char EPS_INIT_STATUS = 'q';
+/*char EPS_INIT_STATUS = 'q';
char EPS_BATTERY_GAUGE_STATUS = 'q';
//eps main
char EPS_MAIN_STATUS = 'q';
@@ -37,6 +48,16 @@
char EPS_STATUS = 'q';
char EPS_BATTERY_HEAT_ENABLE = 'q';
+*/
+
+uint8_t EPS_INIT_STATUS = 0;
+uint8_t EPS_BATTERY_GAUGE_STATUS = 0;
+//eps main
+uint8_t EPS_MAIN_STATUS = 0;
+uint8_t EPS_BATTERY_TEMP_STATUS = 0;
+uint8_t EPS_STATUS = 7; //invalid status
+
+uint8_t EPS_BATTERY_HEAT_ENABLE = 0;
//.......................global variables..................................................................// new hk structure- everything has to changed based on this
uint8_t BAE_data[74];
@@ -72,14 +93,14 @@
bool if2check = 1;
//*****************************************************Assigning pins******************************************************//
-DigitalOut gpo1(PTC0); // enable of att sens2 switch
-DigitalOut gpo2(PTC16); // enable of att sens switch
+DigitalOut ATS1_SW_ENABLE(PTC0); // enable of att sens2 switch
+DigitalOut ATS2_SW_ENABLE(PTC16); // enable of att sens switch
InterruptIn irpt_4m_mstr(PIN38); //I2c interrupt from CDMS
DigitalOut irpt_2_mstr(PIN4); //I2C interrupt to CDMS
I2CSlave slave (PIN1,PIN2);
DigitalOut batt_heat(PIN96);
-//gpo1 = 0;
+//ATS1_SW_ENABLE = 0;
PwmOut PWM1(PIN93); //x //Functions used to generate PWM signal
PwmOut PWM2(PIN94); //y
PwmOut PWM3(PIN95); //z //PWM output comes from pins p6
@@ -91,7 +112,7 @@
DigitalIn pf3(PIN83);//Fault Bar for TRXY driver
//Interrupt based faults
-//InterruptIn ir1(PIN73);//Battery Gauge - Alert Bar Signal
+InterruptIn ir1(PIN73);//Battery Gauge - Alert Bar Signal
InterruptIn ir2(PIN72);//TRXY Driver TR switch Fault
InterruptIn ir3(PIN89);//TRZ Driver Fault Bar
InterruptIn ir4(PIN91);//TRZ Driver TR switch Fault
@@ -99,7 +120,7 @@
InterruptIn ir6(PIN80);//Beacon- Switch OC bar
InterruptIn ir7(PIN42);//Charger IC - Fault Bar
-DigitalOut TRXY_SW(PIN71); //TR XY Switch
+DigitalOut TRXY_SW_EN(PIN71); //TR XY Switch
DigitalOut DRV_Z_SLP(PIN88); //Sleep pin of driver z
DigitalOut TRZ_SW(PIN40); //TR Z Switch
DigitalOut CDMS_RESET(PIN7); // CDMS RESET
@@ -131,47 +152,47 @@
void F_ACS()
{
- //........dummy check..........//
- PWM1 = 0.56;
- printf ("\n\r pwm1 value %f",PWM1);
+
//...................//
if(pf1check == 1)
{
if(iterP1 >= 3)
{
- gpo1 = 1; // turn off ats1 permanently
+ ATS1_SW_ENABLE = 1; // turn off ats1 permanently
//FCTN_SWITCH_ATS(0); // switch on ATS2
}
else
{
- gpo1 = 0;
+ ATS1_SW_ENABLE = 0;
iterP1++;
}
+ pf1check = 0;
}
if(pf2check == 1)
{
if(iterP1 >= 3)
{
- gpo2 = 1; // turn off ats2 permanently
- ACS_DATA_ACQ_ENABLE == 'd';
- ACS_STATE == '2' ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
+ ATS2_SW_ENABLE = 1; // turn off ats2 permanently
+ ACS_DATA_ACQ_ENABLE == 0;
+ ACS_STATE == 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
}
else
{
- gpo2 = 0;
+ ATS2_SW_ENABLE = 0;
iterP2++;
}
+ pf2check = 0;
}
if(if1check == 1)
{
if(iterI1 >= 3)
{
- TRXY_SW = 0; // turn off TRXY permanently
+ TRXY_SW_EN = 0; // turn off TRXY permanently
}
else
{
- TRXY_SW = 1; //switch on TRXY
+ TRXY_SW_EN = 1; //switch on TRXY
iterI1++;
}
}
@@ -180,7 +201,7 @@
if(iterI2 >= 3)
{
TRZ_SW = 0; // turn off TRZ permanently
- ACS_STATE == '2' ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
+ ACS_STATE == 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
}
else
{
@@ -192,19 +213,19 @@
//float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246};
//b1[3] = {22, 22,10};
//omega1[3] = {2.1,3.0,1.5};
- // gpo1 = 0; // att sens2 switch is disabled
- // gpo2 = 0; // att sens switch is disabled
+ // ATS1_SW_ENABLE = 0; // att sens2 switch is disabled
+ // ATS2_SW_ENABLE = 0; // att sens switch is disabled
//Thread::signal_wait(0x1);
- ACS_MAIN_STATUS = 's'; //set ACS_MAIN_STATUS flag
+ ACS_MAIN_STATUS = 1; //set ACS_MAIN_STATUS flag
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
PWM3 = 0; //clear pwm pins
pc.printf("\n\rEntered ACS %f\n",t_start.read());
- if(ACS_DATA_ACQ_ENABLE == 'e')// check if ACS_DATA_ACQ_ENABLE = 1?
+ if(ACS_DATA_ACQ_ENABLE == 1)// check if ACS_DATA_ACQ_ENABLE = 1?
{
FLAG();
FCTN_ATS_DATA_ACQ(); //the angular velocity is stored in the first 3 values and magnetic field values in next 3
@@ -228,11 +249,11 @@
{
// Z axis actuation is the only final solution,
}
- if(ACS_STATE == '0') // check ACS_STATE = ACS_CONTROL_OFF?
+ if(ACS_STATE == 0) // check ACS_STATE = ACS_CONTROL_OFF?
{
printf("\n\r acs control off\n");
FLAG();
- ACS_STATUS = '0'; // set ACS_STATUS = ACS_CONTROL_OFF
+ ACS_STATUS = 0; // set ACS_STATUS = ACS_CONTROL_OFF
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
PWM3 = 0; //clear pwm pins
@@ -242,11 +263,11 @@
if(actual_data.power_mode>1)
{
- if(ACS_STATE == '2') // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
+ if(ACS_STATE == 2) // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
{
FLAG();
printf("\n\r z axis moment only\n");
- ACS_STATUS = '2'; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
+ ACS_STATUS = 2; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
// FCTN_ACS_CNTRLALGO(b1, omega1);
moment[0] = 0;
moment[1] = 0;
@@ -255,22 +276,22 @@
}
else
{
- if(ACS_STATE == '3') // check ACS_STATE = ACS_DATA_ACQ_FAILURE
+ if(ACS_STATE == 3) // check ACS_STATE = ACS_DATA_ACQ_FAILURE
{
FLAG();
printf("\n\r acs data failure ");
- ACS_STATUS = '3'; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
+ ACS_STATUS = 3; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
PWM3 = 0; //clear pwm pins
}
else
{
- if(ACS_STATE == '4') // check ACS_STATE = ACS_NOMINAL_ONLY
+ if(ACS_STATE == 4) // check ACS_STATE = ACS_NOMINAL_ONLY
{
FLAG();
printf("\n\r nominal");
- ACS_STATUS = '4'; // set ACS_STATUS = ACS_NOMINAL_ONLY
+ ACS_STATUS = 4; // set ACS_STATUS = ACS_NOMINAL_ONLY
FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual);
printf("\n\r moment values returned by control algo \n");
for(int i=0; i<3; i++)
@@ -281,20 +302,20 @@
}
else
{
- if(ACS_STATE == '5') // check ACS_STATE = ACS_AUTO_CONTROL
+ if(ACS_STATE == 5) // check ACS_STATE = ACS_AUTO_CONTROL
{
FLAG();
printf("\n\r auto control");
- ACS_STATUS = '5'; // set ACS_STATUS = ACS_AUTO_CONTROL
+ ACS_STATUS = 5; // set ACS_STATUS = ACS_AUTO_CONTROL
//FCTN_ACS_AUTOCTRL_LOGIC // gotta include this code
}
else
{
- if(ACS_STATE == '6') // check ACS_STATE = ACS_DETUMBLING_ONLY
+ if(ACS_STATE == 6) // check ACS_STATE = ACS_DETUMBLING_ONLY
{
FLAG();
printf("\n\r Entered detumbling \n");
- ACS_STATUS = '6'; // set ACS_STATUS = ACS_DETUMBLING_ONLY
+ ACS_STATUS = 6; // set ACS_STATUS = ACS_DETUMBLING_ONLY
FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual); // detumbling code has to be included
FCTN_ACS_GENPWM_MAIN(moment) ;
}
@@ -302,7 +323,7 @@
{
FLAG();
printf("\n\r invalid state");
- ACS_STATUS = '7' ; // set ACS_STATUS = INVALID STATE
+ ACS_STATUS = 7 ; // set ACS_STATUS = INVALID STATE
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
PWM3 = 0; //clear pwm pins
@@ -317,13 +338,13 @@
{
FLAG();
printf("\n\r low power");
- ACS_STATUS = '1'; // set ACS_STATUS = ACS_LOW_POWER
+ ACS_STATUS = 1; // set ACS_STATUS = ACS_LOW_POWER
PWM1 = 0; //clear pwm pins
PWM2 = 0; //clear pwm pins
PWM3 = 0; //clear pwm pins
}
} //else for acs control off
- ACS_MAIN_STATUS = 'c'; //clear ACS_MAIN_STATUS flag
+ ACS_MAIN_STATUS = 0; //clear ACS_MAIN_STATUS flag
}
//***************************************************EPS THREAD***********************************************//
@@ -332,11 +353,11 @@
{
pc.printf("\n\rEntered EPS %f\n",t_start.read());
- EPS_MAIN_STATUS = 's'; // Set EPS main status
+ EPS_MAIN_STATUS = 1; // Set EPS main status
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 = 's'; //set EPS_BATTERY_TEMP_STATUS
- if(EPS_BATTERY_HEAT_ENABLE == 'e')
+ EPS_BATTERY_TEMP_STATUS = 1; //set EPS_BATTERY_TEMP_STATUS
+ if(EPS_BATTERY_HEAT_ENABLE == 1)
{
if((actual_data.Batt_temp_actual[0] < batt_heat_low) && (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm
{
@@ -348,7 +369,7 @@
}
}
- else if(EPS_BATTERY_HEAT_ENABLE == 'd')
+ else if(EPS_BATTERY_HEAT_ENABLE == 0)
{
EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
}
@@ -356,13 +377,13 @@
if (actual_data.Batt_gauge_actual[1] == 200) //data not received
{
actual_data.power_mode = 1;
- EPS_BATTERY_GAUGE_STATUS = 'c'; //clear EPS_BATTERY_GAUGE_STATUS
+ 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 = 's'; //set EPS_BATTERY_GAUGE_STATUS
+ EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
}
// if( Temperature data received)
//{
@@ -372,7 +393,7 @@
// else
// {
// Set battery temp to XX
-// EPS_BATTERY_TEMP_STATUS = 'c'; //clear EPS_BATTERY_TEMP_STATUS
+// EPS_BATTERY_TEMP_STATUS = 0; //clear EPS_BATTERY_TEMP_STATUS
// EPS_STATUS = EPS_ERR_BATTERY_TEMP;
// }
FCTN_HK_MAIN();
@@ -380,7 +401,7 @@
FCTN_APPEND_HKDATA();
minMaxHkData();
//printf("\n\r here");
- EPS_MAIN_STATUS = 'c'; // clear EPS main status
+ EPS_MAIN_STATUS = 0; // clear EPS main status
}
@@ -472,7 +493,7 @@
void ir2clear()
{
actual_data.faultIr_status |= 0x02;
- TRXY_SW = 0; // Switch off TR XY
+ TRXY_SW_EN = 0; // Switch off TR XY
if1check = 1;
}
@@ -525,7 +546,7 @@
{
pf1check=1;
actual_data.faultPoll_status |=0x01 ;
- gpo1 = 1; // turn off ats1 // to be turned on next cycle in ACS
+ ATS1_SW_ENABLE = 1; // turn off ats1 // to be turned on next cycle in ACS
}
else actual_data.faultPoll_status &= 0xFE;
@@ -533,7 +554,7 @@
{
pf2check=1;
actual_data.faultPoll_status |=0x02 ;
- gpo2 = 1; // turn off ats2 // turn on in ACS
+ ATS2_SW_ENABLE = 1; // turn off ats2 // turn on in ACS
}
else actual_data.faultPoll_status &= 0xFD;
@@ -613,27 +634,27 @@
{
//.............acs..................//
- if(ACS_INIT_STATUS == 's')
+ if(ACS_INIT_STATUS == 1)
BAE_STATUS = BAE_STATUS | 0x00000080; //set ACS_INIT_STATUS flag
- else if(ACS_INIT_STATUS == 'c')
+ else if(ACS_INIT_STATUS == 0)
BAE_STATUS &= 0xFFFFFF7F; //clear ACS_INIT_STATUS flag
- if(ACS_DATA_ACQ_STATUS == 's')
+ if(ACS_DATA_ACQ_STATUS == 1)
BAE_STATUS =BAE_STATUS | 0x00000100; //set ACS_DATA_ACQ_STATUS flag
- else if(ACS_DATA_ACQ_STATUS == 'c')
+ else if(ACS_DATA_ACQ_STATUS == 0)
BAE_STATUS &= 0xFFFFFEFF; //clear ACS_DATA_ACQ_STATUS flag
- if(ACS_ATS_ENABLE == 'e')
+ if(ACS_ATS_ENABLE == 1)
BAE_ENABLE |= 0x00000004;
- else if(ACS_ATS_ENABLE == 'd')
+ else if(ACS_ATS_ENABLE == 0)
BAE_ENABLE = BAE_ENABLE &0xFFFFFFFB | 0x00000004;
if(ACS_DATA_ACQ_STATUS == 'f')
BAE_STATUS |= 0x00000200;
- if(ACS_MAIN_STATUS == 's')
+ if(ACS_MAIN_STATUS == 1)
BAE_STATUS = (BAE_STATUS | 0x00001000); //set ACS_MAIN_STATUS flag
- else if(ACS_MAIN_STATUS == 'c')
+ else if(ACS_MAIN_STATUS == 0)
BAE_STATUS &= 0xFFFFEFFF; //clear ACS_MAIN_STATUS flag
if(ACS_STATUS == '0')
@@ -669,27 +690,27 @@
//...............eps......................//
-if (EPS_INIT_STATUS=='s') // Set EPS_INIT_STATUS
+if (EPS_INIT_STATUS==1) // Set EPS_INIT_STATUS
BAE_STATUS |= 0x00010000;
-else if(EPS_INIT_STATUS=='c') // Clear
+else if(EPS_INIT_STATUS==0) // Clear
BAE_STATUS &= 0xFFFEFFFF;
-if (EPS_MAIN_STATUS=='s') // Set EPS_MAIIN_STATUS
+if (EPS_MAIN_STATUS==1) // Set EPS_MAIIN_STATUS
BAE_STATUS |= 0x00040000;
-else if(EPS_MAIN_STATUS=='c') // Clear
+else if(EPS_MAIN_STATUS==0) // Clear
BAE_STATUS &= 0xFFFBFFFF;
-if (EPS_BATTERY_GAUGE_STATUS=='s') // Set EPS_BATTERY_GAUGE_STATUS
+if (EPS_BATTERY_GAUGE_STATUS==1) // Set EPS_BATTERY_GAUGE_STATUS
BAE_STATUS |= 0x00020000;
-else if(EPS_BATTERY_GAUGE_STATUS=='c') // Clear
+else if(EPS_BATTERY_GAUGE_STATUS==0) // Clear
BAE_STATUS &= 0xFFFDFFFF;
-if (EPS_BATTERY_TEMP_STATUS=='s') // Set EPS_BATTERY_TEMP_STATUS
+if (EPS_BATTERY_TEMP_STATUS==1) // Set EPS_BATTERY_TEMP_STATUS
BAE_STATUS |= 0x00080000;
-else if(EPS_BATTERY_TEMP_STATUS=='c') // Clear
+else if(EPS_BATTERY_TEMP_STATUS==0) // Clear
BAE_STATUS &= 0xFFF7FFFF;
if (EPS_STATUS==0)
@@ -706,9 +727,9 @@
BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000; // Set EPS_BATTERY_HEATER_ON
- if(EPS_BATTERY_HEAT_ENABLE == 'e')
+ if(EPS_BATTERY_HEAT_ENABLE == 1)
BAE_ENABLE |= 0x00000080;
- else if(EPS_BATTERY_HEAT_ENABLE == 'd')
+ else if(EPS_BATTERY_HEAT_ENABLE == 0)
BAE_ENABLE = BAE_ENABLE &0xFFFFFF7;
@@ -721,9 +742,13 @@
printf("\n\r Initialising BAE ");
//..........intial status....//
ACS_STATE = '4';
- ACS_ATS_ENABLE = 'e';
- ACS_DATA_ACQ_ENABLE = 'e';
- EPS_BATTERY_HEAT_ENABLE = 'e';
+ ACS_ATS_ENABLE = 1;
+ ACS_DATA_ACQ_ENABLE = 1;
+ EPS_BATTERY_HEAT_ENABLE = 1;
+ //............intializing pins................//
+ ATS1_SW_ENABLE = 0;
+ ATS2_SW_ENABLE = 1;
+
//............................//
FCTN_ACS_INIT();
FCTN_EPS_INIT();
@@ -746,9 +771,9 @@
}
*/
- //ACS_INIT_STATUS = 'c';
- //ACS_DATA_ACQ_STATUS = 'c';
- gpo1 = 0;
+ //ACS_INIT_STATUS = 0;
+ //ACS_DATA_ACQ_STATUS = 0;
+
FLAG();
FCTN_BAE_INIT();
@@ -775,7 +800,7 @@
t_start.start();
pc.printf("\n\rStarted scheduler %f\n\r",t_start.read());
- gpo1 = 0; // att sens2 switch is enabled
+ ATS1_SW_ENABLE = 0; // att sens2 switch is enabled
//FCTN_BAE_INIT();
while(1); //required to prevent main from terminating
}
