To fix the hang problem
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
CDMS_HK.h
- Committer:
- shreeshas95
- Date:
- 2016-01-29
- Revision:
- 105:5ce0337e7c15
- Parent:
- 104:a50ae79ca36e
- Child:
- 187:2c7263530c57
- Child:
- 210:f4acf895b598
- Child:
- 221:2efc13ccbe4c
File content as of revision 105:5ce0337e7c15:
//#include "cdms_rtc.h" #include "pinconfig.h" void FCTN_CDMS_HK_MAIN(); void FCTN_CDMS_HK(); //extern uint8_t CDMS_HK_STATUS; //extern uint8_t Power_level; //extern uint8_t Att_level; //extern char CDMS_HK[8]; Serial hk_cdms(USBTX, USBRX); AnalogIn TempInput(PIN27); // Input from Current Multiplexer AnalogIn CDMS_temp_sensor(PIN53); DigitalOut SelectLinec3 (PIN79); // MSB of Select Lines DigitalOut SelectLinec2 (PIN78); DigitalOut SelectLinec1 (PIN77); DigitalOut SelectLinec0 (PIN76); // LSB of Select Lines void FCTN_CDMS_HK_MAIN(void const *args) { // CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_MAIN_STATUS); FCTN_CDMS_HK; hk_cdms.printf(" \r\nCDMS HK entered Verify COM RX RSSI >0.4 \r\n"); int HK_I2C; char BAE_HK[74]; FCTN_I2C_READ(BAE_HK,74); printf("BAE_HK=%s",BAE_HK); /*if(HK_I2C==0) { if(Power_level!=0) { printf("Update Power_level to 0 in Flash"); } Att_level=0; CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_BAE_ERR_I2C); CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS)); }**/ uint8_t CDMS_quant[17]; // printf("BAE HK is %s",BAE_HK); for(int i=0;i<16;i++) { CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i]; } CDMS_quant[16]= (uint8_t)quant_data.CDMS_temp_quant; uint64_t time=0x00;//replace with rtc function char tree[61]; hk_cdms.printf("i am done\r\n"); uint8_t data[512]; for(int i=0;i<512;i++) { data[i]=0x00; } tree[0]=(char)(time>>(56))&(0xFF); tree[1]=(char)(time>>(48))&(0xFF); tree[2]=(char)(time>>(40))&(0xFF); tree[3]=(char)(time>>(32))&(0xFF); tree[4]=(char)(time>>(24))&(0xFF); tree[5]=(char)(time>>(16))&(0xFF); tree[6]=(char)(time>>(8))&(0xFF); tree[7]=(char)(time)&(0xFF); for(int i=0;i<73;i++) { tree[i+8]=BAE_HK[i]; } printf("Hope u r alive \r\n"); for(int i=0;i<81;i++) { data[i]=(uint8_t)tree[i]; } for(int i=81;i<98;i++) { data[i]=CDMS_quant[i]; } for(int i=0;i<512;i++) { printf("%d",data[i]); } //uint8_t fsc=FCTN_SD_MNGR(0x3); //printf("FSC where SD is written is %d\r\n",fsc); //int a=SD_WRITE(data,0x00000012,0x3); //printf("Result of writing is %d \r\n",a); //BCN long frame ??? //CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS)); hk_cdms.printf("CDMS executed succesfully\r\n"); } int quantiz(float start,float step,float x) { int y=(x-start)/step; if(y<=0)y=0; if(y>=255)y=255; return y; } void saveMin(char x,char y){ if(y<x){ x=y; } } void saveMax(char x,char y){ if (y>x) { x=y; } } 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]; } 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) { saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]); saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]); } saveMin(min_max_data.CDMS_temp_min,quant_data.CDMS_temp_quant); saveMax(min_max_data.CDMS_temp_max,quant_data.CDMS_temp_quant); } firstCount=false; } void FCTN_CDMS_HK() { int Iteration=0; SelectLinec0=0; SelectLinec1=0; SelectLinec2=0; SelectLinec3=0; for(Iteration=0; Iteration<16; Iteration++){ actual_data.temp_actual[Iteration]=TempInput.read(); SelectLinec0=!(SelectLinec0); if(Iteration%2==1) SelectLinec1=!(SelectLinec1); if(Iteration%4==3) SelectLinec2=!(SelectLinec2); if(Iteration%8==7) 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){ actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3; int resistance; resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]); if(actual_data.temp_actual[Iteration]>1.47) { actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance); } else{ actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance); } } else actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543; } for(Iteration=0;Iteration<16;Iteration++){ if(Iteration<14){ quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]); } else quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]); } quant_data.CDMS_temp_quant=quantiz(tstart,tstep,actual_data.CDMS_temp_actual); minMaxHkData(); }