Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos SimpleDMA FreescaleIAP eeprom
Fork of CDMS_CODE_FM_28JAN2017 by
adf.h
00001 //without reset feature , with state checks. 00002 00003 #ifndef ADF_H // To make sure you don't declare the function more than once by including the header multiple times. 00004 #define ADF_H 00005 00006 InterruptIn IRQ(ADF_IRQ); 00007 //Ticker ticker; 00008 #include "OBSRS.h" 00009 bool loop_on; 00010 bool ADF_off; 00011 bool buffer_state; 00012 bool finish_write_data; 00013 uint8_t signal = 0x00; 00014 //unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xFB,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x08/*GMSK_modulation*/,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; 00015 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF5,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x08/*GMSK_modulation*/,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; 00016 00017 bool data_irq_err=0; 00018 bool data_err= false; 00019 unsigned char temp_byte=0x00; 00020 unsigned char data_err1[112]; 00021 unsigned char data_err_cnt=0; 00022 unsigned int byte_count =0; 00023 #define DATA_ERR_THRS 20 00024 bool rolling_buffer_settings_error=true; 00025 bool bbram_write_success=true; 00026 int bbram_err_cnt=0; 00027 int rbp_err_cnt=0; 00028 bool reset_flag=false; 00029 #define RBP_THRS 4 00030 bool quit_configuration=false; 00031 bool power_reset_flag=false; 00032 unsigned int power_reset_count=0; 00033 bool Configuration_done=false; 00034 #define HW_THRS 2 00035 bool hw_reset_flag = false; 00036 uint8_t firstbyte; 00037 uint8_t secondbyte; 00038 unsigned char buffer_112[112]; 00039 int loop_conter = 0; 00040 int loop_cntr = 0; 00041 //ADF temperature reading 00042 #define temp_correction_value 0 00043 00044 #define TRANSMIT_LEN_1 0xFF 00045 #define TRANSMIT_LEN_2 0xFF 00046 /***/ 00047 Timer T; 00048 00049 #define START_ADDRESS 0x020; 00050 #define MISO_PIN PTE3 00051 /**************Defining Counter Limits**************/ 00052 #define THRS 20 00053 #define STATE_ERR_THRS 20 00054 #define PHY_OFF_EXEC_TIME 300 00055 #define PHY_ON_EXEC_TIME 300 00056 #define PHY_TX_EXEC_TIME 600 00057 /******DEFINING COMMANDS*********/ 00058 #define CMD_HW_RESET 0xC8 00059 #define CMD_PHY_ON 0xB1 00060 #define CMD_PHY_OFF 0xB0 00061 #define CMD_PHY_TX 0xB5 00062 #define CMD_CONFIG_DEV 0xBB 00063 /**STATES**/ 00064 //======================= 00065 #define PHY_OFF 0xB1 00066 #define PHY_ON 0xB2 00067 #define PHY_TX 0xB4 00068 #define BUSY 0x00 00069 //=================================================== 00070 00071 #define POWER_RESET_THRS 2 00072 #define HW_RESET_THRS 2 00073 00074 unsigned int Adf_data_counter=0; 00075 unsigned char status =0; 00076 unsigned int cmd_err_cnt=0; 00077 unsigned int data_length; 00078 unsigned int state_err_cnt=0; 00079 unsigned int miso_err_cnt=0; 00080 unsigned int hw_reset_err_cnt=0; 00081 unsigned int counter =0; 00082 bool temp_return = 0; 00083 bool bcn_flag=0; 00084 bool bbram_flag=0; 00085 bool last_buffer =0; 00086 bool stop_transmission=false; 00087 00088 #define reset_flags {\ 00089 finish_write_data = false;\ 00090 buffer_state = true;\ 00091 last_buffer = false;\ 00092 loop_on = true;\ 00093 ADF_off = false;\ 00094 buffer_state = true;\ 00095 loop_on = true;\ 00096 ADF_off = false;\ 00097 /*sent_tmfrom_SDcard = false;*/\ 00098 Adf_data_counter=0;\ 00099 status =0;\ 00100 cmd_err_cnt=0;\ 00101 data_length;\ 00102 state_err_cnt=0;\ 00103 miso_err_cnt=0;\ 00104 hw_reset_err_cnt=0;\ 00105 counter =0;\ 00106 bcn_flag=0;\ 00107 bbram_flag=0;\ 00108 stop_transmission=false;\ 00109 } 00110 00111 00112 int err_arr[64]; 00113 bool bbram_err=false; 00114 int err_idx=-1; 00115 int err[64]; 00116 #define bbram_check gCS_ADF=0;\ 00117 for(int i=0;i<64;i++){\ 00118 err_arr[i]=0;\ 00119 }\ 00120 for(int i=0;i<64;i++){\ 00121 err[i]=0;\ 00122 }\ 00123 bbram_err=false;\ 00124 gCS_ADF=0;\ 00125 spi.write(0x39);\ 00126 spi.write(0x00);\ 00127 spi.write(0xFF);\ 00128 for(int i=0;i<64;i++){\ 00129 err_arr[i]=spi.write(0xFF);\ 00130 if(err_arr[i]!=bbram_buffer[i+2]){\ 00131 err[i]=1;\ 00132 bbram_err=true;\ 00133 }\ 00134 }\ 00135 gCS_ADF=1;\ 00136 if(!bbram_err)\ 00137 /*gPC.printf("BBRAM verified \r\n")*/;\ 00138 else\ 00139 gPC.printf("BBRAM error \r\n");\ 00140 00141 00142 bool tx_loop=1; 00143 00144 #define PRNT_ONCE {\ 00145 gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\ 00146 } 00147 00148 #define bbram_write {\ 00149 gCS_ADF=0;\ 00150 spi.write(0xB0);\ 00151 wait_us(300);\ 00152 gCS_ADF=1;\ 00153 gCS_ADF=0;\ 00154 for(int i=0;i<66;i++){\ 00155 spi.write(bbram_buffer[i]);\ 00156 }\ 00157 gCS_ADF=1;\ 00158 } 00159 //------------------------------------------------------------------------ 00160 // state checking functions 00161 //bool assrt_phy_off( int, int, int); 00162 //bool assrt_phy_on( int,int,int); 00163 //bool assrt_phy_tx(int,int,int); 00164 00165 #define check_status {\ 00166 unsigned char stat=0;\ 00167 gCS_ADF=0;\ 00168 spi.write(0xFF);\ 00169 stat = spi.write(0xFF);\ 00170 gCS_ADF=1;\ 00171 status = stat;\ 00172 } 00173 /***********************/ 00174 /**********Restart ADF**************/ 00175 00176 /**************************/ 00177 00178 /*CMD_VAR*/ 00179 bool cmd_bit=true; 00180 bool cmd_err_flag=false; 00181 unsigned char command = 0x00; 00182 void CMD(uint8_t command) { 00183 cmd_err_cnt=0; 00184 cmd_err_flag=false; 00185 while(cmd_err_cnt<3) { 00186 check_status; 00187 cmd_bit=status&0x20; 00188 if(cmd_bit) { 00189 gCS_ADF=0; 00190 spi.write(command); 00191 gCS_ADF=1; 00192 break; 00193 } else { 00194 wait_us(5); 00195 cmd_err_cnt++; 00196 } 00197 } 00198 if(cmd_err_cnt==3) { 00199 cmd_err_flag=true; 00200 } 00201 } 00202 00203 // all three arguments are int 00204 #define assrt_phy_off {\ 00205 int state_err_cnt = 0;\ 00206 CMD(CMD_PHY_OFF);\ 00207 if(cmd_err_flag){\ 00208 temp_return=1;\ 00209 }\ 00210 else{\ 00211 for(int i = 0 ; i < 40 ;i++){\ 00212 CMD(CMD_PHY_OFF);\ 00213 check_status;\ 00214 if(status == PHY_OFF){\ 00215 temp_return = 0;\ 00216 break;\ 00217 }\ 00218 else if(state_err_cnt>THRS){\ 00219 temp_return = 1;\ 00220 break;\ 00221 }\ 00222 else {\ 00223 wait_ms(1);\ 00224 }\ 00225 }\ 00226 }\ 00227 } 00228 00229 bool dummy_digitalOut_1=0; 00230 #define power_reset{\ 00231 dummy_digitalOut_1=0;\ 00232 wait_ms(10);\ 00233 dummy_digitalOut_1=1;\ 00234 power_reset_flag=false;\ 00235 power_reset_count++;\ 00236 wait_ms(10);\ 00237 }\ 00238 00239 void get_temp_and_txcurr(){ 00240 /*ADF Temperature reading*/; 00241 gCS_ADF=0; 00242 spi.write(0x1B); 00243 spi.write(0x24); 00244 spi.write(0x10); 00245 gCS_ADF=1; 00246 gCS_ADF=0; 00247 spi.write(0x1B); 00248 spi.write(0x25); 00249 spi.write(0x02); 00250 gCS_ADF=1; 00251 gCS_ADF=0; 00252 spi.write(0x1B); 00253 spi.write(0x59); 00254 spi.write(0x08); 00255 gCS_ADF=1; 00256 00257 gCS_ADF=0; 00258 spi.write(0x3B); 00259 spi.write(0x28); 00260 spi.write(0xFF); 00261 firstbyte = spi.write(0xFF); 00262 gCS_ADF=1; 00263 gCS_ADF=0; 00264 spi.write(0x3B); 00265 spi.write(0x27); 00266 spi.write(0xFF); 00267 secondbyte = spi.write(0xFF); 00268 gCS_ADF=1; 00269 00270 COM_ADF_TMP = (firstbyte & 0xC0) >> 6; 00271 //COM_ADF_TMP |= secondbyte & 0xfc; 00272 secondbyte = (secondbyte & 0x3F) << 2; 00273 COM_ADF_TMP = secondbyte | firstbyte; 00274 COM_ADF_TMP = 0.9474*(COM_ADF_TMP - 28) +28.2; 00275 00276 gPC.printf("\n\rCOM_ADF_TMP : %d \n",COM_ADF_TMP); 00277 /*uint8_t txcurr = (3.3*COM_TX_OC_FAULT)/(0.05)*100;*/// ID_current 00278 00279 00280 00281 } 00282 00283 void get_com_oc_sw_status() 00284 { 00285 COM_OC_SET = 1; 00286 if (COM_TX_OC_FAULT){\ 00287 com_oc_sw_status = 0x1;\ 00288 }\ 00289 else{\ 00290 com_oc_sw_status = 0;\ 00291 }\ 00292 } 00293 00294 bool hardware_reset(int bcn_call) 00295 { 00296 if(hw_reset_err_cnt>HW_RESET_THRS){ 00297 power_reset_flag=true; 00298 power_reset; 00299 return 0; 00300 } 00301 00302 for(int i= 0; i < 2 ; i++) { 00303 gCS_ADF=0; 00304 spi.write(CMD_HW_RESET); 00305 gCS_ADF=1; 00306 wait_ms(2);// Typically 1 ms 00307 int count=0; 00308 temp_return = 0; 00309 while(count<10 && miso_err_cnt<10) { 00310 if(MISO_PIN) { 00311 // assrt_phy_off; 00312 /*asseert_phyoff Starts**/ 00313 {\ 00314 int state_err_cnt = 0;\ 00315 CMD(CMD_PHY_OFF);\ 00316 if(cmd_err_flag){\ 00317 temp_return=1;\ 00318 }\ 00319 else{\ 00320 for(int i = 0 ; i < 40 ;i++){\ 00321 CMD(CMD_PHY_OFF);\ 00322 check_status;\ 00323 if(status == PHY_OFF){\ 00324 temp_return = 0;\ 00325 break;\ 00326 }\ 00327 else if(state_err_cnt>THRS){\ 00328 temp_return = 1;\ 00329 break;\ 00330 }\ 00331 else {\ 00332 wait_ms(1);\ 00333 }\ 00334 }\ 00335 }\ 00336 }\ 00337 /*Assert_phy_off_ends*/ 00338 00339 00340 00341 00342 00343 if(!temp_return){ 00344 return 0; 00345 } 00346 count++; 00347 } else { 00348 wait_us(50); 00349 miso_err_cnt++; 00350 } 00351 } 00352 } 00353 return 1; 00354 } 00355 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx. 00356 //---------------------------------------------------------------------------- 00357 unsigned char temp; 00358 bool reg_err; 00359 int reg_err_cnt; 00360 #define REG_ERR_THRS 5 00361 #define reg_check(addr1,addr2,reg_val){\ 00362 gCS_ADF=0;\ 00363 reg_err=false;\ 00364 spi.write(addr1);\ 00365 spi.write(addr2);\ 00366 spi.write(0xFF);\ 00367 temp = spi.write(0xFF);\ 00368 if(temp==reg_val)\ 00369 reg_err = false;\ 00370 else\ 00371 reg_err=true;\ 00372 gCS_ADF=1;\ 00373 } 00374 00375 #define initiate {\ 00376 gCS_ADF=0;\ 00377 spi.write(0xFF);\ 00378 spi.write(0xFF);\ 00379 gCS_ADF=1;\ 00380 reg_err=true;\ 00381 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\ 00382 gCS_ADF=0;\ 00383 spi.write(0x08);\ 00384 spi.write(0x14);\ 00385 spi.write(TRANSMIT_LEN_1);\ 00386 gCS_ADF=1;\ 00387 reg_check(0x28,0x14,TRANSMIT_LEN_1);\ 00388 }\ 00389 if(reg_err)\ 00390 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\ 00391 else\ 00392 /*gPC.printf("reg written successful %x \r\n",(int)temp)*/;\ 00393 reg_err=true;\ 00394 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\ 00395 gCS_ADF=0;\ 00396 spi.write(0x08);\ 00397 spi.write(0x15);\ 00398 spi.write(TRANSMIT_LEN_2);\ 00399 gCS_ADF=1;\ 00400 reg_check(0x28,0x15,TRANSMIT_LEN_2);\ 00401 }\ 00402 if(reg_err)\ 00403 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\ 00404 else\ 00405 gPC.printf("reg written successful %x \r\n",(int)temp);\ 00406 } 00407 00408 #define write_data {\ 00409 counter++;\ 00410 if(counter==584){\ 00411 finish_write_data=true;\ 00412 restart_adf_flag=true;\ 00413 counter=0;\ 00414 }\ 00415 gCS_ADF=0;\ 00416 spi.write(0x0B);\ 00417 spi.write(0x36);\ 00418 spi.write(0xFF);\ 00419 gCS_ADF=1;\ 00420 data_err_cnt=0;\ 00421 data_err=true;\ 00422 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\ 00423 gCS_ADF=0;\ 00424 if(buffer_state){\ 00425 spi.write(0x18);\ 00426 spi.write(0x20);\ 00427 for(unsigned char i=0; i<112;i++){\ 00428 spi.write(buffer_112[i]);\ 00429 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\ 00430 }\ 00431 }\ 00432 else{\ 00433 spi.write(0x18);\ 00434 spi.write(0x90);\ 00435 for(unsigned char i=0; i<112;i++){\ 00436 spi.write(buffer_112[i]);\ 00437 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\ 00438 }\ 00439 }\ 00440 gCS_ADF=1;\ 00441 wait_us(5);\ 00442 data_err=false;\ 00443 gCS_ADF=0;\ 00444 spi.write(0x38);\ 00445 if(buffer_state){\ 00446 spi.write(0x20);\ 00447 }\ 00448 else{\ 00449 spi.write(0x90);\ 00450 }\ 00451 spi.write(0xFF);\ 00452 for(unsigned char i=0; i<112;i++){\ 00453 temp_byte=spi.write(0xFF);\ 00454 if(buffer_112[i]!=temp_byte){\ 00455 data_err1[i]=1;\ 00456 data_err=true;\ 00457 }\ 00458 }\ 00459 gCS_ADF=1;\ 00460 /*SPI_mutex.unlock();*/\ 00461 if(data_err==false){\ 00462 buffer_state = !buffer_state;\ 00463 data_err_cnt++;\ 00464 }\ 00465 if(last_buffer){\ 00466 finish_write_data = true;\ 00467 /*gPC.puts("adf_off\r\n");*/\ 00468 }\ 00469 }\ 00470 } 00471 00472 #define check {\ 00473 check_status;\ 00474 /*gPC.printf("I 0x%X\r\n",(int)status);*/\ 00475 if(IRQ){\ 00476 get_com_oc_sw_status();\ 00477 /*gPC.printf("det\r\n");*/\ 00478 if(!ADF_off) {\ 00479 if(finish_write_data || restart_adf_flag) {\ 00480 write_data;\ 00481 ADF_off=true;\ 00482 T.stop();\ 00483 T.reset();\ 00484 T.start();\ 00485 /*ADF Temperature reading*/;\ 00486 get_temp_and_txcurr();\ 00487 } else {\ 00488 T.stop();\ 00489 T.reset();\ 00490 T.start();\ 00491 write_data;\ 00492 if(sent_tmfrom_SDcard){\ 00493 send_tm_from_SD_card_fun(buffer_112,last_buffer);\ 00494 }\ 00495 else snd_tm.transmit_data(buffer_112,&last_buffer);\ 00496 }\ 00497 } else {\ 00498 wait_ms(20);\ 00499 gCS_ADF=0;\ 00500 spi.write(0xB1);\ 00501 gCS_ADF=1;\ 00502 gPC.puts("transmission done\r\n");\ 00503 /*gPC.printf("Time taken by last write_data %f msecs\n", T.read_ms())*/;\ 00504 T.stop();\ 00505 T.reset();\ 00506 loop_on=false;\ 00507 break;\ 00508 /*if(restart_adf_flag)*/\ 00509 if(0)\ 00510 {\ 00511 restart_adf_flag=false;\ 00512 ADF_off=false;\ 00513 send_data;\ 00514 loop_on=true;\ 00515 CMD(CMD_PHY_TX);\ 00516 wait_us(2000);\ 00517 }\ 00518 }\ 00519 }\ 00520 else{\ 00521 if(T.read_us()>98000){\ 00522 data_irq_err=true;\ 00523 CMD(CMD_PHY_ON);\ 00524 gPC.printf("Data_error_detected");\ 00525 T.stop();\ 00526 T.reset();\ 00527 }\ 00528 }\ 00529 } 00530 00531 #define send_data {\ 00532 gCS_ADF=0;\ 00533 spi.write(0xBB);\ 00534 gCS_ADF=1;\ 00535 gCS_ADF=0;\ 00536 spi.write(0xFF);\ 00537 spi.write(0xFF);\ 00538 gCS_ADF=1;\ 00539 if(sent_tmfrom_SDcard){\ 00540 send_tm_from_SD_card_fun(buffer_112,last_buffer);\ 00541 }else{\ 00542 snd_tm.transmit_data(buffer_112,&last_buffer);\ 00543 }\ 00544 write_data;\ 00545 if(sent_tmfrom_SDcard){\ 00546 send_tm_from_SD_card_fun(buffer_112,last_buffer);\ 00547 }else{\ 00548 snd_tm.transmit_data(buffer_112,&last_buffer);\ 00549 }\ 00550 write_data;\ 00551 if(sent_tmfrom_SDcard){\ 00552 send_tm_from_SD_card_fun(buffer_112,last_buffer);\ 00553 }else{\ 00554 snd_tm.transmit_data(buffer_112,&last_buffer);\ 00555 }\ 00556 gCS_ADF=0;\ 00557 spi.write(0xB1);\ 00558 gCS_ADF=1;\ 00559 wait_us(300);\ 00560 gCS_ADF=0;\ 00561 spi.write(0xFF);\ 00562 spi.write(0xFF);\ 00563 gCS_ADF=1;\ 00564 gCS_ADF=0;\ 00565 spi.write(0xB5);\ 00566 gCS_ADF=1;\ 00567 wait_us(300);\ 00568 gCS_ADF=0;\ 00569 spi.write(0xFF);\ 00570 spi.write(0xFF);\ 00571 gCS_ADF=1;\ 00572 } 00573 00574 #define initial_adf_check {\ 00575 bool Configuration_Done=false;\ 00576 quit_configuration=false;\ 00577 bool reset_flag1 = 0;\ 00578 bool flag = false;\ 00579 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\ 00580 while((bbram_err_cnt<2)&&(quit_configuration==false)){\ 00581 /*assrt_phy_off;*/\ 00582 /*Assrt_phy_off Begin*/\ 00583 {\ 00584 int state_err_cnt = 0;\ 00585 CMD(CMD_PHY_OFF);\ 00586 if(cmd_err_flag){\ 00587 temp_return=1;\ 00588 }\ 00589 else{\ 00590 for(int i = 0 ; i < 40 ;i++){\ 00591 CMD(CMD_PHY_OFF);\ 00592 check_status;\ 00593 if(status == PHY_OFF){\ 00594 temp_return = 0;\ 00595 break;\ 00596 }\ 00597 else if(state_err_cnt>THRS){\ 00598 temp_return = 1;\ 00599 break;\ 00600 }\ 00601 else {\ 00602 wait_ms(1);\ 00603 }\ 00604 }\ 00605 }\ 00606 }\ 00607 /*Assrt_phy_off end*/\ 00608 reset_flag1=temp_return;\ 00609 if(!reset_flag1){\ 00610 bbram_write;\ 00611 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\ 00612 bbram_check;\ 00613 if(bbram_err==0){\ 00614 bbram_write_success=true;\ 00615 bbram_err_cnt=0;\ 00616 initiate;\ 00617 if(reg_err){\ 00618 rbp_err_cnt++;\ 00619 }\ 00620 else{\ 00621 rbp_err_cnt=0;\ 00622 /*gPC.printf("NO Reg err\r\n")*/;\ 00623 CMD(CMD_CONFIG_DEV);\ 00624 if(cmd_err_flag){\ 00625 reset_flag=1;\ 00626 gPC.printf("CMD ERR\r\n");\ 00627 loop_cntr++;\ 00628 if (loop_cntr > 30){loop_cntr = 0;break;}\ 00629 }\ 00630 else{\ 00631 reset_flag=0;\ 00632 /*gPC.printf("NO CMD ERR CONFIG_DONE\r\n")*/;\ 00633 quit_configuration=true;\ 00634 }\ 00635 }\ 00636 }\ 00637 else{\ 00638 bbram_write_success=false;\ 00639 bbram_err_cnt++;\ 00640 break;\ 00641 }\ 00642 }\ 00643 }\ 00644 else{\ 00645 break;\ 00646 }\ 00647 }\ 00648 if(reset_flag1){\ 00649 hardware_reset(0);\ 00650 hw_reset_err_cnt++;\ 00651 gPC.puts("Resetting hardware\r\n");\ 00652 }\ 00653 }\ 00654 if(hw_reset_err_cnt==HW_THRS){\ 00655 power_reset_flag=1;\ 00656 power_reset_count++;\ 00657 }\ 00658 else{\ 00659 Configuration_Done=true;\ 00660 gPC.printf("Configuration_Done\n");\ 00661 }\ 00662 } 00663 00664 #define configure_adf {\ 00665 reset_flags;\ 00666 initial_adf_check;\ 00667 gPC.puts("Config_part done\r\n");\ 00668 } 00669 //obsrs_flag must be put high in obsrs 00670 bool retransmit = true; 00671 bool configure = true; 00672 void transmit_adf(){ 00673 configure =true; 00674 00675 00676 while(retransmit||configure){ 00677 configure =0; 00678 retransmit=0; 00679 loop_conter = 0;//to prevent from going into infinite while loop 00680 while(power_reset_count<POWER_RESET_THRS){ 00681 restart_adf_flag=false; 00682 bool tx_err=false; 00683 configure_adf; 00684 send_data; 00685 /*PA MCR level*/; 00686 gCS_ADF=0; 00687 spi.write(0x1B); 00688 spi.write(0x07); 00689 // spi.write(0x35); 00690 // spi.write(0x36); 00691 spi.write(0x34); //PA Output = 30.8 00692 gCS_ADF=1; 00693 CMD(CMD_PHY_TX); 00694 wait_us(2000); 00695 T.start(); 00696 while(loop_on){ 00697 wait_us(20); 00698 check; 00699 if(data_irq_err||tx_err){ 00700 hw_reset_err_cnt++; 00701 hw_reset_flag=true; 00702 break; 00703 } 00704 } 00705 if(hw_reset_flag==true){ 00706 hardware_reset(0); 00707 } 00708 else{ 00709 break; 00710 } 00711 gPC.puts("after while looprn"); 00712 loop_conter++; 00713 if (loop_conter > 2){break;gPC.printf("\nERROR: TM DROPPED");}//to prevent from going into infinite while loop 00714 00715 } 00716 if(restart_adf_flag){ 00717 retransmit=true; 00718 restart_adf_flag=false; 00719 } 00720 } 00721 if(ack_head != NULL){ 00722 while(ack_head != NULL){ 00723 00724 Base_tm *temp_pointer = ack_head->next_TM; 00725 delete ack_head; 00726 // gPC.printf("deleting stuff\n\r"); 00727 ack_head = temp_pointer; 00728 } 00729 } 00730 } 00731 #endif
Generated on Tue Jul 12 2022 15:50:06 by
