Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
azaddevarm
Date:
Mon Jun 13 10:37:50 2016 +0000
Revision:
28:5f0f2a3f3e8d
Parent:
15:e09aaaccf134
Child:
29:bb0d64656ba1
Added EPS faults

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:7b4c00e3912f 1 #include "mbed.h"
sakthipriya 0:7b4c00e3912f 2 #include "rtos.h"
sakthipriya 0:7b4c00e3912f 3 #include "pin_config.h"
sakthipriya 0:7b4c00e3912f 4 #include "ACS.h"
sakthipriya 0:7b4c00e3912f 5 #include "EPS.h"
sakthipriya 0:7b4c00e3912f 6 #include "BCN.h"
sakthipriya 0:7b4c00e3912f 7 #include "TCTM.h"
sakthipriya 0:7b4c00e3912f 8
Bragadeesh153 13:fb7facaf308b 9 #define tm_len 135
Bragadeesh153 13:fb7facaf308b 10 #define tc_len 11
sakthipriya 0:7b4c00e3912f 11 #define batt_heat_low 20
sakthipriya 9:194afacf7449 12
sakthipriya 0:7b4c00e3912f 13 //***************************************************** flags *************************************************************//
sakthipriya 0:7b4c00e3912f 14 uint32_t BAE_STATUS = 0x00000000;
sakthipriya 0:7b4c00e3912f 15 uint32_t BAE_ENABLE = 0xFFFFFFFF;
sakthipriya 0:7b4c00e3912f 16
sakthipriya 5:bb592f3185cc 17 //i2c//
sakthipriya 5:bb592f3185cc 18 char data_send_flag = 'h';
sakthipriya 5:bb592f3185cc 19
sakthipriya 0:7b4c00e3912f 20 //.........acs...............//
sakthipriya 9:194afacf7449 21 /* char ACS_INIT_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 22 char ACS_DATA_ACQ_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 23 char ACS_ATS_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 24 char ACS_MAIN_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 25 char ACS_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 26
sakthipriya 0:7b4c00e3912f 27 char ACS_ATS_ENABLE = 'q';
sakthipriya 0:7b4c00e3912f 28 char ACS_DATA_ACQ_ENABLE = 'q';
sakthipriya 9:194afacf7449 29 char ACS_STATE = 'q';*/
sakthipriya 9:194afacf7449 30
sakthipriya 9:194afacf7449 31 uint8_t ACS_INIT_STATUS = 0;
sakthipriya 9:194afacf7449 32 uint8_t ACS_DATA_ACQ_STATUS = 0;
sakthipriya 9:194afacf7449 33 uint8_t ACS_ATS_STATUS = 0;
sakthipriya 9:194afacf7449 34 uint8_t ACS_MAIN_STATUS = 0;
sakthipriya 9:194afacf7449 35 uint8_t ACS_STATUS = 0;
sakthipriya 9:194afacf7449 36
sakthipriya 9:194afacf7449 37 uint8_t ACS_ATS_ENABLE = 1;
sakthipriya 9:194afacf7449 38 uint8_t ACS_DATA_ACQ_ENABLE = 1;
sakthipriya 9:194afacf7449 39 uint8_t ACS_STATE = 4;
sakthipriya 0:7b4c00e3912f 40
sakthipriya 0:7b4c00e3912f 41 //.....................eps...................//
sakthipriya 0:7b4c00e3912f 42 //eps init
sakthipriya 9:194afacf7449 43 /*char EPS_INIT_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 44 char EPS_BATTERY_GAUGE_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 45 //eps main
sakthipriya 0:7b4c00e3912f 46 char EPS_MAIN_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 47 char EPS_BATTERY_TEMP_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 48 char EPS_STATUS = 'q';
sakthipriya 0:7b4c00e3912f 49
sakthipriya 0:7b4c00e3912f 50 char EPS_BATTERY_HEAT_ENABLE = 'q';
sakthipriya 9:194afacf7449 51 */
sakthipriya 9:194afacf7449 52
sakthipriya 9:194afacf7449 53 uint8_t EPS_INIT_STATUS = 0;
sakthipriya 9:194afacf7449 54 uint8_t EPS_BATTERY_GAUGE_STATUS = 0;
azaddevarm 28:5f0f2a3f3e8d 55
sakthipriya 9:194afacf7449 56 //eps main
sakthipriya 9:194afacf7449 57 uint8_t EPS_MAIN_STATUS = 0;
sakthipriya 9:194afacf7449 58 uint8_t EPS_BATTERY_TEMP_STATUS = 0;
sakthipriya 9:194afacf7449 59 uint8_t EPS_STATUS = 7; //invalid status
sakthipriya 9:194afacf7449 60
sakthipriya 9:194afacf7449 61 uint8_t EPS_BATTERY_HEAT_ENABLE = 0;
sakthipriya 0:7b4c00e3912f 62
azaddevarm 28:5f0f2a3f3e8d 63 //eps cdms fault
azaddevarm 28:5f0f2a3f3e8d 64 uint8_t CDMS_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 65 bool CDMS_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 66 bool CDMS_SW_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 67 int CDMS_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 68
azaddevarm 28:5f0f2a3f3e8d 69 //eps hw faults
azaddevarm 28:5f0f2a3f3e8d 70
azaddevarm 28:5f0f2a3f3e8d 71 uint8_t ACS_TR_Z_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 72 bool ACS_TR_Z_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 73 bool ACS_TR_Z_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 74 bool ACS_TR_Z_FAULT; //Driver IC fault
azaddevarm 28:5f0f2a3f3e8d 75 int ACS_TR_Z_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 76
azaddevarm 28:5f0f2a3f3e8d 77 uint8_t ACS_TR_XY_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 78 bool ACS_TR_XY_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 79 bool ACS_TR_XY_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 80 bool ACS_TR_XY_FAULT; //Driver IC fault
azaddevarm 28:5f0f2a3f3e8d 81 int ACS_TR_XY_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 82
azaddevarm 28:5f0f2a3f3e8d 83 uint8_t ACS_ATS1_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 84 bool ACS_ATS1_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 85 bool ACS_ATS1_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 86 int ACS_ATS1_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 87
azaddevarm 28:5f0f2a3f3e8d 88 uint8_t ACS_ATS2_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 89 bool ACS_ATS2_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 90 bool ACS_ATS2_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 91 int ACS_ATS2_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 92
azaddevarm 28:5f0f2a3f3e8d 93 uint8_t BCN_TX_SW_STATUS;
azaddevarm 28:5f0f2a3f3e8d 94 bool BCN_TX_ENABLE;
azaddevarm 28:5f0f2a3f3e8d 95 bool BCN_TX_OC_FAULT;
azaddevarm 28:5f0f2a3f3e8d 96 int BCN_TX_FAULT_COUNTER;
azaddevarm 28:5f0f2a3f3e8d 97
sakthipriya 0:7b4c00e3912f 98 //.......................global variables..................................................................// new hk structure- everything has to changed based on this
sakthipriya 6:036d08b62785 99 uint8_t BAE_data[74];
sakthipriya 6:036d08b62785 100 char BAE_chardata[74];
sakthipriya 0:7b4c00e3912f 101
sakthipriya 0:7b4c00e3912f 102
sakthipriya 0:7b4c00e3912f 103 //*************************************Global declarations************************************************//
sakthipriya 0:7b4c00e3912f 104 const int addr = 0x20; //slave address
sakthipriya 0:7b4c00e3912f 105
sakthipriya 0:7b4c00e3912f 106 Timer t_rfsilence;
sakthipriya 0:7b4c00e3912f 107 Timer t_start;
sakthipriya 7:a46a1dee4497 108 Timer t_tc;
sakthipriya 7:a46a1dee4497 109 Timer t_tm;
sakthipriya 0:7b4c00e3912f 110 Serial pc(USBTX, USBRX);
sakthipriya 0:7b4c00e3912f 111 int power_flag_dummy=2;
sakthipriya 0:7b4c00e3912f 112 float data[6];
sakthipriya 0:7b4c00e3912f 113
sakthipriya 0:7b4c00e3912f 114 extern float moment[3];
sakthipriya 0:7b4c00e3912f 115 extern uint8_t BCN_FEN;
sakthipriya 1:446a959e36ce 116 extern BAE_HK_actual actual_data;
sakthipriya 1:446a959e36ce 117 extern BAE_HK_quant quant_data;
sakthipriya 1:446a959e36ce 118 extern BAE_HK_min_max bae_HK_minmax;
sakthipriya 1:446a959e36ce 119 extern BAE_HK_arch arch_data;
sakthipriya 0:7b4c00e3912f 120
sakthipriya 5:bb592f3185cc 121 int write_ack = 1;
sakthipriya 5:bb592f3185cc 122 int read_ack = 1;
sakthipriya 0:7b4c00e3912f 123 char telecommand[tc_len];
Bragadeesh153 13:fb7facaf308b 124 extern uint8_t telemetry[135];
sakthipriya 5:bb592f3185cc 125
sakthipriya 5:bb592f3185cc 126 bool pf1check = 0;
sakthipriya 5:bb592f3185cc 127 bool pf2check = 0;
sakthipriya 5:bb592f3185cc 128 bool if1check = 0;
lakshya 14:a9588f443f1a 129 bool if2check = 0;
sakthipriya 0:7b4c00e3912f 130
sakthipriya 0:7b4c00e3912f 131 //*****************************************************Assigning pins******************************************************//
sakthipriya 9:194afacf7449 132 DigitalOut ATS1_SW_ENABLE(PTC0); // enable of att sens2 switch
sakthipriya 9:194afacf7449 133 DigitalOut ATS2_SW_ENABLE(PTC16); // enable of att sens switch
sakthipriya 0:7b4c00e3912f 134 InterruptIn irpt_4m_mstr(PIN38); //I2c interrupt from CDMS
sakthipriya 0:7b4c00e3912f 135 DigitalOut irpt_2_mstr(PIN4); //I2C interrupt to CDMS
lakshya 14:a9588f443f1a 136 I2CSlave slave (PIN1,PIN2);///pin1 pin2
sakthipriya 0:7b4c00e3912f 137 DigitalOut batt_heat(PIN96);
sakthipriya 0:7b4c00e3912f 138
sakthipriya 9:194afacf7449 139 //ATS1_SW_ENABLE = 0;
sakthipriya 0:7b4c00e3912f 140 PwmOut PWM1(PIN93); //x //Functions used to generate PWM signal
sakthipriya 0:7b4c00e3912f 141 PwmOut PWM2(PIN94); //y
sakthipriya 0:7b4c00e3912f 142 PwmOut PWM3(PIN95); //z //PWM output comes from pins p6
sakthipriya 0:7b4c00e3912f 143
sakthipriya 5:bb592f3185cc 144 //........faults
sakthipriya 5:bb592f3185cc 145 //Polled Faults
sakthipriya 5:bb592f3185cc 146 DigitalIn pf1(PIN5);//Attitude Sensor 1 OC bar fault signal
sakthipriya 5:bb592f3185cc 147 DigitalIn pf2(PIN97);//Attitude Sensor 2 OC bar fault signal
sakthipriya 5:bb592f3185cc 148 DigitalIn pf3(PIN83);//Fault Bar for TRXY driver
sakthipriya 5:bb592f3185cc 149
sakthipriya 5:bb592f3185cc 150 //Interrupt based faults
lakshya 14:a9588f443f1a 151 //InterruptIn ir1(PIN73);//Battery Gauge - Alert Bar Signal
sakthipriya 5:bb592f3185cc 152 InterruptIn ir2(PIN72);//TRXY Driver TR switch Fault
sakthipriya 5:bb592f3185cc 153 InterruptIn ir3(PIN89);//TRZ Driver Fault Bar
sakthipriya 5:bb592f3185cc 154 InterruptIn ir4(PIN91);//TRZ Driver TR switch Fault
sakthipriya 5:bb592f3185cc 155 InterruptIn ir5(PIN79);//CDMS - Switch Fault
sakthipriya 5:bb592f3185cc 156 InterruptIn ir6(PIN80);//Beacon- Switch OC bar
sakthipriya 5:bb592f3185cc 157 InterruptIn ir7(PIN42);//Charger IC - Fault Bar
sakthipriya 5:bb592f3185cc 158
lakshya 14:a9588f443f1a 159
Bragadeesh153 13:fb7facaf308b 160 //DigitalOut TRXY_SW_EN(PIN71); //TR XY Switch
Bragadeesh153 13:fb7facaf308b 161 //DigitalOut DRV_Z_SLP(PIN88); //Sleep pin of driver z
Bragadeesh153 13:fb7facaf308b 162 //DigitalOut TRZ_SW(PIN40); //TR Z Switch
Bragadeesh153 13:fb7facaf308b 163 //DigitalOut CDMS_RESET(PIN7); // CDMS RESET
Bragadeesh153 13:fb7facaf308b 164 //DigitalOut BCN_SW(PIN14); //Beacon switch
Bragadeesh153 13:fb7facaf308b 165 //DigitalOut DRV_XY_SLP(PIN82);
Bragadeesh153 13:fb7facaf308b 166
Bragadeesh153 13:fb7facaf308b 167
Bragadeesh153 13:fb7facaf308b 168 DigitalOut TRXY_SW(PIN71); //TR XY Switch
Bragadeesh153 13:fb7facaf308b 169 DigitalOut DRV_Z_EN(PIN88); //Sleep pin of driver z
sakthipriya 5:bb592f3185cc 170 DigitalOut TRZ_SW(PIN40); //TR Z Switch
sakthipriya 5:bb592f3185cc 171 DigitalOut CDMS_RESET(PIN7); // CDMS RESET
sakthipriya 5:bb592f3185cc 172 DigitalOut BCN_SW(PIN14); //Beacon switch
Bragadeesh153 13:fb7facaf308b 173 DigitalOut DRV_XY_EN(PIN82);
sakthipriya 0:7b4c00e3912f 174
sakthipriya 0:7b4c00e3912f 175 /*****************************************************************Threads USed***********************************************************************************/
sakthipriya 3:07e15677a75c 176
sakthipriya 0:7b4c00e3912f 177 Thread *ptr_t_i2c;
sakthipriya 0:7b4c00e3912f 178
sakthipriya 0:7b4c00e3912f 179 /*********************************************************FCTN HEADERS***********************************************************************************/
sakthipriya 0:7b4c00e3912f 180
sakthipriya 0:7b4c00e3912f 181 void FCTN_ISR_I2C();
sakthipriya 0:7b4c00e3912f 182 void FCTN_TM();
sakthipriya 3:07e15677a75c 183 void F_ACS();
sakthipriya 3:07e15677a75c 184 void F_EPS();
sakthipriya 3:07e15677a75c 185 void F_BCN();
sakthipriya 0:7b4c00e3912f 186
sakthipriya 0:7b4c00e3912f 187 //*******************************************ACS THREAD**************************************************//
sakthipriya 5:bb592f3185cc 188 uint8_t iterP1;
sakthipriya 5:bb592f3185cc 189 uint8_t iterP2;
sakthipriya 5:bb592f3185cc 190 uint8_t iterI1;
sakthipriya 5:bb592f3185cc 191 uint8_t iterI2;
sakthipriya 0:7b4c00e3912f 192
sakthipriya 5:bb592f3185cc 193
sakthipriya 3:07e15677a75c 194 void F_ACS()
sakthipriya 0:7b4c00e3912f 195 {
sakthipriya 8:82250e41da81 196
sakthipriya 9:194afacf7449 197
sakthipriya 8:82250e41da81 198 //...................//
sakthipriya 8:82250e41da81 199
sakthipriya 5:bb592f3185cc 200 if(pf1check == 1)
sakthipriya 5:bb592f3185cc 201 {
sakthipriya 5:bb592f3185cc 202 if(iterP1 >= 3)
sakthipriya 5:bb592f3185cc 203 {
sakthipriya 9:194afacf7449 204 ATS1_SW_ENABLE = 1; // turn off ats1 permanently
sakthipriya 5:bb592f3185cc 205 //FCTN_SWITCH_ATS(0); // switch on ATS2
sakthipriya 5:bb592f3185cc 206 }
sakthipriya 5:bb592f3185cc 207 else
sakthipriya 5:bb592f3185cc 208 {
sakthipriya 9:194afacf7449 209 ATS1_SW_ENABLE = 0;
sakthipriya 5:bb592f3185cc 210 iterP1++;
sakthipriya 5:bb592f3185cc 211 }
sakthipriya 9:194afacf7449 212 pf1check = 0;
sakthipriya 5:bb592f3185cc 213 }
sakthipriya 5:bb592f3185cc 214 if(pf2check == 1)
sakthipriya 5:bb592f3185cc 215 {
sakthipriya 5:bb592f3185cc 216 if(iterP1 >= 3)
sakthipriya 5:bb592f3185cc 217 {
sakthipriya 9:194afacf7449 218 ATS2_SW_ENABLE = 1; // turn off ats2 permanently
Bragadeesh153 13:fb7facaf308b 219 ACS_DATA_ACQ_ENABLE = 0;
Bragadeesh153 13:fb7facaf308b 220 ACS_STATE = 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 5:bb592f3185cc 221 }
sakthipriya 5:bb592f3185cc 222 else
sakthipriya 5:bb592f3185cc 223 {
sakthipriya 9:194afacf7449 224 ATS2_SW_ENABLE = 0;
sakthipriya 5:bb592f3185cc 225 iterP2++;
sakthipriya 5:bb592f3185cc 226 }
sakthipriya 9:194afacf7449 227 pf2check = 0;
sakthipriya 5:bb592f3185cc 228 }
sakthipriya 5:bb592f3185cc 229 if(if1check == 1)
sakthipriya 5:bb592f3185cc 230 {
sakthipriya 5:bb592f3185cc 231 if(iterI1 >= 3)
sakthipriya 5:bb592f3185cc 232 {
Bragadeesh153 13:fb7facaf308b 233 TRXY_SW = 0; // turn off TRXY permanently
sakthipriya 5:bb592f3185cc 234 }
sakthipriya 5:bb592f3185cc 235 else
sakthipriya 5:bb592f3185cc 236 {
Bragadeesh153 13:fb7facaf308b 237 TRXY_SW = 1; //switch on TRXY
sakthipriya 5:bb592f3185cc 238 iterI1++;
sakthipriya 5:bb592f3185cc 239 }
sakthipriya 5:bb592f3185cc 240 }
sakthipriya 5:bb592f3185cc 241 if(if2check == 1)
sakthipriya 5:bb592f3185cc 242 {
sakthipriya 5:bb592f3185cc 243 if(iterI2 >= 3)
sakthipriya 5:bb592f3185cc 244 {
sakthipriya 5:bb592f3185cc 245 TRZ_SW = 0; // turn off TRZ permanently
Bragadeesh153 13:fb7facaf308b 246 ACS_STATE = 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 5:bb592f3185cc 247 }
sakthipriya 5:bb592f3185cc 248 else
sakthipriya 5:bb592f3185cc 249 {
sakthipriya 5:bb592f3185cc 250 TRZ_SW = 1; //switch on Z
sakthipriya 5:bb592f3185cc 251 iterI2++;
sakthipriya 5:bb592f3185cc 252 }
sakthipriya 5:bb592f3185cc 253 }
sakthipriya 5:bb592f3185cc 254
sakthipriya 6:036d08b62785 255 //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};
sakthipriya 0:7b4c00e3912f 256 //b1[3] = {22, 22,10};
sakthipriya 0:7b4c00e3912f 257 //omega1[3] = {2.1,3.0,1.5};
sakthipriya 9:194afacf7449 258 // ATS1_SW_ENABLE = 0; // att sens2 switch is disabled
sakthipriya 9:194afacf7449 259 // ATS2_SW_ENABLE = 0; // att sens switch is disabled
sakthipriya 0:7b4c00e3912f 260
sakthipriya 3:07e15677a75c 261
sakthipriya 0:7b4c00e3912f 262
sakthipriya 3:07e15677a75c 263 //Thread::signal_wait(0x1);
sakthipriya 9:194afacf7449 264 ACS_MAIN_STATUS = 1; //set ACS_MAIN_STATUS flag
sakthipriya 0:7b4c00e3912f 265 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 266 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 267 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 268 pc.printf("\n\rEntered ACS %f\n",t_start.read());
sakthipriya 0:7b4c00e3912f 269
sakthipriya 9:194afacf7449 270 if(ACS_DATA_ACQ_ENABLE == 1)// check if ACS_DATA_ACQ_ENABLE = 1?
sakthipriya 0:7b4c00e3912f 271 {
Bragadeesh153 13:fb7facaf308b 272 //FLAG();
sakthipriya 0:7b4c00e3912f 273 FCTN_ATS_DATA_ACQ(); //the angular velocity is stored in the first 3 values and magnetic field values in next 3
sakthipriya 0:7b4c00e3912f 274 pc.printf("gyro values\n\r"); //printing the angular velocity and magnetic field values
sakthipriya 0:7b4c00e3912f 275 for(int i=0; i<3; i++)
sakthipriya 0:7b4c00e3912f 276 {
lakshya 15:e09aaaccf134 277 printf("%f\n\r",actual_data.AngularSpeed_actual[i]);
sakthipriya 0:7b4c00e3912f 278 }
sakthipriya 0:7b4c00e3912f 279 pc.printf("mag values\n\r");
sakthipriya 6:036d08b62785 280 for(int i=0; i<3; i++)
sakthipriya 0:7b4c00e3912f 281 {
sakthipriya 6:036d08b62785 282 pc.printf("%f\n\r",actual_data.Bvalue_actual[i]);
sakthipriya 5:bb592f3185cc 283 }
sakthipriya 6:036d08b62785 284 // for(int i=0;i<3;i++)
sakthipriya 6:036d08b62785 285 // {
sakthipriya 6:036d08b62785 286 // omega1[i]= data[i];
sakthipriya 6:036d08b62785 287 // b1[i] = data[i+3];
sakthipriya 6:036d08b62785 288 // }
sakthipriya 0:7b4c00e3912f 289 }//if ACS_DATA_ACQ_ENABLE = 1
sakthipriya 0:7b4c00e3912f 290 else
sakthipriya 0:7b4c00e3912f 291 {
sakthipriya 0:7b4c00e3912f 292 // Z axis actuation is the only final solution,
sakthipriya 0:7b4c00e3912f 293 }
sakthipriya 9:194afacf7449 294 if(ACS_STATE == 0) // check ACS_STATE = ACS_CONTROL_OFF?
sakthipriya 0:7b4c00e3912f 295 {
sakthipriya 0:7b4c00e3912f 296 printf("\n\r acs control off\n");
sakthipriya 0:7b4c00e3912f 297 FLAG();
sakthipriya 9:194afacf7449 298 ACS_STATUS = 0; // set ACS_STATUS = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 299 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 300 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 301 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 302 }
sakthipriya 0:7b4c00e3912f 303 else
sakthipriya 0:7b4c00e3912f 304 {
sakthipriya 1:446a959e36ce 305 if(actual_data.power_mode>1)
sakthipriya 0:7b4c00e3912f 306
sakthipriya 0:7b4c00e3912f 307 {
sakthipriya 9:194afacf7449 308 if(ACS_STATE == 2) // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 309 {
sakthipriya 0:7b4c00e3912f 310 FLAG();
sakthipriya 0:7b4c00e3912f 311 printf("\n\r z axis moment only\n");
sakthipriya 9:194afacf7449 312 ACS_STATUS = 2; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 313 // FCTN_ACS_CNTRLALGO(b1, omega1);
sakthipriya 0:7b4c00e3912f 314 moment[0] = 0;
sakthipriya 0:7b4c00e3912f 315 moment[1] = 0;
sakthipriya 0:7b4c00e3912f 316 moment[2] =1.3;// is a dummy value
sakthipriya 0:7b4c00e3912f 317 FCTN_ACS_GENPWM_MAIN(moment) ;
sakthipriya 0:7b4c00e3912f 318 }
sakthipriya 0:7b4c00e3912f 319 else
sakthipriya 0:7b4c00e3912f 320 {
sakthipriya 9:194afacf7449 321 if(ACS_STATE == 3) // check ACS_STATE = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 322 {
sakthipriya 0:7b4c00e3912f 323 FLAG();
sakthipriya 0:7b4c00e3912f 324 printf("\n\r acs data failure ");
sakthipriya 9:194afacf7449 325 ACS_STATUS = 3; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 326 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 327 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 328 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 329 }
sakthipriya 0:7b4c00e3912f 330 else
sakthipriya 0:7b4c00e3912f 331 {
sakthipriya 9:194afacf7449 332 if(ACS_STATE == 4) // check ACS_STATE = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 333 {
sakthipriya 0:7b4c00e3912f 334 FLAG();
sakthipriya 0:7b4c00e3912f 335 printf("\n\r nominal");
sakthipriya 9:194afacf7449 336 ACS_STATUS = 4; // set ACS_STATUS = ACS_NOMINAL_ONLY
sakthipriya 6:036d08b62785 337 FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual);
sakthipriya 0:7b4c00e3912f 338 printf("\n\r moment values returned by control algo \n");
sakthipriya 0:7b4c00e3912f 339 for(int i=0; i<3; i++)
sakthipriya 0:7b4c00e3912f 340 {
sakthipriya 0:7b4c00e3912f 341 printf("%f\t",moment[i]);
sakthipriya 0:7b4c00e3912f 342 }
sakthipriya 0:7b4c00e3912f 343 FCTN_ACS_GENPWM_MAIN(moment) ;
sakthipriya 0:7b4c00e3912f 344 }
sakthipriya 0:7b4c00e3912f 345 else
sakthipriya 0:7b4c00e3912f 346 {
sakthipriya 9:194afacf7449 347 if(ACS_STATE == 5) // check ACS_STATE = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 348 {
sakthipriya 0:7b4c00e3912f 349 FLAG();
sakthipriya 0:7b4c00e3912f 350 printf("\n\r auto control");
sakthipriya 9:194afacf7449 351 ACS_STATUS = 5; // set ACS_STATUS = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 352 //FCTN_ACS_AUTOCTRL_LOGIC // gotta include this code
sakthipriya 0:7b4c00e3912f 353 }
sakthipriya 0:7b4c00e3912f 354 else
sakthipriya 0:7b4c00e3912f 355 {
sakthipriya 9:194afacf7449 356 if(ACS_STATE == 6) // check ACS_STATE = ACS_DETUMBLING_ONLY
sakthipriya 0:7b4c00e3912f 357 {
sakthipriya 0:7b4c00e3912f 358 FLAG();
sakthipriya 0:7b4c00e3912f 359 printf("\n\r Entered detumbling \n");
sakthipriya 9:194afacf7449 360 ACS_STATUS = 6; // set ACS_STATUS = ACS_DETUMBLING_ONLY
sakthipriya 6:036d08b62785 361 FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual); // detumbling code has to be included
sakthipriya 0:7b4c00e3912f 362 FCTN_ACS_GENPWM_MAIN(moment) ;
sakthipriya 0:7b4c00e3912f 363 }
sakthipriya 0:7b4c00e3912f 364 else
sakthipriya 0:7b4c00e3912f 365 {
sakthipriya 0:7b4c00e3912f 366 FLAG();
sakthipriya 0:7b4c00e3912f 367 printf("\n\r invalid state");
sakthipriya 9:194afacf7449 368 ACS_STATUS = 7 ; // set ACS_STATUS = INVALID STATE
sakthipriya 0:7b4c00e3912f 369 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 370 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 371 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 372 }//else of invalid
sakthipriya 0:7b4c00e3912f 373 }//else of autocontrol
sakthipriya 0:7b4c00e3912f 374 }//else of nominal
sakthipriya 0:7b4c00e3912f 375 }//else of data acg failure
sakthipriya 0:7b4c00e3912f 376
sakthipriya 0:7b4c00e3912f 377 }//else fo z axis moment only
sakthipriya 0:7b4c00e3912f 378 }//if power >2
sakthipriya 0:7b4c00e3912f 379 else
sakthipriya 0:7b4c00e3912f 380 {
sakthipriya 0:7b4c00e3912f 381 FLAG();
sakthipriya 0:7b4c00e3912f 382 printf("\n\r low power");
sakthipriya 9:194afacf7449 383 ACS_STATUS = 1; // set ACS_STATUS = ACS_LOW_POWER
sakthipriya 0:7b4c00e3912f 384 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 385 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 386 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 387 }
sakthipriya 0:7b4c00e3912f 388 } //else for acs control off
sakthipriya 9:194afacf7449 389 ACS_MAIN_STATUS = 0; //clear ACS_MAIN_STATUS flag
sakthipriya 3:07e15677a75c 390
sakthipriya 0:7b4c00e3912f 391 }
sakthipriya 0:7b4c00e3912f 392 //***************************************************EPS THREAD***********************************************//
sakthipriya 0:7b4c00e3912f 393
sakthipriya 3:07e15677a75c 394 void F_EPS()
sakthipriya 0:7b4c00e3912f 395 {
sakthipriya 3:07e15677a75c 396
sakthipriya 0:7b4c00e3912f 397 pc.printf("\n\rEntered EPS %f\n",t_start.read());
sakthipriya 9:194afacf7449 398 EPS_MAIN_STATUS = 1; // Set EPS main status
sakthipriya 3:07e15677a75c 399 FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
sakthipriya 3:07e15677a75c 400 pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
sakthipriya 9:194afacf7449 401 EPS_BATTERY_TEMP_STATUS = 1; //set EPS_BATTERY_TEMP_STATUS
sakthipriya 9:194afacf7449 402 if(EPS_BATTERY_HEAT_ENABLE == 1)
sakthipriya 3:07e15677a75c 403 {
sakthipriya 5:bb592f3185cc 404 if((actual_data.Batt_temp_actual[0] < batt_heat_low) && (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm
sakthipriya 3:07e15677a75c 405 {
sakthipriya 3:07e15677a75c 406 batt_heat = 1; //turn on battery heater
sakthipriya 3:07e15677a75c 407 }
sakthipriya 3:07e15677a75c 408 else
sakthipriya 3:07e15677a75c 409 {
sakthipriya 3:07e15677a75c 410 batt_heat = 0; //turn off battery heater
sakthipriya 3:07e15677a75c 411 }
sakthipriya 3:07e15677a75c 412
sakthipriya 3:07e15677a75c 413 }
sakthipriya 9:194afacf7449 414 else if(EPS_BATTERY_HEAT_ENABLE == 0)
sakthipriya 3:07e15677a75c 415 {
sakthipriya 3:07e15677a75c 416 EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
sakthipriya 3:07e15677a75c 417 }
sakthipriya 0:7b4c00e3912f 418 FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
sakthipriya 1:446a959e36ce 419 if (actual_data.Batt_gauge_actual[1] == 200) //data not received
sakthipriya 0:7b4c00e3912f 420 {
sakthipriya 0:7b4c00e3912f 421 actual_data.power_mode = 1;
sakthipriya 9:194afacf7449 422 EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:7b4c00e3912f 423
sakthipriya 0:7b4c00e3912f 424 }
sakthipriya 0:7b4c00e3912f 425 else
sakthipriya 0:7b4c00e3912f 426 {
sakthipriya 1:446a959e36ce 427 FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level
sakthipriya 9:194afacf7449 428 EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:7b4c00e3912f 429 }
sakthipriya 3:07e15677a75c 430 // if( Temperature data received)
sakthipriya 3:07e15677a75c 431 //{
sakthipriya 3:07e15677a75c 432
sakthipriya 0:7b4c00e3912f 433
sakthipriya 3:07e15677a75c 434 // }
sakthipriya 3:07e15677a75c 435 // else
sakthipriya 3:07e15677a75c 436 // {
sakthipriya 3:07e15677a75c 437 // Set battery temp to XX
sakthipriya 9:194afacf7449 438 // EPS_BATTERY_TEMP_STATUS = 0; //clear EPS_BATTERY_TEMP_STATUS
sakthipriya 3:07e15677a75c 439 // EPS_STATUS = EPS_ERR_BATTERY_TEMP;
sakthipriya 3:07e15677a75c 440 // }
sakthipriya 3:07e15677a75c 441 FCTN_HK_MAIN();
sakthipriya 6:036d08b62785 442 // printf("\n\r here");
sakthipriya 5:bb592f3185cc 443 FCTN_APPEND_HKDATA();
sakthipriya 5:bb592f3185cc 444 minMaxHkData();
sakthipriya 6:036d08b62785 445 //printf("\n\r here");
sakthipriya 9:194afacf7449 446 EPS_MAIN_STATUS = 0; // clear EPS main status
sakthipriya 3:07e15677a75c 447
sakthipriya 0:7b4c00e3912f 448 }
sakthipriya 0:7b4c00e3912f 449
sakthipriya 0:7b4c00e3912f 450 //**************************************************BCN THREAD*******************************************************************//
sakthipriya 0:7b4c00e3912f 451
sakthipriya 3:07e15677a75c 452 void F_BCN()
sakthipriya 0:7b4c00e3912f 453 {
sakthipriya 3:07e15677a75c 454
sakthipriya 0:7b4c00e3912f 455 pc.printf("\n\rEntered BCN %f\n",t_start.read());
sakthipriya 0:7b4c00e3912f 456
Bragadeesh153 12:af1d7e18b868 457 FCTN_BCN_TX_MAIN();
sakthipriya 0:7b4c00e3912f 458
sakthipriya 0:7b4c00e3912f 459 }
sakthipriya 0:7b4c00e3912f 460
sakthipriya 0:7b4c00e3912f 461 //**************************************************TCTM THREAD*******************************************************************//
sakthipriya 0:7b4c00e3912f 462
sakthipriya 0:7b4c00e3912f 463 void T_TC(void const * args)
sakthipriya 0:7b4c00e3912f 464 {
sakthipriya 0:7b4c00e3912f 465 while(1)
sakthipriya 0:7b4c00e3912f 466 {
sakthipriya 0:7b4c00e3912f 467 Thread::signal_wait(0x4);
lakshya 15:e09aaaccf134 468 wait_us(200);
lakshya 15:e09aaaccf134 469 //printf("\n\rreached\n"); // can be between 38 to 15700
sakthipriya 0:7b4c00e3912f 470 if( slave.receive() == 0)
lakshya 15:e09aaaccf134 471 {slave.stop();
lakshya 15:e09aaaccf134 472 //printf("\n\rnot send\n");
lakshya 15:e09aaaccf134 473 }
sakthipriya 0:7b4c00e3912f 474 else if( slave.receive() == 1) // slave writes to master
sakthipriya 0:7b4c00e3912f 475 {
sakthipriya 5:bb592f3185cc 476 if(data_send_flag == 'h')
sakthipriya 6:036d08b62785 477 {
sakthipriya 6:036d08b62785 478 //FCTN_APPEND_HKDATA();
sakthipriya 6:036d08b62785 479 // pc.printf("\n\r here");
sakthipriya 6:036d08b62785 480 write_ack=slave.write(BAE_chardata,74);
Bragadeesh153 13:fb7facaf308b 481 if(write_ack==0)
lakshya 15:e09aaaccf134 482 {irpt_2_mstr = 0;
lakshya 15:e09aaaccf134 483 printf("\n\rgot interrupt\n");
lakshya 15:e09aaaccf134 484 }
sakthipriya 6:036d08b62785 485 }
sakthipriya 5:bb592f3185cc 486 else if(data_send_flag == 't')
sakthipriya 5:bb592f3185cc 487 {
Bragadeesh153 13:fb7facaf308b 488 write_ack=slave.write((char*)telemetry,tm_len);
sakthipriya 5:bb592f3185cc 489 data_send_flag = 'h';
Bragadeesh153 13:fb7facaf308b 490 if(write_ack==0)
Bragadeesh153 13:fb7facaf308b 491 irpt_2_mstr = 0;
sakthipriya 5:bb592f3185cc 492 }
sakthipriya 0:7b4c00e3912f 493 }
sakthipriya 0:7b4c00e3912f 494 else if( slave.receive()==3 || slave.receive()==2) // slave read
sakthipriya 0:7b4c00e3912f 495 {
sakthipriya 5:bb592f3185cc 496 read_ack=slave.read(telecommand,tc_len);
sakthipriya 7:a46a1dee4497 497 t_tc.start();
sakthipriya 6:036d08b62785 498 //pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
sakthipriya 7:a46a1dee4497 499 pc.printf("\n\r Executing Telecommand \n");
sakthipriya 3:07e15677a75c 500 // FCTN_TC_DECODE((uint8_t*) telecommand);
sakthipriya 7:a46a1dee4497 501
Bragadeesh153 13:fb7facaf308b 502 FCTN_BAE_TM_TC((uint8_t*) telecommand);
Bragadeesh153 13:fb7facaf308b 503 //telemetry = (char*)temp;
sakthipriya 7:a46a1dee4497 504
sakthipriya 5:bb592f3185cc 505 FCTN_TM();
sakthipriya 7:a46a1dee4497 506 t_tc.stop();
sakthipriya 7:a46a1dee4497 507 printf("\n\r time taken %d",t_tc.read_us());
sakthipriya 7:a46a1dee4497 508 t_tc.reset();
sakthipriya 3:07e15677a75c 509 // for(int i = 0; i<134; i++)
sakthipriya 3:07e15677a75c 510 //pc.printf("%c", telemetry[i]);
sakthipriya 0:7b4c00e3912f 511 }
sakthipriya 0:7b4c00e3912f 512
sakthipriya 6:036d08b62785 513
sakthipriya 0:7b4c00e3912f 514 }
sakthipriya 0:7b4c00e3912f 515 }
sakthipriya 0:7b4c00e3912f 516
sakthipriya 0:7b4c00e3912f 517 void FCTN_TM()
sakthipriya 0:7b4c00e3912f 518 {
sakthipriya 4:39a4ae8c7ecd 519 //irpt_2_mstr = 0;
sakthipriya 5:bb592f3185cc 520 data_send_flag = 't';
sakthipriya 0:7b4c00e3912f 521 pc.printf("\n\r Telemetry Generation \n");
sakthipriya 0:7b4c00e3912f 522 irpt_2_mstr = 1;
sakthipriya 0:7b4c00e3912f 523 }
sakthipriya 0:7b4c00e3912f 524
sakthipriya 0:7b4c00e3912f 525
sakthipriya 0:7b4c00e3912f 526 //******************************************************* I2C *******************************************************************//
sakthipriya 0:7b4c00e3912f 527
sakthipriya 0:7b4c00e3912f 528 void FCTN_I2C_ISR()
sakthipriya 0:7b4c00e3912f 529 {
sakthipriya 0:7b4c00e3912f 530 ptr_t_i2c->signal_set(0x4);
sakthipriya 0:7b4c00e3912f 531 }
sakthipriya 0:7b4c00e3912f 532
sakthipriya 0:7b4c00e3912f 533
sakthipriya 5:bb592f3185cc 534 //***********************************************************FAULTS***************************************************************//
sakthipriya 5:bb592f3185cc 535 /*void ir1clear()
sakthipriya 5:bb592f3185cc 536 {
sakthipriya 5:bb592f3185cc 537 actual_data.faultIr_status |= 0x01; // alert
sakthipriya 5:bb592f3185cc 538
sakthipriya 5:bb592f3185cc 539 }*/
sakthipriya 5:bb592f3185cc 540
sakthipriya 5:bb592f3185cc 541
sakthipriya 5:bb592f3185cc 542
sakthipriya 5:bb592f3185cc 543 void ir2clear()
sakthipriya 5:bb592f3185cc 544 {
sakthipriya 5:bb592f3185cc 545 actual_data.faultIr_status |= 0x02;
Bragadeesh153 13:fb7facaf308b 546 TRXY_SW = 0; // Switch off TR XY
sakthipriya 5:bb592f3185cc 547 if1check = 1;
sakthipriya 5:bb592f3185cc 548 }
sakthipriya 5:bb592f3185cc 549
sakthipriya 5:bb592f3185cc 550 void ir3clear()
sakthipriya 5:bb592f3185cc 551 {
sakthipriya 5:bb592f3185cc 552 actual_data.faultIr_status |= 0x04;
Bragadeesh153 13:fb7facaf308b 553 DRV_Z_EN = 0;
sakthipriya 5:bb592f3185cc 554 wait_us(1);
Bragadeesh153 13:fb7facaf308b 555 DRV_Z_EN = 1;
sakthipriya 5:bb592f3185cc 556
sakthipriya 5:bb592f3185cc 557 }
sakthipriya 5:bb592f3185cc 558
sakthipriya 5:bb592f3185cc 559 void ir4clear()
sakthipriya 5:bb592f3185cc 560 {
sakthipriya 5:bb592f3185cc 561 if2check = 1;
sakthipriya 5:bb592f3185cc 562 actual_data.faultIr_status |= 0x08;
sakthipriya 5:bb592f3185cc 563 TRZ_SW = 0;
sakthipriya 5:bb592f3185cc 564 }
sakthipriya 5:bb592f3185cc 565
sakthipriya 5:bb592f3185cc 566 void ir5clear()
sakthipriya 5:bb592f3185cc 567 {
sakthipriya 5:bb592f3185cc 568 actual_data.faultIr_status |= 0x10;
sakthipriya 5:bb592f3185cc 569 CDMS_RESET = 0;
sakthipriya 5:bb592f3185cc 570 wait_us(1);
sakthipriya 5:bb592f3185cc 571 CDMS_RESET = 1;
sakthipriya 5:bb592f3185cc 572 }
sakthipriya 5:bb592f3185cc 573
sakthipriya 5:bb592f3185cc 574 void ir6clear()
sakthipriya 5:bb592f3185cc 575 {
sakthipriya 5:bb592f3185cc 576 actual_data.faultIr_status |= 0x20;
sakthipriya 5:bb592f3185cc 577 BCN_SW = 0;
sakthipriya 5:bb592f3185cc 578 wait_us(1);
sakthipriya 5:bb592f3185cc 579 BCN_SW = 1;
sakthipriya 5:bb592f3185cc 580 }
sakthipriya 5:bb592f3185cc 581
sakthipriya 5:bb592f3185cc 582 void ir7clear()
sakthipriya 5:bb592f3185cc 583 {
sakthipriya 5:bb592f3185cc 584 actual_data.faultIr_status |= 0x40;
sakthipriya 5:bb592f3185cc 585 }
sakthipriya 5:bb592f3185cc 586 uint8_t iter2=0,iter4 = 0;
sakthipriya 5:bb592f3185cc 587
sakthipriya 5:bb592f3185cc 588
sakthipriya 5:bb592f3185cc 589
sakthipriya 5:bb592f3185cc 590 void pollfault()
sakthipriya 5:bb592f3185cc 591 {
sakthipriya 5:bb592f3185cc 592
sakthipriya 5:bb592f3185cc 593
sakthipriya 5:bb592f3185cc 594
sakthipriya 5:bb592f3185cc 595 if (pf1==0) // OC_ATS1
sakthipriya 5:bb592f3185cc 596 {
sakthipriya 5:bb592f3185cc 597 pf1check=1;
sakthipriya 5:bb592f3185cc 598 actual_data.faultPoll_status |=0x01 ;
sakthipriya 9:194afacf7449 599 ATS1_SW_ENABLE = 1; // turn off ats1 // to be turned on next cycle in ACS
sakthipriya 5:bb592f3185cc 600 }
sakthipriya 5:bb592f3185cc 601 else actual_data.faultPoll_status &= 0xFE;
sakthipriya 5:bb592f3185cc 602
sakthipriya 5:bb592f3185cc 603 if (pf2==0)
sakthipriya 5:bb592f3185cc 604 {
sakthipriya 5:bb592f3185cc 605 pf2check=1;
sakthipriya 5:bb592f3185cc 606 actual_data.faultPoll_status |=0x02 ;
sakthipriya 9:194afacf7449 607 ATS2_SW_ENABLE = 1; // turn off ats2 // turn on in ACS
sakthipriya 5:bb592f3185cc 608 }
sakthipriya 5:bb592f3185cc 609 else actual_data.faultPoll_status &= 0xFD;
sakthipriya 5:bb592f3185cc 610
sakthipriya 5:bb592f3185cc 611 if (pf3==0)
sakthipriya 5:bb592f3185cc 612 { actual_data.faultPoll_status |=0x04 ;
Bragadeesh153 13:fb7facaf308b 613 DRV_XY_EN = 0;
sakthipriya 5:bb592f3185cc 614 wait_us(1);
Bragadeesh153 13:fb7facaf308b 615 DRV_XY_EN = 1;
sakthipriya 5:bb592f3185cc 616 }
sakthipriya 5:bb592f3185cc 617 else actual_data.faultPoll_status &= 0xFB;
sakthipriya 5:bb592f3185cc 618
sakthipriya 5:bb592f3185cc 619
sakthipriya 5:bb592f3185cc 620
sakthipriya 5:bb592f3185cc 621
sakthipriya 5:bb592f3185cc 622 /*if (ir1==1)
sakthipriya 5:bb592f3185cc 623 {
sakthipriya 5:bb592f3185cc 624 actual_data.faultIr_status &=0xFE;
sakthipriya 5:bb592f3185cc 625 }*/
lakshya 14:a9588f443f1a 626
sakthipriya 5:bb592f3185cc 627 if (ir2==1)
sakthipriya 5:bb592f3185cc 628 {
sakthipriya 5:bb592f3185cc 629 actual_data.faultIr_status &=0xFD;
sakthipriya 5:bb592f3185cc 630 }
sakthipriya 5:bb592f3185cc 631 if (ir3==1)
sakthipriya 5:bb592f3185cc 632 {
sakthipriya 5:bb592f3185cc 633 actual_data.faultIr_status &=0xFB;
sakthipriya 5:bb592f3185cc 634 }
sakthipriya 5:bb592f3185cc 635 if (ir4==1)
sakthipriya 5:bb592f3185cc 636 {
sakthipriya 5:bb592f3185cc 637 actual_data.faultIr_status &=0xF7;
sakthipriya 5:bb592f3185cc 638 }
sakthipriya 5:bb592f3185cc 639 if (ir5==1)
sakthipriya 5:bb592f3185cc 640 {
sakthipriya 5:bb592f3185cc 641 actual_data.faultIr_status &=0xEF;
sakthipriya 5:bb592f3185cc 642 }
sakthipriya 5:bb592f3185cc 643 if (ir6==1)
sakthipriya 5:bb592f3185cc 644 {
sakthipriya 5:bb592f3185cc 645 actual_data.faultIr_status &=0xDF;
sakthipriya 5:bb592f3185cc 646 }if (ir7==1)
sakthipriya 5:bb592f3185cc 647 {
sakthipriya 5:bb592f3185cc 648 actual_data.faultIr_status &=0xBF;
sakthipriya 5:bb592f3185cc 649 }
lakshya 14:a9588f443f1a 650
sakthipriya 5:bb592f3185cc 651
sakthipriya 5:bb592f3185cc 652 }
sakthipriya 5:bb592f3185cc 653
sakthipriya 5:bb592f3185cc 654
sakthipriya 0:7b4c00e3912f 655 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:7b4c00e3912f 656 //SCHEDULER
sakthipriya 0:7b4c00e3912f 657 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:7b4c00e3912f 658 uint8_t schedcount=1;
sakthipriya 0:7b4c00e3912f 659 void T_SC(void const *args)
sakthipriya 0:7b4c00e3912f 660 {
sakthipriya 0:7b4c00e3912f 661 printf("\n\r in scheduler");
sakthipriya 0:7b4c00e3912f 662
sakthipriya 0:7b4c00e3912f 663 if(schedcount == 7) //to reset the counter
sakthipriya 0:7b4c00e3912f 664 {
sakthipriya 0:7b4c00e3912f 665 schedcount = 1;
sakthipriya 0:7b4c00e3912f 666 }
sakthipriya 0:7b4c00e3912f 667 if(schedcount%1==0)
lakshya 14:a9588f443f1a 668 { pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE);
lakshya 14:a9588f443f1a 669 pc.printf("\niterp1 !!!!!! = %x !!\n",iterP1);
lakshya 14:a9588f443f1a 670 pc.printf("\niteri2 IS !!!!!! = %x !!\n",iterI2);
lakshya 14:a9588f443f1a 671 F_ACS();
sakthipriya 0:7b4c00e3912f 672 }
sakthipriya 0:7b4c00e3912f 673
sakthipriya 0:7b4c00e3912f 674 if(schedcount%2==0)
sakthipriya 0:7b4c00e3912f 675 {
Bragadeesh153 13:fb7facaf308b 676 // F_EPS();
sakthipriya 0:7b4c00e3912f 677 }
lakshya 14:a9588f443f1a 678 if(schedcount%1==0)
sakthipriya 0:7b4c00e3912f 679 {
Bragadeesh153 12:af1d7e18b868 680 F_BCN();
sakthipriya 0:7b4c00e3912f 681 }
sakthipriya 0:7b4c00e3912f 682 schedcount++;
sakthipriya 0:7b4c00e3912f 683 printf("\n\r exited scheduler");
sakthipriya 0:7b4c00e3912f 684 }
sakthipriya 0:7b4c00e3912f 685
sakthipriya 0:7b4c00e3912f 686 Timer t_flag;
sakthipriya 0:7b4c00e3912f 687 void FLAG()
sakthipriya 0:7b4c00e3912f 688 {
sakthipriya 0:7b4c00e3912f 689
sakthipriya 0:7b4c00e3912f 690 //.............acs..................//
sakthipriya 9:194afacf7449 691 if(ACS_INIT_STATUS == 1)
sakthipriya 0:7b4c00e3912f 692 BAE_STATUS = BAE_STATUS | 0x00000080; //set ACS_INIT_STATUS flag
sakthipriya 9:194afacf7449 693 else if(ACS_INIT_STATUS == 0)
sakthipriya 0:7b4c00e3912f 694 BAE_STATUS &= 0xFFFFFF7F; //clear ACS_INIT_STATUS flag
sakthipriya 0:7b4c00e3912f 695
sakthipriya 9:194afacf7449 696 if(ACS_DATA_ACQ_STATUS == 1)
sakthipriya 0:7b4c00e3912f 697 BAE_STATUS =BAE_STATUS | 0x00000100; //set ACS_DATA_ACQ_STATUS flag
sakthipriya 9:194afacf7449 698 else if(ACS_DATA_ACQ_STATUS == 0)
sakthipriya 0:7b4c00e3912f 699 BAE_STATUS &= 0xFFFFFEFF; //clear ACS_DATA_ACQ_STATUS flag
sakthipriya 0:7b4c00e3912f 700
sakthipriya 9:194afacf7449 701 if(ACS_ATS_ENABLE == 1)
sakthipriya 0:7b4c00e3912f 702 BAE_ENABLE |= 0x00000004;
sakthipriya 9:194afacf7449 703 else if(ACS_ATS_ENABLE == 0)
sakthipriya 0:7b4c00e3912f 704 BAE_ENABLE = BAE_ENABLE &0xFFFFFFFB | 0x00000004;
sakthipriya 0:7b4c00e3912f 705
sakthipriya 0:7b4c00e3912f 706 if(ACS_DATA_ACQ_STATUS == 'f')
sakthipriya 0:7b4c00e3912f 707 BAE_STATUS |= 0x00000200;
sakthipriya 0:7b4c00e3912f 708
sakthipriya 9:194afacf7449 709 if(ACS_MAIN_STATUS == 1)
sakthipriya 0:7b4c00e3912f 710 BAE_STATUS = (BAE_STATUS | 0x00001000); //set ACS_MAIN_STATUS flag
sakthipriya 9:194afacf7449 711 else if(ACS_MAIN_STATUS == 0)
sakthipriya 0:7b4c00e3912f 712 BAE_STATUS &= 0xFFFFEFFF; //clear ACS_MAIN_STATUS flag
sakthipriya 0:7b4c00e3912f 713
sakthipriya 0:7b4c00e3912f 714 if(ACS_STATUS == '0')
sakthipriya 0:7b4c00e3912f 715 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF); // set ACS_STATUS = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 716 else if(ACS_STATUS == '1')
sakthipriya 0:7b4c00e3912f 717 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x00002000; // set ACS_STATUS = ACS_LOW_POWER
sakthipriya 0:7b4c00e3912f 718 else if(ACS_STATUS == '2')
sakthipriya 0:7b4c00e3912f 719 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF)| 0x00004000; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 720 else if(ACS_STATUS == '3')
sakthipriya 0:7b4c00e3912f 721 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF) | 0x00006000; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 722 else if(ACS_STATUS == '4')
sakthipriya 0:7b4c00e3912f 723 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF) | 0x00008000; // set ACS_STATUS = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 724 else if(ACS_STATUS == '5')
sakthipriya 0:7b4c00e3912f 725 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000A000; // set ACS_STATUS = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 726 else if(ACS_STATUS == '6')
sakthipriya 0:7b4c00e3912f 727 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000C000; // set ACS_STATUS = ACS_DETUMBLING_ONLY
sakthipriya 0:7b4c00e3912f 728 else
sakthipriya 0:7b4c00e3912f 729 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000E000; // set ACS_STATUS = INVALID STATE
sakthipriya 0:7b4c00e3912f 730
sakthipriya 0:7b4c00e3912f 731 if(ACS_STATE == '0')
sakthipriya 0:7b4c00e3912f 732 BAE_ENABLE = (BAE_ENABLE & 0xFFFFFF8F); //ACS_STATE = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 733 else if(ACS_STATE == '2')
sakthipriya 0:7b4c00e3912f 734 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000020); // ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 735 else if(ACS_STATE == '3')
sakthipriya 0:7b4c00e3912f 736 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000030); // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 737 else if(ACS_STATE == '4')
sakthipriya 0:7b4c00e3912f 738 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000040); // ACS_STATE = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 739 else if(ACS_STATE == '5')
sakthipriya 0:7b4c00e3912f 740 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000050); // ACS_STATE = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 741 else if(ACS_STATE == '6')
sakthipriya 0:7b4c00e3912f 742 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000060); //ACS_STATE = ACS_DETUMBLING_CONTROL
sakthipriya 0:7b4c00e3912f 743
sakthipriya 0:7b4c00e3912f 744 //...............eps......................//
sakthipriya 5:bb592f3185cc 745
sakthipriya 5:bb592f3185cc 746
sakthipriya 9:194afacf7449 747 if (EPS_INIT_STATUS==1) // Set EPS_INIT_STATUS
sakthipriya 5:bb592f3185cc 748 BAE_STATUS |= 0x00010000;
sakthipriya 9:194afacf7449 749 else if(EPS_INIT_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 750 BAE_STATUS &= 0xFFFEFFFF;
sakthipriya 5:bb592f3185cc 751
sakthipriya 5:bb592f3185cc 752
sakthipriya 9:194afacf7449 753 if (EPS_MAIN_STATUS==1) // Set EPS_MAIIN_STATUS
sakthipriya 5:bb592f3185cc 754 BAE_STATUS |= 0x00040000;
sakthipriya 9:194afacf7449 755 else if(EPS_MAIN_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 756 BAE_STATUS &= 0xFFFBFFFF;
sakthipriya 5:bb592f3185cc 757
sakthipriya 5:bb592f3185cc 758
sakthipriya 9:194afacf7449 759 if (EPS_BATTERY_GAUGE_STATUS==1) // Set EPS_BATTERY_GAUGE_STATUS
sakthipriya 5:bb592f3185cc 760 BAE_STATUS |= 0x00020000;
sakthipriya 9:194afacf7449 761 else if(EPS_BATTERY_GAUGE_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 762 BAE_STATUS &= 0xFFFDFFFF;
sakthipriya 5:bb592f3185cc 763
sakthipriya 5:bb592f3185cc 764
sakthipriya 9:194afacf7449 765 if (EPS_BATTERY_TEMP_STATUS==1) // Set EPS_BATTERY_TEMP_STATUS
sakthipriya 5:bb592f3185cc 766 BAE_STATUS |= 0x00080000;
sakthipriya 9:194afacf7449 767 else if(EPS_BATTERY_TEMP_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 768 BAE_STATUS &= 0xFFF7FFFF;
sakthipriya 5:bb592f3185cc 769
sakthipriya 5:bb592f3185cc 770 if (EPS_STATUS==0)
sakthipriya 5:bb592f3185cc 771 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF); // Set EPS_ERR_BATTERY_TEMP
sakthipriya 5:bb592f3185cc 772 else if (EPS_STATUS==1)
sakthipriya 5:bb592f3185cc 773 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00010000; // Set EPS_BATTERY_HEATER_DISABLED
sakthipriya 5:bb592f3185cc 774 else if (EPS_STATUS==2)
sakthipriya 5:bb592f3185cc 775 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00020000; // Set EPS_ERR_HEATER_SWITCH_OFF
sakthipriya 5:bb592f3185cc 776 else if (EPS_STATUS==3)
sakthipriya 5:bb592f3185cc 777 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00030000; // Set EPS_ERR_HEATER_SWITCH_ON
sakthipriya 5:bb592f3185cc 778 else if (EPS_STATUS==4)
sakthipriya 5:bb592f3185cc 779 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00040000; // Set EPS_BATTERY_HEATER_OFF
sakthipriya 5:bb592f3185cc 780 else if (EPS_STATUS==5)
sakthipriya 5:bb592f3185cc 781 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000; // Set EPS_BATTERY_HEATER_ON
sakthipriya 5:bb592f3185cc 782
sakthipriya 5:bb592f3185cc 783
sakthipriya 9:194afacf7449 784 if(EPS_BATTERY_HEAT_ENABLE == 1)
sakthipriya 5:bb592f3185cc 785 BAE_ENABLE |= 0x00000080;
sakthipriya 9:194afacf7449 786 else if(EPS_BATTERY_HEAT_ENABLE == 0)
sakthipriya 5:bb592f3185cc 787 BAE_ENABLE = BAE_ENABLE &0xFFFFFF7;
sakthipriya 3:07e15677a75c 788
sakthipriya 0:7b4c00e3912f 789
sakthipriya 0:7b4c00e3912f 790
sakthipriya 0:7b4c00e3912f 791 pc.printf("\n\r BAE status %x BAE ENABLE %x ",BAE_STATUS,BAE_ENABLE);
sakthipriya 0:7b4c00e3912f 792 }
sakthipriya 0:7b4c00e3912f 793
sakthipriya 0:7b4c00e3912f 794 void FCTN_BAE_INIT()
sakthipriya 0:7b4c00e3912f 795 {
sakthipriya 0:7b4c00e3912f 796 printf("\n\r Initialising BAE ");
sakthipriya 3:07e15677a75c 797 //..........intial status....//
Bragadeesh153 13:fb7facaf308b 798 ACS_STATE = 4;
sakthipriya 9:194afacf7449 799 ACS_ATS_ENABLE = 1;
sakthipriya 9:194afacf7449 800 ACS_DATA_ACQ_ENABLE = 1;
sakthipriya 9:194afacf7449 801 EPS_BATTERY_HEAT_ENABLE = 1;
Bragadeesh153 13:fb7facaf308b 802 actual_data.power_mode=3;
sakthipriya 9:194afacf7449 803 //............intializing pins................//
sakthipriya 9:194afacf7449 804 ATS1_SW_ENABLE = 0;
sakthipriya 9:194afacf7449 805 ATS2_SW_ENABLE = 1;
Bragadeesh153 13:fb7facaf308b 806
Bragadeesh153 13:fb7facaf308b 807 DRV_XY_EN = 1;
Bragadeesh153 13:fb7facaf308b 808 DRV_Z_EN = 1;
Bragadeesh153 13:fb7facaf308b 809 TRZ_SW = 1;
Bragadeesh153 13:fb7facaf308b 810 TRXY_SW = 1;
sakthipriya 9:194afacf7449 811
sakthipriya 3:07e15677a75c 812 //............................//
sakthipriya 3:07e15677a75c 813 FCTN_ACS_INIT();
Bragadeesh153 13:fb7facaf308b 814 // FCTN_EPS_INIT();
lakshya 14:a9588f443f1a 815 //FCTN_BCN_INIT();
sakthipriya 3:07e15677a75c 816
sakthipriya 3:07e15677a75c 817
sakthipriya 0:7b4c00e3912f 818 FLAG();
sakthipriya 0:7b4c00e3912f 819 }
sakthipriya 0:7b4c00e3912f 820
sakthipriya 0:7b4c00e3912f 821 int main()
sakthipriya 0:7b4c00e3912f 822 {
sakthipriya 0:7b4c00e3912f 823 pc.printf("\n\r BAE Activated. Testing Version 1.1 \n");
Bragadeesh153 13:fb7facaf308b 824 CDMS_RESET = 1;
lakshya 14:a9588f443f1a 825 /*if (BCN_FEN == 0) //dummy implementation
sakthipriya 0:7b4c00e3912f 826 {
sakthipriya 0:7b4c00e3912f 827 pc.printf("\n\r RF silence ");
Bragadeesh153 12:af1d7e18b868 828 FCTN_BCN_FEN();
sakthipriya 0:7b4c00e3912f 829 t_rfsilence.start();//Start the timer for RF_Silence
sakthipriya 0:7b4c00e3912f 830 while(t_rfsilence.read() < RF_SILENCE_TIME);
sakthipriya 0:7b4c00e3912f 831 }
sakthipriya 0:7b4c00e3912f 832 */
sakthipriya 3:07e15677a75c 833
sakthipriya 9:194afacf7449 834 //ACS_INIT_STATUS = 0;
sakthipriya 9:194afacf7449 835 //ACS_DATA_ACQ_STATUS = 0;
Bragadeesh153 13:fb7facaf308b 836
Bragadeesh153 13:fb7facaf308b 837
sakthipriya 9:194afacf7449 838
Bragadeesh153 13:fb7facaf308b 839 //FLAG();
sakthipriya 0:7b4c00e3912f 840 FCTN_BAE_INIT();
sakthipriya 3:07e15677a75c 841
sakthipriya 0:7b4c00e3912f 842
sakthipriya 0:7b4c00e3912f 843 //...i2c..
sakthipriya 3:07e15677a75c 844 //strcpy(telemetry,"This is telemetry THis is sample telemetry. ffffffffffffffffffffffffffffff end");
sakthipriya 0:7b4c00e3912f 845 slave.address(addr);
sakthipriya 0:7b4c00e3912f 846 irpt_2_mstr = 0;
sakthipriya 0:7b4c00e3912f 847
sakthipriya 0:7b4c00e3912f 848 ptr_t_i2c = new Thread(T_TC);
sakthipriya 0:7b4c00e3912f 849 ptr_t_i2c->set_priority(osPriorityHigh);
sakthipriya 5:bb592f3185cc 850
sakthipriya 0:7b4c00e3912f 851 irpt_4m_mstr.enable_irq();
sakthipriya 0:7b4c00e3912f 852 irpt_4m_mstr.rise(&FCTN_I2C_ISR);
sakthipriya 5:bb592f3185cc 853 // ir1.fall(&ir1clear); //Battery Gauge - Alert Bar Signal
lakshya 14:a9588f443f1a 854 /* ir2.fall(&ir2clear); //TRXY Driver TR switch Fault
lakshya 14:a9588f443f1a 855 ir3.fall(&ir3clear); //TRZ Driver Fault Bar
lakshya 14:a9588f443f1a 856 ir4.fall(&ir4clear); //TRZ Driver TR switch Fault
lakshya 14:a9588f443f1a 857 ir5.fall(&ir5clear); //CDMS - Switch Fault
lakshya 14:a9588f443f1a 858 ir6.fall(&ir6clear); //Beacon- Switch OC bar
lakshya 14:a9588f443f1a 859 ir7.fall(&ir7clear); //Charger IC - Fault Bar
lakshya 14:a9588f443f1a 860
lakshya 14:a9588f443f1a 861 */
sakthipriya 0:7b4c00e3912f 862 RtosTimer t_sc_timer(T_SC,osTimerPeriodic); // Initiating the scheduler thread
sakthipriya 0:7b4c00e3912f 863 t_sc_timer.start(10000);
sakthipriya 0:7b4c00e3912f 864 t_start.start();
sakthipriya 0:7b4c00e3912f 865 pc.printf("\n\rStarted scheduler %f\n\r",t_start.read());
sakthipriya 0:7b4c00e3912f 866
Bragadeesh153 13:fb7facaf308b 867
sakthipriya 0:7b4c00e3912f 868 //FCTN_BAE_INIT();
sakthipriya 0:7b4c00e3912f 869 while(1); //required to prevent main from terminating
sakthipriya 3:07e15677a75c 870 }
sakthipriya 3:07e15677a75c 871