pl ack in tmtc
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of COM_MNG_TMTC_SIMPLE_pl123 by
CDMS_HK.h
00001 //#include "cdms_rtc.h" 00002 #include "pinconfig.h" 00003 00004 void FCTN_CDMS_HK_MAIN(); 00005 void FCTN_CDMS_HK(); 00006 //extern uint8_t CDMS_HK_STATUS; 00007 //extern uint8_t Power_level; 00008 //extern uint8_t Att_level; 00009 //extern char CDMS_HK[8]; 00010 00011 Serial hk_cdms(USBTX, USBRX); 00012 00013 AnalogIn TempInput(PIN27); // Input from Current Multiplexer 00014 AnalogIn CDMS_temp_sensor(PIN53); 00015 00016 DigitalOut SelectLinec3 (PIN79); // MSB of Select Lines 00017 DigitalOut SelectLinec2 (PIN78); 00018 DigitalOut SelectLinec1 (PIN77); 00019 DigitalOut SelectLinec0 (PIN76); // LSB of Select Lines 00020 00021 void FCTN_CDMS_HK_MAIN(void const *args) 00022 { 00023 // CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_MAIN_STATUS); 00024 FCTN_CDMS_HK; 00025 hk_cdms.printf(" \r\nCDMS HK entered Verify COM RX RSSI >0.4 \r\n"); 00026 00027 int HK_I2C; 00028 char BAE_HK[74]; 00029 FCTN_I2C_READ(BAE_HK,74); 00030 printf("BAE_HK=%s",BAE_HK); 00031 /*if(HK_I2C==0) 00032 { 00033 if(Power_level!=0) 00034 { 00035 printf("Update Power_level to 0 in Flash"); 00036 } 00037 Att_level=0; 00038 CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_BAE_ERR_I2C); 00039 CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS)); 00040 }**/ 00041 uint8_t CDMS_quant[17]; 00042 // printf("BAE HK is %s",BAE_HK); 00043 for(int i=0;i<16;i++) 00044 { 00045 CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i]; 00046 } 00047 CDMS_quant[16]= (uint8_t)quant_data.CDMS_temp_quant; 00048 uint64_t time=0x00;//replace with rtc function 00049 char tree[61]; 00050 hk_cdms.printf("i am done\r\n"); 00051 uint8_t data[512]; 00052 for(int i=0;i<512;i++) 00053 { 00054 data[i]=0x00; 00055 } 00056 tree[0]=(char)(time>>(56))&(0xFF); 00057 tree[1]=(char)(time>>(48))&(0xFF); 00058 tree[2]=(char)(time>>(40))&(0xFF); 00059 tree[3]=(char)(time>>(32))&(0xFF); 00060 tree[4]=(char)(time>>(24))&(0xFF); 00061 tree[5]=(char)(time>>(16))&(0xFF); 00062 tree[6]=(char)(time>>(8))&(0xFF); 00063 tree[7]=(char)(time)&(0xFF); 00064 for(int i=0;i<73;i++) 00065 { 00066 tree[i+8]=BAE_HK[i]; 00067 } 00068 printf("Hope u r alive \r\n"); 00069 for(int i=0;i<81;i++) 00070 { 00071 data[i]=(uint8_t)tree[i]; 00072 } 00073 for(int i=81;i<98;i++) 00074 { 00075 data[i]=CDMS_quant[i]; 00076 } 00077 for(int i=0;i<512;i++) 00078 { 00079 printf("%d",data[i]); 00080 } 00081 //uint8_t fsc=FCTN_SD_MNGR(0x3); 00082 //printf("FSC where SD is written is %d\r\n",fsc); 00083 //int a=SD_WRITE(data,0x00000012,0x3); 00084 //printf("Result of writing is %d \r\n",a); 00085 //BCN long frame ??? 00086 //CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS)); 00087 hk_cdms.printf("CDMS executed succesfully\r\n"); 00088 } 00089 00090 00091 00092 int quantiz(float start,float step,float x) 00093 { 00094 int y=(x-start)/step; 00095 if(y<=0)y=0; 00096 if(y>=255)y=255; 00097 return y; 00098 } 00099 00100 00101 00102 void saveMin(char x,char y){ 00103 if(y<x){ 00104 x=y; 00105 } 00106 00107 } 00108 void saveMax(char x,char y){ 00109 if (y>x) 00110 { 00111 x=y; 00112 } 00113 } 00114 void minMaxHkData(){ 00115 00116 00117 00118 if(firstCount==true){ 00119 for (int i = 0; i < 16; ++i){ 00120 min_max_data.temp_min[i] = quant_data.temp_quant[i]; 00121 min_max_data.temp_max[i] = quant_data.temp_quant[i]; 00122 } 00123 00124 min_max_data.CDMS_temp_min=quant_data.CDMS_temp_quant; 00125 min_max_data.CDMS_temp_max=quant_data.CDMS_temp_quant; 00126 00127 00128 } 00129 else { 00130 for (int i = 0; i < 16; ++i) 00131 { 00132 saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]); 00133 saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]); 00134 } 00135 00136 saveMin(min_max_data.CDMS_temp_min,quant_data.CDMS_temp_quant); 00137 saveMax(min_max_data.CDMS_temp_max,quant_data.CDMS_temp_quant); 00138 00139 00140 } 00141 firstCount=false; 00142 } 00143 00144 void FCTN_CDMS_HK() 00145 { 00146 00147 int Iteration=0; 00148 00149 SelectLinec0=0; 00150 SelectLinec1=0; 00151 SelectLinec2=0; 00152 SelectLinec3=0; 00153 00154 for(Iteration=0; Iteration<16; Iteration++){ 00155 00156 actual_data.temp_actual[Iteration]=TempInput.read(); 00157 00158 SelectLinec0=!(SelectLinec0); 00159 if(Iteration%2==1) 00160 SelectLinec1=!(SelectLinec1); 00161 if(Iteration%4==3) 00162 SelectLinec2=!(SelectLinec2); 00163 if(Iteration%8==7) 00164 SelectLinec3=!(SelectLinec3); 00165 } 00166 00167 actual_data.CDMS_temp_actual=(-90.7*3.3*CDMS_temp_sensor.read())+190.1543; 00168 00169 for(Iteration=0;Iteration<16;Iteration++){ 00170 00171 if(Iteration<14){ 00172 00173 actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3; 00174 int resistance; 00175 00176 resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]); 00177 if(actual_data.temp_actual[Iteration]>1.47) 00178 { 00179 actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance); 00180 } 00181 else{ 00182 00183 actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance); 00184 } 00185 } 00186 else 00187 actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543; 00188 } 00189 00190 for(Iteration=0;Iteration<16;Iteration++){ 00191 00192 if(Iteration<14){ 00193 00194 quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]); 00195 } 00196 else 00197 quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]); 00198 } 00199 00200 quant_data.CDMS_temp_quant=quantiz(tstart,tstep,actual_data.CDMS_temp_actual); 00201 00202 minMaxHkData(); 00203 }
Generated on Wed Jul 20 2022 09:24:44 by 1.7.2