
CDMS code for testing sbc
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Revision 224:3ac1f91e0ebc, committed 2016-07-04
- Comitter:
- chaithanyarss
- Date:
- Mon Jul 04 14:31:30 2016 +0000
- Parent:
- 210:f4acf895b598
- Child:
- 225:e6a3ffe4a530
- Child:
- 227:05e929bdd4dc
- Commit message:
- Tcs testing. HK and sci working;
Changed in this revision
--- a/CDMS_HK.h Sat Jul 02 15:28:21 2016 +0000 +++ b/CDMS_HK.h Mon Jul 04 14:31:30 2016 +0000 @@ -1,11 +1,4 @@ -//CDMS HK - #define COMRX_ALIVE 0xFF - #define COMRX_DEAD 0x00 - #define DEVICE_ENABLED 0x00 - #define DEVICE_POWERED 0x01 - #define DEVICE_OC_FAULT 0x02 - #define DEVICE_DISABLED 0x03 void FCTN_CDMS_HK_MAIN(); void FCTN_CDMS_HK(); @@ -20,8 +13,6 @@ void minMaxHkData(); void COLLECT_CDMS_RAM(); -Serial hk_cdms(USBTX, USBRX); - AnalogIn TempInput(PIN27); // Input from Current Multiplexer AnalogIn CDMS_temp_sensor(PIN53); AnalogIn COMRX_RSSI_volatge(PIN70); @@ -34,120 +25,117 @@ void FCTN_CDMS_HK_MAIN(void const *args) { + gPC.printf("Entering HK thread"); + unsigned char CDMS_HK_FRAME[134] = {0}; + char BAE_HK[128] = {0}; + uint8_t convoluted_CDMS_HK[270]; + uint8_t interleave_CDMS_HK[288]; + uint8_t CDMS_HEALTH_FINAL[512] = {0}; + uint8_t convoluted_BAE_HK[270]; + uint8_t interleave_BAE_HK[288]; + uint8_t BAE_HEALTH_FINAL[512] = {0}; + unsigned char BAE_HK_FRAME[134] = {0}; - unsigned char CDMS_HK_FRAME[134] = {0}; - char BAE_HK[128] = {0}; - uint8_t convoluted_CDMS_HK[270]; - uint8_t interleave_CDMS_HK[288]; - uint8_t CDMS_HEALTH_FINAL[512] = {0}; - uint8_t convoluted_BAE_HK[270]; - uint8_t interleave_BAE_HK[288]; - uint8_t BAE_HEALTH_FINAL[512] = {0}; - unsigned char BAE_HK_FRAME[134] = {0}; + CDMS_HK_MAIN_STATUS = 0x01; + CDMS_HK_MAIN_COUNTER++; - CDMS_HK_MAIN_STATUS = 0x01; - CDMS_HK_MAIN_COUNTER++; + FCTN_CDMS_HK(); + RSSI_volatge = COMRX_RSSI_volatge.read() * 3.3; + VERIFY_COMRX(); + VERIFY_RTC(); + HANDLE_HW_FAULTS(); + FUNC_CDMS_GPIO_STATUS(); //yet to be done - FCTN_CDMS_HK(); - RSSI_volatge = COMRX_RSSI_volatge.read() * 3.3; - VERIFY_COMRX(); - VERIFY_RTC(); - HANDLE_HW_FAULTS(); - FUNC_CDMS_GPIO_STATUS(); //yet to be done + uint8_t CDMS_quant[19]; + for(int i=0; i<16; i++) { + CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i]; + } + CDMS_quant[16]= (uint8_t)RSSI_volatge; + CDMS_quant[17]= (uint8_t)quant_data.CDMS_temp_quant; + minMaxHkData(); - uint8_t CDMS_quant[19]; - for(int i=0;i<16;i++) - { - CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i]; - } - CDMS_quant[16]= (uint8_t)RSSI_volatge; - CDMS_quant[17]= (uint8_t)quant_data.CDMS_temp_quant; - minMaxHkData(); - - uint64_t time = FCTN_CDMS_RD_RTC(); //Reading Time from RTC - time = time>>7; - uint32_t HK_time = (uint32_t)time; - for(int i = 0;i<4;i++) - CDMS_HEALTH_DATA[i] = HK_time >> i; + uint64_t time = FCTN_CDMS_RD_RTC(); //Reading Time from RTC + gPC.printf("0x%08X \n",time); + time = time>>7; + uint32_t HK_time = (uint32_t)time; + for(int i = 0; i<4; i++) + CDMS_HEALTH_DATA[i] = HK_time >> i; + + // Here: Have to FIT flash data. + for(int i = 0; i<19; i++) //Collecting Data from Temp sensors + CDMS_HEALTH_DATA[i+24] = CDMS_quant[i]; + + COLLECT_CDMS_RAM(); //Reading RAM parameters + + CDMS_HEALTH_DATA[126] = GPIO_STATUS; //Reading GPIO Pins + CDMS_HEALTH_DATA[127] = GPIO_STATUS >> 8; + FCTN_SD_MNGR(); //Adding FSC & TMID to TM frame + CDMS_HK_FRAME[0] = 0x20; + CDMS_HK_FRAME[1] = FSC_CURRENT[4]+1; + CDMS_HK_FRAME[2] = (FSC_CURRENT[4]+1) >> 8; + CDMS_HK_FRAME[3] = (FSC_CURRENT[4]+1) >> 16; - // Here: Have to FIT flash data. - for(int i = 0;i<19;i++) //Collecting Data from Temp sensors - CDMS_HEALTH_DATA[i+24] = CDMS_quant[i]; - - COLLECT_CDMS_RAM(); //Reading RAM parameters - - CDMS_HEALTH_DATA[126] = GPIO_STATUS; //Reading GPIO Pins - CDMS_HEALTH_DATA[127] = GPIO_STATUS >> 8; - - FCTN_SD_MNGR(); //Adding FSC & TMID to TM frame - CDMS_HK_FRAME[0] = 0x20; - CDMS_HK_FRAME[1] = FSC_CURRENT[4]+1; - CDMS_HK_FRAME[2] = (FSC_CURRENT[4]+1) >> 8; - CDMS_HK_FRAME[3] = (FSC_CURRENT[4]+1) >> 16; - - for(int i = 0;i<128;i++) /*Adding actual CDMS Health data to TM frame*/ - CDMS_HK_FRAME[4+i] = CDMS_HEALTH_DATA[i]; - - uint16_t crc = crc16_gen(CDMS_HK_FRAME,132); /*Adding CRC to TM frame*/ - CDMS_HK_FRAME[133] = crc; - CDMS_HK_FRAME[132] = crc >> 8; + for(int i = 0; i<128; i++) /*Adding actual CDMS Health data to TM frame*/ + CDMS_HK_FRAME[4+i] = CDMS_HEALTH_DATA[i]; + + uint16_t crc = crc16_gen(CDMS_HK_FRAME,132); /*Adding CRC to TM frame*/ + CDMS_HK_FRAME[133] = crc; + CDMS_HK_FRAME[132] = crc >> 8; - Convolution CDMS_HEALTH; - Convolution BAE_HEALTH; - CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME , convoluted_CDMS_HK); - CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME + 67, convoluted_CDMS_HK + 135); - interleave(convoluted_CDMS_HK , interleave_CDMS_HK); - interleave(convoluted_CDMS_HK +135, interleave_CDMS_HK + 144); - for(int i=0;i<288;i++) - CDMS_HEALTH_FINAL[i] = interleave_CDMS_HK[i]; + Convolution CDMS_HEALTH; + Convolution BAE_HEALTH; + CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME , convoluted_CDMS_HK); + CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME + 67, convoluted_CDMS_HK + 135); + interleave(convoluted_CDMS_HK , interleave_CDMS_HK); + interleave(convoluted_CDMS_HK +135, interleave_CDMS_HK + 144); + for(int i=0; i<288; i++) + CDMS_HEALTH_FINAL[i] = interleave_CDMS_HK[i]; - SD_WRITE(CDMS_HEALTH_FINAL,FSC_CURRENT[4]+1,4); - hk_cdms.printf("CDMS hk succesfully completed\r\n"); + SD_WRITE(CDMS_HEALTH_FINAL,FSC_CURRENT[4]+1,4); + gPC.printf("Completed CDMS HK\n"); + + /*---------------------------------- BAE HK --------------------------------------------*/ -/*---------------------------------- BAE HK --------------------------------------------*/ - - - BAE_HK_I2C = FCTN_I2C_READ(BAE_HK,134); - if(BAE_HK_I2C == 0){ - TIME_LATEST_I2C_BAE = FCTN_CDMS_RD_RTC() >> 7; - hk_cdms.printf("Bae hk data received"); - } - else - { - for(int i = 0;i<128;i++) - BAE_HK[i] = 0; - } - for(int i = 0;i<4;i++) - BAE_HK[i] = HK_time >> i; - BAE_HK_FRAME[0] = 0x28; - BAE_HK_FRAME[1] = FSC_CURRENT[5]+1; - BAE_HK_FRAME[2] = (FSC_CURRENT[5]+1) >> 8; - BAE_HK_FRAME[3] = (FSC_CURRENT[5]+1) >> 16; - for(int i = 0;i<128;i++) /*Adding actual CDMS Health data to TM frame*/ - BAE_HK_FRAME[4+i] = BAE_HK[i]; - crc = crc16_gen(BAE_HK_FRAME,132); /*Adding CRC to TM frame*/ - BAE_HK_FRAME[133] = crc; - BAE_HK_FRAME[132] = crc >> 8; - BAE_HEALTH.convolutionEncode(BAE_HK_FRAME , convoluted_BAE_HK); - BAE_HEALTH.convolutionEncode(BAE_HK_FRAME + 67, convoluted_BAE_HK + 135); - interleave(convoluted_BAE_HK , interleave_BAE_HK); - interleave(convoluted_BAE_HK +135, interleave_BAE_HK + 144); - for(int i=0;i<288;i++) - BAE_HEALTH_FINAL[i] = interleave_BAE_HK[i]; - SD_WRITE(BAE_HEALTH_FINAL,FSC_CURRENT[5]+1,5); - hk_cdms.printf("BAE hk succesfully completed\r\n"); - - /*----------------------------------Beacon message--------------------------------------*/ - unsigned char SC_HK_LBM_0[135]; - SC_HK_LBM_0[0] = 0; // Sending long beacon msg as telecommand with Packet sequence count 0x00 - // Add HK bits - - // Add SC bits - crc = crc16_gen(SC_HK_LBM_0,133); - SC_HK_LBM_0[132] = crc; - SC_HK_LBM_0[133] = crc >> 8; - FCTN_I2C_WRITE((char *)SC_HK_LBM_0,135); + BAE_HK_I2C = FCTN_I2C_READ(BAE_HK,134); + gPC.printf("Entering BAE thread\n"); + if(BAE_HK_I2C == 0) { + TIME_LATEST_I2C_BAE = FCTN_CDMS_RD_RTC() >> 7; + } else { + for(int i = 0; i<128; i++) + BAE_HK[i] = 0; + } + for(int i = 0; i<4; i++) + BAE_HK[i] = HK_time >> i; + BAE_HK_FRAME[0] = 0x28; + BAE_HK_FRAME[1] = FSC_CURRENT[5]+1; + BAE_HK_FRAME[2] = (FSC_CURRENT[5]+1) >> 8; + BAE_HK_FRAME[3] = (FSC_CURRENT[5]+1) >> 16; + for(int i = 0; i<128; i++) /*Adding actual CDMS Health data to TM frame*/ + BAE_HK_FRAME[4+i] = BAE_HK[i]; + crc = crc16_gen(BAE_HK_FRAME,132); /*Adding CRC to TM frame*/ + BAE_HK_FRAME[133] = crc; + BAE_HK_FRAME[132] = crc >> 8; + BAE_HEALTH.convolutionEncode(BAE_HK_FRAME , convoluted_BAE_HK); + BAE_HEALTH.convolutionEncode(BAE_HK_FRAME + 67, convoluted_BAE_HK + 135); + interleave(convoluted_BAE_HK , interleave_BAE_HK); + interleave(convoluted_BAE_HK +135, interleave_BAE_HK + 144); + for(int i=0; i<288; i++) + BAE_HEALTH_FINAL[i] = interleave_BAE_HK[i]; + SD_WRITE(BAE_HEALTH_FINAL,FSC_CURRENT[5]+1,5); + gPC.printf("Completed BAE HK\n"); + + /*----------------------------------Beacon message--------------------------------------*/ + unsigned char SC_HK_LBM_0[135]; + SC_HK_LBM_0[0] = 0; // Sending long beacon msg as telecommand with Packet sequence count 0x00 + // Add HK bits + + // Add SC bits + crc = crc16_gen(SC_HK_LBM_0,133); + SC_HK_LBM_0[132] = crc; + SC_HK_LBM_0[133] = crc >> 8; + FCTN_I2C_WRITE((char *)SC_HK_LBM_0,135); + gPC.printf("Completed Beacon\n"); } int quantiz(float start,float step,float x) @@ -169,32 +157,30 @@ } void minMaxHkData() -{ - if(firstCount==true){ - for (int i = 0; i < 16; ++i){ - min_max_data.temp_min[i] = quant_data.temp_quant[i]; - min_max_data.temp_max[i] = quant_data.temp_quant[i]; +{ + if(firstCount==true) { + for (int i = 0; i < 16; ++i) { + min_max_data.temp_min[i] = quant_data.temp_quant[i]; + min_max_data.temp_max[i] = quant_data.temp_quant[i]; } min_max_data.CDMS_temp_min=quant_data.CDMS_temp_quant; min_max_data.CDMS_temp_max=quant_data.CDMS_temp_quant; - } - else { - for (int i = 0; i < 16; ++i) - { - min_max_data.temp_min[i] = saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]); - min_max_data.temp_max[i] = saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]); + } else { + for (int i = 0; i < 16; ++i) { + min_max_data.temp_min[i] = saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]); + min_max_data.temp_max[i] = saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]); } - + min_max_data.CDMS_temp_min = saveMin(min_max_data.CDMS_temp_min,quant_data.CDMS_temp_quant); min_max_data.CDMS_temp_max = saveMax(min_max_data.CDMS_temp_max,quant_data.CDMS_temp_quant); - } + } firstCount=false; } void FCTN_CDMS_HK() { - + int Iteration=0; SelectLinec0=0; @@ -202,7 +188,7 @@ SelectLinec2=0; SelectLinec3=0; - for(Iteration=0; Iteration<16; Iteration++){ + for(Iteration=0; Iteration<16; Iteration++) { actual_data.temp_actual[Iteration]=TempInput.read(); @@ -212,39 +198,35 @@ if(Iteration%4==3) SelectLinec2=!(SelectLinec2); if(Iteration%8==7) - SelectLinec3=!(SelectLinec3); + SelectLinec3=!(SelectLinec3); } actual_data.CDMS_temp_actual=(-90.7*3.3*CDMS_temp_sensor.read())+190.1543; - - for(Iteration=0;Iteration<16;Iteration++){ - if(Iteration<14){ + for(Iteration=0; Iteration<16; Iteration++) { + + if(Iteration<14) { actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3; - int resistance; - + int resistance; + resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]); - if(actual_data.temp_actual[Iteration]>1.47) - { + if(actual_data.temp_actual[Iteration]>1.47) { actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance); - } - else{ - + } else { + actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance); } - } - else + } else actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543; } - for(Iteration=0;Iteration<16;Iteration++){ + for(Iteration=0; Iteration<16; Iteration++) { - if(Iteration<14){ + if(Iteration<14) { quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]); - } - else + } else quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]); } @@ -255,211 +237,195 @@ void FUNC_CDMS_GPIO_STATUS() //Polls the status of Input GPIO PINS { - //V_A_PGOOD //TRZ EN - GPIO_STATUS=(V_A_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<15)):(GPIO_STATUS)&(~((uint16_t)(0x1<<15))); - //V_B_PGOOD_1 //3V3BPGOOD //$ - GPIO_STATUS=(V_B_PGOOD_1)?(GPIO_STATUS)||((uint16_t)(0x1<<14)):(GPIO_STATUS)&(~((uint16_t)(0x1<<14))); - //V_B_PGOOD_2 //3V3BEN //$ - GPIO_STATUS=(V_B_PGOOD_2)?(GPIO_STATUS)||((uint16_t)(0x1<<13)):(GPIO_STATUS)&(~((uint16_t)(0x1<<13))); - //V_C_PGOOD //3V3CPGOOD //$ - GPIO_STATUS=(V_C_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<12)):(GPIO_STATUS)&(~((uint16_t)(0x1<<12))); - //COMRX_OC_FAULT //$ - GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11))); - // COMTX_OC_FAULT //$ - GPIO_STATUS=(COMTX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10))); - //BAE_OC_FAULT //$ - GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9))); - //PL_GPIO_1_STATUS //$ - GPIO_STATUS=(PL_GPIO_1_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8))); - //PL_GPIO_2_STATUS //$ - GPIO_STATUS=(PL_GPIO_2_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<7)):(GPIO_STATUS)&(~((uint16_t)(0x1<<7))); - //PL_GPIO_3_STATUS //$ - GPIO_STATUS=(PL_GPIO_3_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<6)):(GPIO_STATUS)&(~((uint16_t)(0x1<<6))); - //PL_BEE_SW_OC_FAULT //to be verified - GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5))); - //PL_EPS_LATCH_SW_OC_FAULT // to be verified - GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4))); + //V_A_PGOOD //TRZ EN + GPIO_STATUS=(V_A_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<15)):(GPIO_STATUS)&(~((uint16_t)(0x1<<15))); + //V_B_PGOOD_1 //3V3BPGOOD //$ + GPIO_STATUS=(V_B_PGOOD_1)?(GPIO_STATUS)||((uint16_t)(0x1<<14)):(GPIO_STATUS)&(~((uint16_t)(0x1<<14))); + //V_B_PGOOD_2 //3V3BEN //$ + GPIO_STATUS=(V_B_PGOOD_2)?(GPIO_STATUS)||((uint16_t)(0x1<<13)):(GPIO_STATUS)&(~((uint16_t)(0x1<<13))); + //V_C_PGOOD //3V3CPGOOD //$ + GPIO_STATUS=(V_C_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<12)):(GPIO_STATUS)&(~((uint16_t)(0x1<<12))); + //COMRX_OC_FAULT //$ + GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11))); + // COMTX_OC_FAULT //$ + GPIO_STATUS=(COMTX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10))); + //BAE_OC_FAULT //$ + GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9))); + //PL_GPIO_1_STATUS //$ + GPIO_STATUS=(PL_GPIO_1_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8))); + //PL_GPIO_2_STATUS //$ + GPIO_STATUS=(PL_GPIO_2_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<7)):(GPIO_STATUS)&(~((uint16_t)(0x1<<7))); + //PL_GPIO_3_STATUS //$ + GPIO_STATUS=(PL_GPIO_3_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<6)):(GPIO_STATUS)&(~((uint16_t)(0x1<<6))); + //PL_BEE_SW_OC_FAULT //to be verified + GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5))); + //PL_EPS_LATCH_SW_OC_FAULT // to be verified + GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4))); } void VERIFY_COMRX() { - //COMRX_OC_FAULT //$ - if(PIN68==0 && RSSI_volatge > 0.4) - { - COMRX_STATUS = COMRX_ALIVE; - } - else - { - RESET_COMRX(); - COMRX_RESET_COUNTER++; - if(PIN68==0 && RSSI_volatge > 0.4) - COMRX_STATUS = COMRX_ALIVE; - else - COMRX_STATUS = COMRX_DEAD; - } + //COMRX_OC_FAULT //$ + if(PIN68==0 && RSSI_volatge > 0.4) { + COMRX_STATUS = COMRX_ALIVE; + } else { + RESET_COMRX(); + COMRX_RESET_COUNTER++; + if(PIN68==0 && RSSI_volatge > 0.4) + COMRX_STATUS = COMRX_ALIVE; + else + COMRX_STATUS = COMRX_DEAD; + } } -void VERIFY_RTC(){ +void VERIFY_RTC() +{ - if(RTC_STATUS == 0x00) - { - SPI_mutex.lock(); - gCS_RTC=1; - gCS_RTC=0; - spi.write(0x0F); - if(spi.write(0x00) & 0x04 == 0x04) - { - RTC_STATUS = 0x00; - RESET_RTC(); - RTC_FAULTCOUNT++; + if(RTC_STATUS == 0x00) { + SPI_mutex.lock(); + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x0F); + if(spi.write(0x00) & 0x04 == 0x04) { + RTC_STATUS = 0x00; + RESET_RTC(); + RTC_FAULTCOUNT++; + } + gCS_RTC=1; + SPI_mutex.unlock(); } - gCS_RTC=1; - SPI_mutex.unlock(); - } } void HANDLE_HW_FAULTS() { - HANDLE_HW_FAULT_SD(); - HANDLE_HW_FAULT_BAE(); - HANDLE_HW_FAULT_PL(); + HANDLE_HW_FAULT_SD(); + HANDLE_HW_FAULT_BAE(); + HANDLE_HW_FAULT_PL(); } void HANDLE_HW_FAULT_SD() { - if(SD_STATUS != DEVICE_DISABLED) - { - if(SD_STATUS == DEVICE_OC_FAULT) - SD_SW_EN_DS = 0; //powering on SD + if(SD_STATUS != DEVICE_DISABLED) { + if(SD_STATUS == DEVICE_OC_FAULT) + SD_SW_EN_DS = 0; //powering on SD + + if(SD_OC_FAULT == 0) { + SD_SW_EN_DS = 1; //switching off SD card - if(SD_OC_FAULT == 0) - { - SD_SW_EN_DS = 1; //switching off SD card - - SD_FAULTCOUNT++; - SD_STATUS = (SD_FAULTCOUNT == 3) ? DEVICE_DISABLED :DEVICE_OC_FAULT; + SD_FAULTCOUNT++; + SD_STATUS = (SD_FAULTCOUNT == 3) ? DEVICE_DISABLED :DEVICE_OC_FAULT; + } else { + SD_STATUS = DEVICE_POWERED; + SD_FAULTCOUNT = 0; + } } - else - { - SD_STATUS = DEVICE_POWERED; - SD_FAULTCOUNT = 0; - } - } } void HANDLE_HW_FAULT_BAE() { - if(BAE_STATUS != DEVICE_DISABLED) - { - if(BAE_STATUS == DEVICE_OC_FAULT) - BAE_SW_EN_DS = 0; //Power ON BAE + if(BAE_STATUS != DEVICE_DISABLED) { + if(BAE_STATUS == DEVICE_OC_FAULT) + BAE_SW_EN_DS = 0; //Power ON BAE - if(BAE_OC_FAULT == 0) // If OC Fault - { - BAE_SW_EN_DS = 1; //Switch OFF BAE - BAE_FAULTCOUNT++; - BAE_STATUS = (BAE_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; + if(BAE_OC_FAULT == 0) { // If OC Fault + BAE_SW_EN_DS = 1; //Switch OFF BAE + BAE_FAULTCOUNT++; + BAE_STATUS = (BAE_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; + } else { + BAE_STATUS = DEVICE_POWERED; + BAE_FAULTCOUNT = 0; + } } - else - { - BAE_STATUS = DEVICE_POWERED; - BAE_FAULTCOUNT = 0; - } - } } void HANDLE_HW_FAULT_PL() { - if(PL_STATUS != DEVICE_DISABLED) - { - if(PL_STATUS == DEVICE_OC_FAULT) - PL_SW_EN_DS = 0; //Power ON PL + if(PL_STATUS != DEVICE_DISABLED) { + if(PL_STATUS == DEVICE_OC_FAULT) + PL_SW_EN_DS = 0; //Power ON PL - if(PL_BEE_SW_OC_FAULT == 0) // if OC Fault - { - PL_SW_EN_DS = 1; // switching OFF PL - PL_FAULTCOUNT++; - PL_STATUS = (PL_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; + if(PL_BEE_SW_OC_FAULT == 0) { // if OC Fault + PL_SW_EN_DS = 1; // switching OFF PL + PL_FAULTCOUNT++; + PL_STATUS = (PL_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; + } else { + if(PL_STATUS == DEVICE_OC_FAULT) + PL_SW_EN_DS = 0; //Switching OFF PL + PL_STATUS = DEVICE_ENABLED; + PL_FAULTCOUNT = 0; + } } - else - { - if(PL_STATUS == DEVICE_OC_FAULT) - PL_SW_EN_DS = 0; //Switching OFF PL - PL_STATUS = DEVICE_ENABLED; - PL_FAULTCOUNT = 0; - } - } } - + void COLLECT_CDMS_RAM() -{ - /*--------------------Current FSC's---------------------*/ - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+43] = FSC_LAST[5] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+47] = FSC_CURRENT[5] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+51] = FSC_LAST[4] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+55] = FSC_CURRENT[4] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+59] = FSC_LAST[3] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+63] = FSC_CURRENT[3] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+67] = FSC_LAST[2] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+71] = FSC_CURRENT[2] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+75] = FSC_LAST[1] >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+79] = FSC_CURRENT[1] >> (i*8); - /*---------------------Latest Time----------------------*/ - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+83] = TIME_LATEST_SPI_SPEED >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+87] = TIME_LATEST_SD_RD >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+91] = TIME_LATEST_SD_WR >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+95] = TIME_LATEST_I2C_SPEED >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+99] = TIME_LATEST_I2C_BAE >> (i*8); - for(int i=0;i<4;i++) - CDMS_HEALTH_DATA[i+103] = TIME_LATEST_RTC >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+107] = COMRX_RESET_COUNTER >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+107] = PL_RCV_SC_DATA_COUNTER >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+111] = PL_MAIN_COUNTER >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+113] = CDMS_HK_MAIN_COUNTER >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+115] = CDMS_I2C_ERR_BAE_COUNTER >> (i*8); - for(int i=0;i<2;i++) - CDMS_HEALTH_DATA[i+117] = CDMS_I2C_ERR_SPEED_COUNTER >> (i*8); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | CDMS_STANDBY_PL << 7; - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_INIT_STATUS << 6) & 0x40); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_MAIN_STATUS << 5) & 0x20); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_STATUS << 3) & 0x18); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((COMRX_STATUS << 2) & 0x04); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_RTC_BL << 1) & 0x02); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] & 0xFE; - - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | PL_RCV_SC_DATA_STATUS << 7; - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_SESSION << 6) & 0x40); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_RX << 5) & 0x20); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((RF_SW_STATUS << 4) & 0x10); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX << 3) & 0x08); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX_STATUS << 2) & 0x04); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_MNG_TMTC << 1) & 0x02); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | (CDMS_STANDBY_HK & 0x01); +{ + /*--------------------Current FSC's---------------------*/ + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+43] = FSC_LAST[5] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+47] = FSC_CURRENT[5] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+51] = FSC_LAST[4] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+55] = FSC_CURRENT[4] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+59] = FSC_LAST[3] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+63] = FSC_CURRENT[3] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+67] = FSC_LAST[2] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+71] = FSC_CURRENT[2] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+75] = FSC_LAST[1] >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+79] = FSC_CURRENT[1] >> (i*8); + /*---------------------Latest Time----------------------*/ + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+83] = TIME_LATEST_SPI_SPEED >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+87] = TIME_LATEST_SD_RD >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+91] = TIME_LATEST_SD_WR >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+95] = TIME_LATEST_I2C_SPEED >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+99] = TIME_LATEST_I2C_BAE >> (i*8); + for(int i=0; i<4; i++) + CDMS_HEALTH_DATA[i+103] = TIME_LATEST_RTC >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+107] = COMRX_RESET_COUNTER >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+107] = PL_RCV_SC_DATA_COUNTER >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+111] = PL_MAIN_COUNTER >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+113] = CDMS_HK_MAIN_COUNTER >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+115] = CDMS_I2C_ERR_BAE_COUNTER >> (i*8); + for(int i=0; i<2; i++) + CDMS_HEALTH_DATA[i+117] = CDMS_I2C_ERR_SPEED_COUNTER >> (i*8); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | CDMS_STANDBY_PL << 7; + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_INIT_STATUS << 6) & 0x40); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_MAIN_STATUS << 5) & 0x20); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_STATUS << 3) & 0x18); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((COMRX_STATUS << 2) & 0x04); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_RTC_BL << 1) & 0x02); + CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] & 0xFE; - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | PL_INIT_STATUS << 7; - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_MAIN_STATUS << 6) & 0x40); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_LOW_POWER << 5) & 0x20); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_STATE << 3) & 0x18); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | (PL_STATUS & 0x07); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | PL_RCV_SC_DATA_STATUS << 7; + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_SESSION << 6) & 0x40); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_RX << 5) & 0x20); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((RF_SW_STATUS << 4) & 0x10); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX << 3) & 0x08); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX_STATUS << 2) & 0x04); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_MNG_TMTC << 1) & 0x02); + CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | (CDMS_STANDBY_HK & 0x01); + + CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | PL_INIT_STATUS << 7; + CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_MAIN_STATUS << 6) & 0x40); + CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_LOW_POWER << 5) & 0x20); + CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_STATE << 3) & 0x18); + CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | (PL_STATUS & 0x07); } \ No newline at end of file
--- a/COM_MNG_TMTC.h Sat Jul 02 15:28:21 2016 +0000 +++ b/COM_MNG_TMTC.h Mon Jul 04 14:31:30 2016 +0000 @@ -14,6 +14,7 @@ DigitalIn tm_status_4m_slv(PIN39); //I2C interrupt to CDMS from BAE //DigitalIn tm_status_4m_pl(PIN61); //I2C interrupt to CDMS from PL +#define RESET_CDMS NVIC_SystemReset() uint8_t received = 0; uint16_t mid1;
--- a/DefinitionsAndGlobals.h Sat Jul 02 15:28:21 2016 +0000 +++ b/DefinitionsAndGlobals.h Mon Jul 04 14:31:30 2016 +0000 @@ -145,6 +145,15 @@ //RF RELAY #define RF_RELAY_CNTRL_TX PTA7 #define RF_RELAY_CNTRL_BCN PTA12 + +//CDMS HK +#define COMRX_ALIVE 0x01 +#define COMRX_DEAD 0x00 +#define DEVICE_ENABLED 0x00 +#define DEVICE_POWERED 0x01 +#define DEVICE_OC_FAULT 0x02 +#define DEVICE_DISABLED 0x03 + // ****************GLOBAL VARIABLES****************** @@ -251,10 +260,10 @@ DigitalIn PL_GPIO_1_STATUS (PIN71); DigitalIn PL_GPIO_2_STATUS (PIN81); DigitalIn PL_GPIO_3_STATUS (PIN80); -DigitalIn PL_BEE_SW_OC_FAULT (PIN4); -DigitalIn PL_EPS_LATCH_SW_OC_FAULT (); -DigitalIn V_C_EN_STATUS (); -DigitalIn V_D_EN_STATUS (); +DigitalIn PL_BEE_SW_OC_FAULT (PIN91); +DigitalIn PL_EPS_LATCH_SW_OC_FAULT (PIN5); +DigitalIn V_C_EN_STATUS (PIN72); +DigitalIn V_D_EN_STATUS (PIN56); DigitalIn SD_OC_FAULT (PIN90);
--- a/FMS_all.h Sat Jul 02 15:28:21 2016 +0000 +++ b/FMS_all.h Mon Jul 04 14:31:30 2016 +0000 @@ -20,6 +20,7 @@ void RST_PL_BEE(); void RST_HK_COUNTER(); uint8_t CDMS_RD_SD_HK(uint8_t *); +void CDMS_RESET(); void CDMS_INTERNAL_RESET(); void P_PL_INIT() @@ -150,6 +151,11 @@ return ACK; } +void CDMS_RESET() +{ + NVIC_SystemReset(); +} + void CDMS_INTERNAL_RESET() {
--- a/cdms_rtc.h Sat Jul 02 15:28:21 2016 +0000 +++ b/cdms_rtc.h Mon Jul 04 14:31:30 2016 +0000 @@ -1,123 +1,147 @@ + void FCTN_CDMS_INIT_RTC() -{ +{ + wait_ms(4000); SPI_mutex.lock(); gCS_RTC=1; spi.format(8,0); spi.frequency(1000000); - //clearing the halt bit + + //Kick starting the oscillator + gCS_RTC=0; + spi.write(0x81); //register address with write flag + spi.write(0x80);//enabling stop bit in the seconds register + gCS_RTC=1; + + //clearing the halt bit gCS_RTC=1; gCS_RTC=0; spi.write(0x8C); spi.write(0x00); - - //clearing the OF bit - gCS_RTC=1; + gCS_RTC=1; + + //clearing the OF bit gCS_RTC=0; spi.write(0x8F); spi.write(0x00); - + gCS_RTC=1; + //century bits - gCS_RTC=1; gCS_RTC=0; spi.write(0x80|0x03); spi.write(0x00); + gCS_RTC=1; - //Kick starting the oscillator - gCS_RTC=1; - gCS_RTC=0; - spi.write(0x81); //register address with write flag - spi.write(0x80); //enabling stop bit in the seconds register - - gCS_RTC=1; + gCS_RTC=0; spi.write(0x81); - spi.write(0x00); //disabling the stop bit to restart the oscillator - - + spi.write(0x00);//disabling the stop bit to restart the oscillator gCS_RTC=1; + gCS_RTC=0; - spi.write(0x80); + spi.write(0x80); spi.write(0x01); // set milliseconds value to 00 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x81); + spi.write(0x81); spi.write(0x01); //set seconds value to 00 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x82); + spi.write(0x82); spi.write(0x01);//set minutes value to 00 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x83); + spi.write(0x83); spi.write(0x23); //set the hours to 01 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x84); + spi.write(0x84); spi.write(0x01); //set day of the week to 01 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x85); + spi.write(0x85); spi.write(0x31); //set date of the month to 01 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x86); + spi.write(0x86); spi.write(0x12); //set month to 01 gCS_RTC=1; - + gCS_RTC=0; - spi.write(0x87); + spi.write(0x87); spi.write(0x01); //set year to 00(2000) gCS_RTC=1; - gPC.puts("\r\nrtc initalised\r\n"); + gPC.puts("\n\r rtc initalised \n"); SPI_mutex.unlock(); } - + uint64_t FCTN_CDMS_RD_RTC() -{ - SPI_mutex.lock(); +{ + SPI_mutex.lock(); uint8_t response; - - gCS_RTC=1; + uint64_t time = 0; + + gCS_RTC = 0; + spi.write(0x0F); + response = spi.write(0x00); + //gPC.printf("0x%02X",response); + gCS_RTC = 1; + gCS_RTC=0; - spi.write(0x0F); - response = (spi.write(0x00))&0x04; + spi.write(0x00); //reading milliseconds register + response = spi.write(0x00); // read the value by sending dummy byte + uint8_t centiseconds = (uint8_t(response&0xF0)>>4)*10+uint8_t(response&0x0F)*1; gCS_RTC=1; gCS_RTC=0; - spi.write(0x00); //reading centiseconds register - response = spi.write(0x00); // read the value by sending dummy byte - uint8_t centiseconds = ((response&0xF0)>>4)*10+(response&0x0F)*1; - - response =spi.write(0x00); - uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1; - - response =spi.write(0x00); - uint8_t minutes = ((response&0x70)>>4)*10+(response&0x0F)*1; - - response=spi.write(0x00); - uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1; - - uint8_t day =spi.write(0x00); - - response =spi.write(0x00); - uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1; - - response =spi.write(0x00); - uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1; - + spi.write(0x01); //reading seconds register + response =spi.write(0x01); + uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1; + + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x02); //reading minutes register + response =spi.write(0x01); + uint8_t minutes = ((response&0xF0)>>4)*10+(response&0x0F)*1; + + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x03); //reading hours register + response=spi.write(0x01); + uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1; + + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x04); //reading day's register + uint8_t day =spi.write(0x01); + + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x05); //reading date register + response =spi.write(0x01); + uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1; + + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x06); //reading month registe + response =spi.write(0x01); + uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1; + + gCS_RTC=1; + gCS_RTC=0; response =spi.write(0x00); uint8_t year = ((response&0xF0)>>4)*10+(response&0x0F)*1; - year = (year == 17)?0x00:(year == 18)?0x01:(year == 19)?0x02:(year == 20)?0x03:0x00; + year = (year == 16)?0x00:(year == 17)?0x01:(year == 18)?0x02:(year == 19)?0x03:0x00; gCS_RTC=1; - - uint64_t time; - time = 0; + + uint8_t Time_stamp[8] = {year, month, date, day, hours, minutes, seconds, centiseconds}; + time = time|(((uint64_t)(centiseconds&0x7F))); time = time|(((uint64_t)(seconds&0x3F))<<7); time = time|(((uint64_t)(minutes&0x3F))<<13); @@ -126,8 +150,6 @@ time = time|(((uint64_t)(month&0x07))<<29); time = time|(((uint64_t)(year&0x03))<<33); time = (time&0x00000007FFFFFFFF); - SPI_mutex.unlock(); return time; } -
--- a/main.cpp Sat Jul 02 15:28:21 2016 +0000 +++ b/main.cpp Mon Jul 04 14:31:30 2016 +0000 @@ -161,6 +161,7 @@ */ // *******************INITIALISATIONS END******************** + FCTN_CDMS_HK_MAIN((void *)NULL); //RtosTimer gCDMS_HK_TIMER(FCTN_CDMS_HK_MAIN, osTimerPeriodic); //gCDMS_HK_TIMER.start(5000);