![](/media/cache/group/nine_tails_kurama_by_zubair43-d4zyf5s.jpg.50x50_q85.jpg)
ACS data acq changed completely. Tested and working. Deals all faults.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of QM_BAE_review_1 by
Diff: main.cpp
- Revision:
- 3:07e15677a75c
- Parent:
- 1:446a959e36ce
- Child:
- 4:39a4ae8c7ecd
diff -r c823d84b4cb0 -r 07e15677a75c main.cpp --- a/main.cpp Fri Dec 25 15:25:44 2015 +0000 +++ b/main.cpp Tue Dec 29 05:14:39 2015 +0000 @@ -59,7 +59,7 @@ bool write_ack = 1; bool read_ack = 1; char telecommand[tc_len]; -char telemetry[tm_len]; +char* telemetry; char data_send_flag = 'h'; //*****************************************************Assigning pins******************************************************// @@ -77,19 +77,20 @@ /*****************************************************************Threads USed***********************************************************************************/ -Thread *ptr_t_acs; -Thread *ptr_t_eps; -Thread *ptr_t_bcn; + Thread *ptr_t_i2c; /*********************************************************FCTN HEADERS***********************************************************************************/ void FCTN_ISR_I2C(); void FCTN_TM(); +void F_ACS(); +void F_EPS(); +void F_BCN(); //*******************************************ACS THREAD**************************************************// -void T_ACS(void const *args) +void F_ACS() { float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246}; //b1[3] = {22, 22,10}; @@ -97,10 +98,9 @@ // gpo1 = 0; // att sens2 switch is disabled // gpo2 = 0; // att sens switch is disabled - while(1) - { + - Thread::signal_wait(0x1); + //Thread::signal_wait(0x1); ACS_MAIN_STATUS = 's'; //set ACS_MAIN_STATUS flag PWM1 = 0; //clear pwm pins PWM2 = 0; //clear pwm pins @@ -231,21 +231,34 @@ ACS_MAIN_STATUS = 'c'; //clear ACS_MAIN_STATUS flag - }//while ends - - + } //***************************************************EPS THREAD***********************************************// -void T_EPS(void const *args) +void F_EPS() { - while(1) - { - Thread::signal_wait(0x2); + pc.printf("\n\rEntered EPS %f\n",t_start.read()); EPS_MAIN_STATUS = 's'; // Set EPS main status - //FCTN_READ_HK(); - //FCTN_APPEND_HKDATA(); + FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual); + pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]); + EPS_BATTERY_TEMP_STATUS = 's'; //set EPS_BATTERY_TEMP_STATUS + if(EPS_BATTERY_HEAT_ENABLE == 'e') + { + if((actual_data.Batt_temp_actual[0] < batt_heat_low) & (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm + { + batt_heat = 1; //turn on battery heater + } + else + { + batt_heat = 0; //turn off battery heater + } + + } + else if(EPS_BATTERY_HEAT_ENABLE == 'd') + { + EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED + } FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual); if (actual_data.Batt_gauge_actual[1] == 200) //data not received { @@ -258,52 +271,33 @@ FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level EPS_BATTERY_GAUGE_STATUS = 's'; //set EPS_BATTERY_GAUGE_STATUS } - /* if( Temperature data received) - { - FCTN_BATT_TEMP_SENSOR_MAIN(); - EPS_BATTERY_TEMP_STATUS = 's'; //set EPS_BATTERY_TEMP_STATUS - if(EPS_BATTERY_HEAT_ENABLE = 'e') - { - if(actual_data.Batt_temp_actual[0] < batt_heat_low) - { - batt_heat = 1; //turn on battery heater - } - else - { - batt_heat = 0; //turn off battery heater - } - - } - else if(EPS_BATTERY_HEAT_ENABLE = 'd) - { - EPS_STATUS = EPS_BATTERY_HEATER_DISABLED; - } + // if( Temperature data received) + //{ + - } - else - { - Set battery temp to XX - EPS_BATTERY_TEMP_STATUS = 'c'; //clear EPS_BATTERY_TEMP_STATUS - EPS_STATUS = EPS_ERR_BATTERY_TEMP; - } + // } +// else +// { +// Set battery temp to XX +// EPS_BATTERY_TEMP_STATUS = 'c'; //clear EPS_BATTERY_TEMP_STATUS +// EPS_STATUS = EPS_ERR_BATTERY_TEMP; +// } + FCTN_HK_MAIN(); + //FCTN_APPEND_HKDATA(); + //minMaxHkData(); - EPS_MAIN_STATUS = 'c'; // clear EPS main status */ - - } - + EPS_MAIN_STATUS = 'c'; // clear EPS main status + } //**************************************************BCN THREAD*******************************************************************// -void T_BCN(void const *args) +void F_BCN() { - while(1) - { - Thread::signal_wait(0x3); + pc.printf("\n\rEntered BCN %f\n",t_start.read()); P_BCN_TX_MAIN(); - } } @@ -319,15 +313,19 @@ slave.stop(); else if( slave.receive() == 1) // slave writes to master { - write_ack=slave.write(telemetry,tm_len); + write_ack=slave.write((char*)telemetry,tm_len); } else if( slave.receive()==3 || slave.receive()==2) // slave read { read_ack=slave.read(telecommand,tc_len); pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand); pc.printf("\n\r Executing Telecommand \n"); - FCTN_TC_DECODE((uint8_t*) telecommand); + // FCTN_TC_DECODE((uint8_t*) telecommand); + uint8_t* temp = FCTN_BAE_TM_TC((uint8_t*) telecommand); + telemetry = (char*)temp; FCTN_TM(); + // for(int i = 0; i<134; i++) + //pc.printf("%c", telemetry[i]); } } @@ -363,17 +361,16 @@ } if(schedcount%1==0) { - //ptr_t_acs -> signal_set(0x1); + F_ACS(); } if(schedcount%2==0) { - ptr_t_eps -> signal_set(0x2); - + F_EPS(); } if(schedcount%3==0) { - //ptr_t_bcn -> signal_set(0x3); + // F_BCN(); } schedcount++; printf("\n\r exited scheduler"); @@ -446,6 +443,8 @@ BAE_STATUS &= 0xFFFDFFFF; //clear EPS_BATTERY_GAUGE_STATUS else if(EPS_BATTERY_GAUGE_STATUS == 's') BAE_STATUS |= 0x00020000; //set EPS_BATTERY_GAUGE_STATUS + + pc.printf("\n\r BAE status %x BAE ENABLE %x ",BAE_STATUS,BAE_ENABLE); @@ -454,9 +453,17 @@ void FCTN_BAE_INIT() { printf("\n\r Initialising BAE "); - // FCTN_ACS_INIT(); + //..........intial status....// + ACS_STATE = '4'; + ACS_ATS_ENABLE = 'e'; + ACS_DATA_ACQ_ENABLE = 'e'; + EPS_BATTERY_HEAT_ENABLE = 'e'; + //............................// + FCTN_ACS_INIT(); FCTN_EPS_INIT(); //P_BCN_INIT(); + + FLAG(); } @@ -472,28 +479,21 @@ while(t_rfsilence.read() < RF_SILENCE_TIME); } */ - ACS_STATE = '4'; + //ACS_INIT_STATUS = 'c'; //ACS_DATA_ACQ_STATUS = 'c'; gpo1 = 0; FLAG(); FCTN_BAE_INIT(); - ACS_ATS_ENABLE = 'e'; - ACS_DATA_ACQ_ENABLE = 'e'; + //...i2c.. - strcpy(telemetry,"This is telemetry THis is sample telemetry. ffffffffffffffffffffffffffffff end"); + //strcpy(telemetry,"This is telemetry THis is sample telemetry. ffffffffffffffffffffffffffffff end"); slave.address(addr); irpt_2_mstr = 0; ptr_t_i2c = new Thread(T_TC); ptr_t_i2c->set_priority(osPriorityHigh); - ptr_t_acs = new Thread(T_ACS); - ptr_t_acs->set_priority(osPriorityAboveNormal); - ptr_t_eps = new Thread(T_EPS); - ptr_t_eps->set_priority(osPriorityAboveNormal); - ptr_t_bcn = new Thread(T_BCN); - ptr_t_bcn->set_priority(osPriorityAboveNormal); irpt_4m_mstr.enable_irq(); irpt_4m_mstr.rise(&FCTN_I2C_ISR); @@ -505,4 +505,5 @@ gpo1 = 0; // att sens2 switch is enabled //FCTN_BAE_INIT(); while(1); //required to prevent main from terminating -} \ No newline at end of file +} +