ACS completed fully. All cases to be tested

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of ACS_Flowchart_BAE by Team Fox

Committer:
Bragadeesh153
Date:
Mon Jun 13 13:44:31 2016 +0000
Revision:
18:21740620c65e
Parent:
17:1e1955f3db75
ACS algo commissioning done, Hardware comissioning yet to be finalised

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