11th feb i2c checking chaitu's code

Dependencies:   SimpleDMA eeprom mbed-rtos mbed

Fork of CDMS_CODE_FM_28JAN2017 by samp Srinivasan

Committer:
ee12b079
Date:
Sat Dec 10 16:24:56 2016 +0000
Revision:
334:71e9f4fdb387
Parent:
321:42bdefc37270
testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 1:a0055b3280c8 1 //without reset feature , with state checks.
ee12b079 321:42bdefc37270 2
ee12b079 172:c508bbf7e89a 3 InterruptIn IRQ(ADF_IRQ);
aniruddhv 52:0bd68655c651 4 //Ticker ticker;
ee12b079 321:42bdefc37270 5 #include "OBSRS.h"
shreeshas95 1:a0055b3280c8 6 bool loop_on;
shreeshas95 1:a0055b3280c8 7 bool ADF_off;
shreeshas95 1:a0055b3280c8 8 bool buffer_state;
ee12b079 9:e9eaada136c6 9 bool finish_write_data;
shreeshas95 1:a0055b3280c8 10 uint8_t signal = 0x00;
ee12b079 288:aa93d6652381 11 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x00,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};
ee12b079 268:ded5306a1fd1 12 bool data_irq_err=0;
ee12b079 268:ded5306a1fd1 13 bool data_err= false;
ee12b079 268:ded5306a1fd1 14 unsigned char temp_byte=0x00;
ee12b079 268:ded5306a1fd1 15 unsigned char data_err1[112];
ee12b079 268:ded5306a1fd1 16 unsigned char data_err_cnt=0;
ee12b079 268:ded5306a1fd1 17 unsigned int byte_count =0;
ee12b079 268:ded5306a1fd1 18 #define DATA_ERR_THRS 20
ee12b079 268:ded5306a1fd1 19 bool rolling_buffer_settings_error=true;
ee12b079 268:ded5306a1fd1 20 bool bbram_write_success=true;
ee12b079 268:ded5306a1fd1 21 int bbram_err_cnt=0;
ee12b079 268:ded5306a1fd1 22 int rbp_err_cnt=0;
ee12b079 268:ded5306a1fd1 23 bool reset_flag=false;
ee12b079 268:ded5306a1fd1 24 #define RBP_THRS 4
ee12b079 268:ded5306a1fd1 25 bool quit_configuration=false;
ee12b079 268:ded5306a1fd1 26 bool power_reset_flag=false;
ee12b079 268:ded5306a1fd1 27 unsigned int power_reset_count=0;
ee12b079 268:ded5306a1fd1 28 bool Configuration_done=false;
ee12b079 268:ded5306a1fd1 29 #define HW_THRS 2
ee12b079 317:31bb2e9eda85 30 bool hw_reset_flag = false;
ee12b079 317:31bb2e9eda85 31 uint8_t firstbyte;
ee12b079 317:31bb2e9eda85 32 uint8_t secondbyte;
ee12b079 321:42bdefc37270 33 unsigned char buffer_112[112];
ee12b079 317:31bb2e9eda85 34 //ADF temperature reading
ee12b079 317:31bb2e9eda85 35 #define temp_correction_value 0
ee12b079 317:31bb2e9eda85 36
ee12b079 268:ded5306a1fd1 37 #define TRANSMIT_LEN_1 0xFF
ee12b079 268:ded5306a1fd1 38 #define TRANSMIT_LEN_2 0xFF
ee12b079 268:ded5306a1fd1 39 /***/
ee12b079 268:ded5306a1fd1 40 Timer T;
ee12b079 9:e9eaada136c6 41
shreeshas95 1:a0055b3280c8 42 #define START_ADDRESS 0x020;
shreeshas95 1:a0055b3280c8 43 #define MISO_PIN PTE3
shreeshas95 1:a0055b3280c8 44 /**************Defining Counter Limits**************/
shreeshas95 1:a0055b3280c8 45 #define THRS 20
shreeshas95 1:a0055b3280c8 46 #define STATE_ERR_THRS 20
shreeshas95 1:a0055b3280c8 47 #define PHY_OFF_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 48 #define PHY_ON_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 49 #define PHY_TX_EXEC_TIME 600
shreeshas95 1:a0055b3280c8 50 /******DEFINING COMMANDS*********/
shreeshas95 1:a0055b3280c8 51 #define CMD_HW_RESET 0xC8
shreeshas95 1:a0055b3280c8 52 #define CMD_PHY_ON 0xB1
shreeshas95 1:a0055b3280c8 53 #define CMD_PHY_OFF 0xB0
shreeshas95 1:a0055b3280c8 54 #define CMD_PHY_TX 0xB5
shreeshas95 1:a0055b3280c8 55 #define CMD_CONFIG_DEV 0xBB
ee12b079 268:ded5306a1fd1 56 /**STATES**/
ee12b079 268:ded5306a1fd1 57 //=======================
ee12b079 268:ded5306a1fd1 58 #define PHY_OFF 0xB1
ee12b079 268:ded5306a1fd1 59 #define PHY_ON 0xB2
ee12b079 268:ded5306a1fd1 60 #define PHY_TX 0xB4
ee12b079 268:ded5306a1fd1 61 #define BUSY 0x00
ee12b079 268:ded5306a1fd1 62 //===================================================
ee12b079 268:ded5306a1fd1 63
ee12b079 317:31bb2e9eda85 64 #define POWER_RESET_THRS 2
ee12b079 317:31bb2e9eda85 65 #define HW_RESET_THRS 2
ee12b079 317:31bb2e9eda85 66
ee12b079 268:ded5306a1fd1 67 unsigned int Adf_data_counter=0;
ee12b079 268:ded5306a1fd1 68 unsigned char status =0;
ee12b079 268:ded5306a1fd1 69 unsigned int cmd_err_cnt=0;
ee12b079 268:ded5306a1fd1 70 unsigned int data_length;
ee12b079 268:ded5306a1fd1 71 unsigned int state_err_cnt=0;
ee12b079 268:ded5306a1fd1 72 unsigned int miso_err_cnt=0;
ee12b079 268:ded5306a1fd1 73 unsigned int hw_reset_err_cnt=0;
ee12b079 268:ded5306a1fd1 74 unsigned int counter =0;
ee12b079 268:ded5306a1fd1 75 bool temp_return = 0;
ee12b079 268:ded5306a1fd1 76 bool bcn_flag=0;
ee12b079 268:ded5306a1fd1 77 bool bbram_flag=0;
ee12b079 321:42bdefc37270 78 bool last_buffer =0;
ee12b079 268:ded5306a1fd1 79 bool stop_transmission=false;
ee12b079 268:ded5306a1fd1 80
ee12b079 268:ded5306a1fd1 81 #define reset_flags {\
ee12b079 268:ded5306a1fd1 82 finish_write_data = false;\
ee12b079 268:ded5306a1fd1 83 buffer_state = true;\
ee12b079 268:ded5306a1fd1 84 last_buffer = false;\
ee12b079 268:ded5306a1fd1 85 loop_on = true;\
ee12b079 268:ded5306a1fd1 86 ADF_off = false;\
ee12b079 268:ded5306a1fd1 87 buffer_state = true;\
ee12b079 268:ded5306a1fd1 88 loop_on = true;\
ee12b079 268:ded5306a1fd1 89 ADF_off = false;\
ee12b079 271:72529b247333 90 /*sent_tmfrom_SDcard = false;*/\
ee12b079 268:ded5306a1fd1 91 Adf_data_counter=0;\
ee12b079 268:ded5306a1fd1 92 status =0;\
ee12b079 268:ded5306a1fd1 93 cmd_err_cnt=0;\
ee12b079 268:ded5306a1fd1 94 data_length;\
ee12b079 268:ded5306a1fd1 95 state_err_cnt=0;\
ee12b079 268:ded5306a1fd1 96 miso_err_cnt=0;\
ee12b079 268:ded5306a1fd1 97 hw_reset_err_cnt=0;\
ee12b079 268:ded5306a1fd1 98 counter =0;\
ee12b079 268:ded5306a1fd1 99 bcn_flag=0;\
ee12b079 268:ded5306a1fd1 100 bbram_flag=0;\
ee12b079 268:ded5306a1fd1 101 stop_transmission=false;\
ee12b079 268:ded5306a1fd1 102 }
ee12b079 268:ded5306a1fd1 103
ee12b079 268:ded5306a1fd1 104
ee12b079 268:ded5306a1fd1 105 int err_arr[64];
ee12b079 268:ded5306a1fd1 106 bool bbram_err=false;
ee12b079 268:ded5306a1fd1 107 int err_idx=-1;
ee12b079 268:ded5306a1fd1 108 int err[64];
ee12b079 268:ded5306a1fd1 109 #define bbram_check gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 110 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 111 err_arr[i]=0;\
ee12b079 268:ded5306a1fd1 112 }\
ee12b079 268:ded5306a1fd1 113 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 114 err[i]=0;\
ee12b079 268:ded5306a1fd1 115 }\
ee12b079 268:ded5306a1fd1 116 bbram_err=false;\
ee12b079 268:ded5306a1fd1 117 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 118 spi.write(0x39);\
ee12b079 268:ded5306a1fd1 119 spi.write(0x00);\
ee12b079 268:ded5306a1fd1 120 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 121 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 122 err_arr[i]=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 123 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 268:ded5306a1fd1 124 err[i]=1;\
ee12b079 268:ded5306a1fd1 125 bbram_err=true;\
ee12b079 268:ded5306a1fd1 126 }\
ee12b079 268:ded5306a1fd1 127 }\
ee12b079 268:ded5306a1fd1 128 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 129 if(!bbram_err)\
ee12b079 268:ded5306a1fd1 130 gPC.printf("BBRAM verified \r\n");\
ee12b079 268:ded5306a1fd1 131 else\
ee12b079 268:ded5306a1fd1 132 gPC.printf("BBRAM error \r\n");\
ee12b079 176:a5bfe3ca60b1 133
ee12b079 268:ded5306a1fd1 134
ee12b079 268:ded5306a1fd1 135 bool tx_loop=1;
ee12b079 268:ded5306a1fd1 136
ee12b079 268:ded5306a1fd1 137 #define PRNT_ONCE {\
ee12b079 268:ded5306a1fd1 138 gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 268:ded5306a1fd1 139 }
ee12b079 268:ded5306a1fd1 140
ee12b079 268:ded5306a1fd1 141 #define bbram_write {\
ee12b079 268:ded5306a1fd1 142 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 143 spi.write(0xB0);\
ee12b079 268:ded5306a1fd1 144 wait_us(300);\
ee12b079 268:ded5306a1fd1 145 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 146 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 147 for(int i=0;i<66;i++){\
ee12b079 268:ded5306a1fd1 148 spi.write(bbram_buffer[i]);\
ee12b079 268:ded5306a1fd1 149 }\
ee12b079 268:ded5306a1fd1 150 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 151 }
ee12b079 268:ded5306a1fd1 152 //------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 153 // state checking functions
ee12b079 268:ded5306a1fd1 154 //bool assrt_phy_off( int, int, int);
ee12b079 268:ded5306a1fd1 155 //bool assrt_phy_on( int,int,int);
ee12b079 268:ded5306a1fd1 156 //bool assrt_phy_tx(int,int,int);
ee12b079 268:ded5306a1fd1 157
shreeshas95 1:a0055b3280c8 158 #define check_status {\
shreeshas95 1:a0055b3280c8 159 unsigned char stat=0;\
shreeshas95 1:a0055b3280c8 160 gCS_ADF=0;\
ee12b079 176:a5bfe3ca60b1 161 spi.write(0xFF);\
ee12b079 176:a5bfe3ca60b1 162 stat = spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 163 gCS_ADF=1;\
ee12b079 176:a5bfe3ca60b1 164 status = stat;\
shreeshas95 1:a0055b3280c8 165 }
ee12b079 271:72529b247333 166 /***********************/
ee12b079 271:72529b247333 167 /**********Restart ADF**************/
ee12b079 271:72529b247333 168
ee12b079 271:72529b247333 169 /**************************/
ee12b079 268:ded5306a1fd1 170
ee12b079 268:ded5306a1fd1 171 /*CMD_VAR*/
ee12b079 268:ded5306a1fd1 172 bool cmd_bit=true;
ee12b079 268:ded5306a1fd1 173 bool cmd_err_flag=false;
ee12b079 268:ded5306a1fd1 174 unsigned char command = 0x00;
ee12b079 271:72529b247333 175 void CMD(uint8_t command) {
ee12b079 271:72529b247333 176 cmd_err_cnt=0;
ee12b079 271:72529b247333 177 cmd_err_flag=false;
ee12b079 271:72529b247333 178 while(cmd_err_cnt<3) {
ee12b079 271:72529b247333 179 check_status;
ee12b079 271:72529b247333 180 cmd_bit=status&0x20;
ee12b079 271:72529b247333 181 if(cmd_bit) {
ee12b079 271:72529b247333 182 gCS_ADF=0;
ee12b079 271:72529b247333 183 spi.write(command);
ee12b079 271:72529b247333 184 gCS_ADF=1;
ee12b079 271:72529b247333 185 break;
ee12b079 271:72529b247333 186 } else {
ee12b079 271:72529b247333 187 wait_us(5);
ee12b079 271:72529b247333 188 cmd_err_cnt++;
ee12b079 271:72529b247333 189 }
ee12b079 271:72529b247333 190 }
ee12b079 271:72529b247333 191 if(cmd_err_cnt==3) {
ee12b079 271:72529b247333 192 cmd_err_flag=true;
ee12b079 271:72529b247333 193 }
ee12b079 268:ded5306a1fd1 194 }
ee12b079 271:72529b247333 195
ee12b079 271:72529b247333 196 // all three arguments are int
ee12b079 268:ded5306a1fd1 197 #define assrt_phy_off {\
ee12b079 268:ded5306a1fd1 198 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 199 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 200 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 201 temp_return=1;\
chaithanyarss 261:1e54415b34d3 202 }\
ee12b079 268:ded5306a1fd1 203 else{\
ee12b079 268:ded5306a1fd1 204 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 205 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 206 check_status;\
ee12b079 268:ded5306a1fd1 207 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 208 temp_return = 0;\
ee12b079 268:ded5306a1fd1 209 break;\
ee12b079 268:ded5306a1fd1 210 }\
ee12b079 268:ded5306a1fd1 211 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 212 temp_return = 1;\
ee12b079 268:ded5306a1fd1 213 break;\
ee12b079 268:ded5306a1fd1 214 }\
ee12b079 268:ded5306a1fd1 215 else {\
ee12b079 268:ded5306a1fd1 216 wait_ms(1);\
ee12b079 268:ded5306a1fd1 217 }\
shreeshas95 1:a0055b3280c8 218 }\
ee12b079 245:da9d1bd999da 219 }\
ee12b079 245:da9d1bd999da 220 }
ee12b079 268:ded5306a1fd1 221
ee12b079 317:31bb2e9eda85 222 bool dummy_digitalOut_1=0;
ee12b079 317:31bb2e9eda85 223 #define power_reset{\
ee12b079 317:31bb2e9eda85 224 dummy_digitalOut_1=0;\
ee12b079 317:31bb2e9eda85 225 wait_ms(10);\
ee12b079 317:31bb2e9eda85 226 dummy_digitalOut_1=1;\
ee12b079 317:31bb2e9eda85 227 power_reset_flag=false;\
ee12b079 317:31bb2e9eda85 228 power_reset_count++;\
ee12b079 317:31bb2e9eda85 229 wait_ms(10);\
ee12b079 317:31bb2e9eda85 230 }\
ee12b079 317:31bb2e9eda85 231
ee12b079 318:978d72f191f9 232 void get_temp_and_txcurr(){
ee12b079 317:31bb2e9eda85 233 /*ADF Temperature reading*/;
ee12b079 317:31bb2e9eda85 234 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 235 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 236 spi.write(0x24);
ee12b079 317:31bb2e9eda85 237 spi.write(0x10);
ee12b079 317:31bb2e9eda85 238 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 239 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 240 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 241 spi.write(0x25);
ee12b079 317:31bb2e9eda85 242 spi.write(0x02);
ee12b079 317:31bb2e9eda85 243 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 244 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 245 spi.write(0x1B);
ee12b079 317:31bb2e9eda85 246 spi.write(0x59);
ee12b079 317:31bb2e9eda85 247 spi.write(0x08);
ee12b079 317:31bb2e9eda85 248 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 249 uint16_t sum_temp = 0;
ee12b079 317:31bb2e9eda85 250 for(int i =0; i< 10;i++)
ee12b079 317:31bb2e9eda85 251 {
ee12b079 317:31bb2e9eda85 252 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 253 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 254 spi.write(0x27);
ee12b079 317:31bb2e9eda85 255 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 256 secondbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 257 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 258 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 259 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 260 spi.write(0x28);
ee12b079 317:31bb2e9eda85 261 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 262 firstbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 263 gCS_ADF=1;
ee12b079 317:31bb2e9eda85 264 gCS_ADF=0;
ee12b079 317:31bb2e9eda85 265 spi.write(0x3B);
ee12b079 317:31bb2e9eda85 266 spi.write(0x27);
ee12b079 317:31bb2e9eda85 267 spi.write(0xFF);
ee12b079 317:31bb2e9eda85 268 secondbyte = spi.write(0xFF);
ee12b079 317:31bb2e9eda85 269 gCS_ADF=1;
ee12b079 318:978d72f191f9 270 COM_ADF_TMP = firstbyte<<6;
ee12b079 318:978d72f191f9 271 COM_ADF_TMP += secondbyte;
ee12b079 318:978d72f191f9 272 COM_ADF_TMP = (COM_ADF_TMP/1.83) - 118.43 + temp_correction_value;
ee12b079 318:978d72f191f9 273 sum_temp+=COM_ADF_TMP;
ee12b079 317:31bb2e9eda85 274 }
ee12b079 318:978d72f191f9 275 COM_ADF_TMP = sum_temp/10;
ee12b079 318:978d72f191f9 276 uint8_t txcurr = (3.3*COM_TX_OC_FAULT)/(0.05)*100;
ee12b079 317:31bb2e9eda85 277 }
ee12b079 268:ded5306a1fd1 278
ee12b079 268:ded5306a1fd1 279 bool hardware_reset(int bcn_call)
ee12b079 268:ded5306a1fd1 280 {
ee12b079 317:31bb2e9eda85 281 if(hw_reset_err_cnt>HW_RESET_THRS){
ee12b079 317:31bb2e9eda85 282 power_reset_flag=true;
ee12b079 317:31bb2e9eda85 283 power_reset;
ee12b079 317:31bb2e9eda85 284 return 0;
ee12b079 317:31bb2e9eda85 285 }
ee12b079 317:31bb2e9eda85 286
ee12b079 268:ded5306a1fd1 287 for(int i= 0; i < 2 ; i++) {
shreeshas95 1:a0055b3280c8 288 gCS_ADF=0;
shreeshas95 1:a0055b3280c8 289 spi.write(CMD_HW_RESET);
shreeshas95 1:a0055b3280c8 290 gCS_ADF=1;
shreeshas95 1:a0055b3280c8 291 wait_ms(2);// Typically 1 ms
shreeshas95 1:a0055b3280c8 292 int count=0;
ee12b079 268:ded5306a1fd1 293 temp_return = 0;
ee12b079 268:ded5306a1fd1 294 while(count<10 && miso_err_cnt<10) {
ee12b079 268:ded5306a1fd1 295 if(MISO_PIN) {
ee12b079 268:ded5306a1fd1 296 // assrt_phy_off;
ee12b079 268:ded5306a1fd1 297 /*asseert_phyoff Starts**/
ee12b079 268:ded5306a1fd1 298 {\
ee12b079 268:ded5306a1fd1 299 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 300 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 301 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 302 temp_return=1;\
ee12b079 268:ded5306a1fd1 303 }\
ee12b079 268:ded5306a1fd1 304 else{\
ee12b079 268:ded5306a1fd1 305 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 306 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 307 check_status;\
ee12b079 268:ded5306a1fd1 308 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 309 temp_return = 0;\
ee12b079 268:ded5306a1fd1 310 break;\
ee12b079 268:ded5306a1fd1 311 }\
ee12b079 268:ded5306a1fd1 312 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 313 temp_return = 1;\
ee12b079 268:ded5306a1fd1 314 break;\
ee12b079 268:ded5306a1fd1 315 }\
ee12b079 268:ded5306a1fd1 316 else {\
ee12b079 268:ded5306a1fd1 317 wait_ms(1);\
ee12b079 268:ded5306a1fd1 318 }\
ee12b079 268:ded5306a1fd1 319 }\
ee12b079 268:ded5306a1fd1 320 }\
ee12b079 268:ded5306a1fd1 321 }\
ee12b079 268:ded5306a1fd1 322 /*Assert_phy_off_ends*/
ee12b079 268:ded5306a1fd1 323
ee12b079 268:ded5306a1fd1 324
ee12b079 268:ded5306a1fd1 325
ee12b079 268:ded5306a1fd1 326
ee12b079 268:ded5306a1fd1 327
shreeshas95 1:a0055b3280c8 328 if(!temp_return){
shreeshas95 1:a0055b3280c8 329 return 0;
shreeshas95 1:a0055b3280c8 330 }
shreeshas95 1:a0055b3280c8 331 count++;
ee12b079 268:ded5306a1fd1 332 } else {
shreeshas95 1:a0055b3280c8 333 wait_us(50);
shreeshas95 1:a0055b3280c8 334 miso_err_cnt++;
shreeshas95 1:a0055b3280c8 335 }
shreeshas95 1:a0055b3280c8 336 }
shreeshas95 1:a0055b3280c8 337 }
shreeshas95 1:a0055b3280c8 338 return 1;
shreeshas95 1:a0055b3280c8 339 }
ee12b079 268:ded5306a1fd1 340 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
shreeshas95 1:a0055b3280c8 341 //----------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 342 unsigned char temp;
ee12b079 268:ded5306a1fd1 343 bool reg_err;
ee12b079 268:ded5306a1fd1 344 int reg_err_cnt;
ee12b079 268:ded5306a1fd1 345 #define REG_ERR_THRS 5
ee12b079 268:ded5306a1fd1 346 #define reg_check(addr1,addr2,reg_val){\
ee12b079 268:ded5306a1fd1 347 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 348 reg_err=false;\
ee12b079 268:ded5306a1fd1 349 spi.write(addr1);\
ee12b079 268:ded5306a1fd1 350 spi.write(addr2);\
ee12b079 268:ded5306a1fd1 351 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 352 temp = spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 353 if(temp==reg_val)\
ee12b079 268:ded5306a1fd1 354 reg_err = false;\
ee12b079 268:ded5306a1fd1 355 else\
ee12b079 268:ded5306a1fd1 356 reg_err=true;\
ee12b079 268:ded5306a1fd1 357 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 358 }
ee12b079 268:ded5306a1fd1 359
ee12b079 268:ded5306a1fd1 360 #define initiate {\
shreeshas95 1:a0055b3280c8 361 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 362 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 363 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 364 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 365 reg_err=true;\
ee12b079 268:ded5306a1fd1 366 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 367 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 368 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 369 spi.write(0x14);\
ee12b079 268:ded5306a1fd1 370 spi.write(TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 371 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 372 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 373 }\
ee12b079 268:ded5306a1fd1 374 if(reg_err)\
ee12b079 268:ded5306a1fd1 375 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 376 else\
ee12b079 268:ded5306a1fd1 377 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 378 reg_err=true;\
ee12b079 268:ded5306a1fd1 379 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 380 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 381 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 382 spi.write(0x15);\
ee12b079 268:ded5306a1fd1 383 spi.write(TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 384 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 385 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 386 }\
ee12b079 268:ded5306a1fd1 387 if(reg_err)\
ee12b079 268:ded5306a1fd1 388 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 389 else\
ee12b079 268:ded5306a1fd1 390 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 391 }
ee12b079 268:ded5306a1fd1 392
ee12b079 268:ded5306a1fd1 393 #define write_data {\
ee12b079 268:ded5306a1fd1 394 counter++;\
ee12b079 271:72529b247333 395 if(counter==584){\
ee12b079 271:72529b247333 396 finish_write_data=true;\
ee12b079 271:72529b247333 397 restart_adf_flag=true;\
ee12b079 271:72529b247333 398 counter=0;\
ee12b079 271:72529b247333 399 }\
shreeshas95 1:a0055b3280c8 400 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 401 spi.write(0x0B);\
ee12b079 268:ded5306a1fd1 402 spi.write(0x36);\
ee12b079 268:ded5306a1fd1 403 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 404 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 405 data_err_cnt=0;\
ee12b079 268:ded5306a1fd1 406 data_err=true;\
ee12b079 268:ded5306a1fd1 407 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 268:ded5306a1fd1 408 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 409 if(buffer_state){\
ee12b079 268:ded5306a1fd1 410 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 411 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 412 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 413 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 414 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 415 }\
ee12b079 268:ded5306a1fd1 416 }\
ee12b079 268:ded5306a1fd1 417 else{\
ee12b079 268:ded5306a1fd1 418 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 419 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 420 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 421 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 422 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 423 }\
ee12b079 268:ded5306a1fd1 424 }\
ee12b079 268:ded5306a1fd1 425 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 426 wait_us(5);\
ee12b079 268:ded5306a1fd1 427 data_err=false;\
ee12b079 268:ded5306a1fd1 428 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 429 spi.write(0x38);\
ee12b079 268:ded5306a1fd1 430 if(buffer_state){\
ee12b079 268:ded5306a1fd1 431 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 432 }\
ee12b079 268:ded5306a1fd1 433 else{\
ee12b079 268:ded5306a1fd1 434 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 435 }\
ee12b079 268:ded5306a1fd1 436 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 437 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 438 temp_byte=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 439 if(buffer_112[i]!=temp_byte){\
ee12b079 268:ded5306a1fd1 440 data_err1[i]=1;\
ee12b079 268:ded5306a1fd1 441 data_err=true;\
ee12b079 268:ded5306a1fd1 442 }\
ee12b079 268:ded5306a1fd1 443 }\
shreeshas95 1:a0055b3280c8 444 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 445 /*SPI_mutex.unlock();*/\
ee12b079 268:ded5306a1fd1 446 if(data_err==false){\
ee12b079 268:ded5306a1fd1 447 buffer_state = !buffer_state;\
ee12b079 268:ded5306a1fd1 448 }\
ee12b079 268:ded5306a1fd1 449 data_err_cnt++;\
ee12b079 268:ded5306a1fd1 450 if(last_buffer){\
ee12b079 268:ded5306a1fd1 451 finish_write_data = true;\
ee12b079 268:ded5306a1fd1 452 /*gPC.puts("adf_off\r\n");*/\
ee12b079 268:ded5306a1fd1 453 }\
ee12b079 268:ded5306a1fd1 454 }\
ee12b079 268:ded5306a1fd1 455 }
ee12b079 268:ded5306a1fd1 456
ee12b079 268:ded5306a1fd1 457 #define check {\
ee12b079 268:ded5306a1fd1 458 check_status;\
ee12b079 268:ded5306a1fd1 459 /*gPC.printf("I 0x%X\r\n",(int)status);*/\
ee12b079 271:72529b247333 460 if(IRQ){\
ee12b079 268:ded5306a1fd1 461 /*gPC.printf("det\r\n");*/\
ee12b079 268:ded5306a1fd1 462 if(!ADF_off) {\
ee12b079 271:72529b247333 463 if(finish_write_data || restart_adf_flag) {\
ee12b079 268:ded5306a1fd1 464 write_data;\
ee12b079 268:ded5306a1fd1 465 ADF_off=true;\
ee12b079 317:31bb2e9eda85 466 T.stop();\
ee12b079 317:31bb2e9eda85 467 T.reset();\
ee12b079 317:31bb2e9eda85 468 T.start();\
ee12b079 317:31bb2e9eda85 469 /*ADF Temperature reading*/;\
ee12b079 318:978d72f191f9 470 get_temp_and_txcurr();\
ee12b079 268:ded5306a1fd1 471 } else {\
ee12b079 317:31bb2e9eda85 472 T.stop();\
ee12b079 317:31bb2e9eda85 473 T.reset();\
ee12b079 317:31bb2e9eda85 474 T.start();\
ee12b079 268:ded5306a1fd1 475 write_data;\
ee12b079 268:ded5306a1fd1 476 if(sent_tmfrom_SDcard)\
ee12b079 321:42bdefc37270 477 send_tm_from_SD_card_fun(buffer_112,last_buffer);\
ee12b079 268:ded5306a1fd1 478 else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 268:ded5306a1fd1 479 }\
ee12b079 268:ded5306a1fd1 480 } else {\
ee12b079 268:ded5306a1fd1 481 wait_ms(20);\
ee12b079 268:ded5306a1fd1 482 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 483 spi.write(0xB1);\
ee12b079 268:ded5306a1fd1 484 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 485 gPC.puts("transmission done\r\n");\
ee12b079 317:31bb2e9eda85 486 gPC.printf("Time taken by last write_data %f msecs\n", T.read_ms());\
ee12b079 317:31bb2e9eda85 487 T.stop();\
ee12b079 317:31bb2e9eda85 488 T.reset();\
ee12b079 268:ded5306a1fd1 489 loop_on=false;\
ee12b079 271:72529b247333 490 if(restart_adf_flag)\
ee12b079 271:72529b247333 491 {\
ee12b079 271:72529b247333 492 restart_adf_flag=false;\
ee12b079 271:72529b247333 493 ADF_off=false;\
ee12b079 271:72529b247333 494 send_data;\
ee12b079 271:72529b247333 495 loop_on=true;\
ee12b079 271:72529b247333 496 CMD(CMD_PHY_TX);\
ee12b079 271:72529b247333 497 wait_us(2000);\
ee12b079 271:72529b247333 498 }\
ee12b079 268:ded5306a1fd1 499 }\
ee12b079 268:ded5306a1fd1 500 }\
ee12b079 317:31bb2e9eda85 501 else{\
ee12b079 317:31bb2e9eda85 502 if(T.read_us()>98000){\
ee12b079 317:31bb2e9eda85 503 data_irq_err=true;\
ee12b079 317:31bb2e9eda85 504 CMD(CMD_PHY_ON);\
ee12b079 317:31bb2e9eda85 505 gPC.printf("Data_error_detected");\
ee12b079 317:31bb2e9eda85 506 T.stop();\
ee12b079 317:31bb2e9eda85 507 T.reset();\
ee12b079 317:31bb2e9eda85 508 }\
ee12b079 317:31bb2e9eda85 509 }\
ee12b079 268:ded5306a1fd1 510 }
ee12b079 268:ded5306a1fd1 511
ee12b079 268:ded5306a1fd1 512 #define send_data {\
ee12b079 9:e9eaada136c6 513 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 514 spi.write(0xBB);\
ee12b079 9:e9eaada136c6 515 gCS_ADF=1;\
ee12b079 9:e9eaada136c6 516 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 517 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 518 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 519 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 520 if(sent_tmfrom_SDcard){\
ee12b079 321:42bdefc37270 521 send_tm_from_SD_card_fun(buffer_112,last_buffer);\
shreeshas95 1:a0055b3280c8 522 }else{\
shreeshas95 1:a0055b3280c8 523 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 524 }\
shreeshas95 1:a0055b3280c8 525 write_data;\
shreeshas95 1:a0055b3280c8 526 if(sent_tmfrom_SDcard){\
ee12b079 321:42bdefc37270 527 send_tm_from_SD_card_fun(buffer_112,last_buffer);\
krishanprajapat 148:46763854fa83 528 }else{\
krishanprajapat 148:46763854fa83 529 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 148:46763854fa83 530 }\
krishanprajapat 148:46763854fa83 531 write_data;\
krishanprajapat 148:46763854fa83 532 if(sent_tmfrom_SDcard){\
ee12b079 321:42bdefc37270 533 send_tm_from_SD_card_fun(buffer_112,last_buffer);\
shreeshas95 1:a0055b3280c8 534 }else{\
shreeshas95 1:a0055b3280c8 535 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 536 }\
shreeshas95 1:a0055b3280c8 537 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 538 spi.write(0xB1);\
shreeshas95 1:a0055b3280c8 539 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 540 wait_us(300);\
shreeshas95 1:a0055b3280c8 541 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 542 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 543 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 544 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 545 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 546 spi.write(0xB5);\
shreeshas95 1:a0055b3280c8 547 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 548 wait_us(300);\
shreeshas95 1:a0055b3280c8 549 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 550 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 551 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 552 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 553 }
ee12b079 268:ded5306a1fd1 554
ee12b079 268:ded5306a1fd1 555 #define initial_adf_check {\
ee12b079 268:ded5306a1fd1 556 bool Configuration_Done=false;\
ee12b079 268:ded5306a1fd1 557 quit_configuration=false;\
ee12b079 268:ded5306a1fd1 558 bool reset_flag1 = 0;\
ee12b079 268:ded5306a1fd1 559 bool flag = false;\
ee12b079 268:ded5306a1fd1 560 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 561 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 562 /*assrt_phy_off;*/\
ee12b079 268:ded5306a1fd1 563 /*Assrt_phy_off Begin*/\
ee12b079 268:ded5306a1fd1 564 {\
ee12b079 268:ded5306a1fd1 565 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 566 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 567 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 568 temp_return=1;\
ee12b079 268:ded5306a1fd1 569 }\
ee12b079 268:ded5306a1fd1 570 else{\
ee12b079 268:ded5306a1fd1 571 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 572 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 573 check_status;\
ee12b079 268:ded5306a1fd1 574 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 575 temp_return = 0;\
ee12b079 268:ded5306a1fd1 576 break;\
ee12b079 268:ded5306a1fd1 577 }\
ee12b079 268:ded5306a1fd1 578 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 579 temp_return = 1;\
ee12b079 268:ded5306a1fd1 580 break;\
ee12b079 268:ded5306a1fd1 581 }\
ee12b079 268:ded5306a1fd1 582 else {\
ee12b079 268:ded5306a1fd1 583 wait_ms(1);\
ee12b079 268:ded5306a1fd1 584 }\
ee12b079 268:ded5306a1fd1 585 }\
ee12b079 268:ded5306a1fd1 586 }\
ee12b079 268:ded5306a1fd1 587 }\
ee12b079 268:ded5306a1fd1 588 /*Assrt_phy_off end*/\
ee12b079 268:ded5306a1fd1 589 reset_flag1=temp_return;\
ee12b079 268:ded5306a1fd1 590 if(!reset_flag1){\
ee12b079 268:ded5306a1fd1 591 bbram_write;\
ee12b079 268:ded5306a1fd1 592 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 593 bbram_check;\
ee12b079 268:ded5306a1fd1 594 if(bbram_err==0){\
ee12b079 268:ded5306a1fd1 595 bbram_write_success=true;\
ee12b079 268:ded5306a1fd1 596 bbram_err_cnt=0;\
ee12b079 268:ded5306a1fd1 597 initiate;\
ee12b079 268:ded5306a1fd1 598 if(reg_err){\
ee12b079 268:ded5306a1fd1 599 rbp_err_cnt++;\
ee12b079 268:ded5306a1fd1 600 }\
ee12b079 268:ded5306a1fd1 601 else{\
ee12b079 268:ded5306a1fd1 602 rbp_err_cnt=0;\
ee12b079 268:ded5306a1fd1 603 gPC.printf("NO Reg err\r\n");\
ee12b079 268:ded5306a1fd1 604 CMD(CMD_CONFIG_DEV);\
ee12b079 268:ded5306a1fd1 605 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 606 reset_flag=1;\
ee12b079 268:ded5306a1fd1 607 gPC.printf("CMD ERR\r\n");\
ee12b079 268:ded5306a1fd1 608 }\
ee12b079 268:ded5306a1fd1 609 else{\
ee12b079 268:ded5306a1fd1 610 reset_flag=0;\
ee12b079 268:ded5306a1fd1 611 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 268:ded5306a1fd1 612 quit_configuration=true;\
ee12b079 268:ded5306a1fd1 613 }\
ee12b079 268:ded5306a1fd1 614 }\
ee12b079 268:ded5306a1fd1 615 }\
ee12b079 268:ded5306a1fd1 616 else{\
ee12b079 268:ded5306a1fd1 617 bbram_write_success=false;\
ee12b079 268:ded5306a1fd1 618 bbram_err_cnt++;\
ee12b079 268:ded5306a1fd1 619 break;\
ee12b079 268:ded5306a1fd1 620 }\
ee12b079 268:ded5306a1fd1 621 }\
ee12b079 268:ded5306a1fd1 622 }\
ee12b079 268:ded5306a1fd1 623 else{\
ee12b079 268:ded5306a1fd1 624 break;\
ee12b079 268:ded5306a1fd1 625 }\
ee12b079 268:ded5306a1fd1 626 }\
ee12b079 268:ded5306a1fd1 627 if(reset_flag1){\
ee12b079 268:ded5306a1fd1 628 hardware_reset(0);\
ee12b079 268:ded5306a1fd1 629 hw_reset_err_cnt++;\
ee12b079 268:ded5306a1fd1 630 gPC.puts("Resetting hardware\r\n");\
ee12b079 268:ded5306a1fd1 631 }\
ee12b079 268:ded5306a1fd1 632 }\
ee12b079 268:ded5306a1fd1 633 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 268:ded5306a1fd1 634 power_reset_flag=1;\
ee12b079 268:ded5306a1fd1 635 power_reset_count++;\
ee12b079 268:ded5306a1fd1 636 }\
ee12b079 268:ded5306a1fd1 637 else{\
ee12b079 268:ded5306a1fd1 638 Configuration_Done=true;\
ee12b079 268:ded5306a1fd1 639 gPC.printf("Configuration_Done\n");\
ee12b079 268:ded5306a1fd1 640 }\
ee12b079 268:ded5306a1fd1 641 }
ee12b079 268:ded5306a1fd1 642
aniruddhv 52:0bd68655c651 643 #define configure_adf {\
ee12b079 268:ded5306a1fd1 644 reset_flags;\
aniruddhv 52:0bd68655c651 645 initial_adf_check;\
ee12b079 268:ded5306a1fd1 646 gPC.puts("Config_part done\r\n");\
ee12b079 9:e9eaada136c6 647 }
ee12b079 9:e9eaada136c6 648
ee12b079 321:42bdefc37270 649 void transmit_adf(){
ee12b079 321:42bdefc37270 650 while(power_reset_count<POWER_RESET_THRS){
ee12b079 321:42bdefc37270 651 restart_adf_flag=false;
ee12b079 321:42bdefc37270 652 bool tx_err=false;
ee12b079 321:42bdefc37270 653 configure_adf;
ee12b079 321:42bdefc37270 654 send_data;
ee12b079 321:42bdefc37270 655 /*PA MCR level*/;
ee12b079 321:42bdefc37270 656 gCS_ADF=0;
ee12b079 321:42bdefc37270 657 spi.write(0x1B);
ee12b079 321:42bdefc37270 658 spi.write(0x07);
ee12b079 321:42bdefc37270 659 spi.write(0x35);
ee12b079 321:42bdefc37270 660 gCS_ADF=1;
ee12b079 321:42bdefc37270 661 CMD(CMD_PHY_TX);
ee12b079 321:42bdefc37270 662 wait_us(2000);
ee12b079 321:42bdefc37270 663 T.start();
ee12b079 321:42bdefc37270 664 while(loop_on){
ee12b079 321:42bdefc37270 665 wait_us(20);
ee12b079 321:42bdefc37270 666 check;
ee12b079 321:42bdefc37270 667 if(data_irq_err||tx_err){
ee12b079 321:42bdefc37270 668 hw_reset_err_cnt++;
ee12b079 321:42bdefc37270 669 hw_reset_flag=true;
ee12b079 321:42bdefc37270 670 break;
ee12b079 321:42bdefc37270 671 }
ee12b079 321:42bdefc37270 672 }
ee12b079 321:42bdefc37270 673 if(hw_reset_flag==true){
ee12b079 321:42bdefc37270 674 hardware_reset(0);
ee12b079 321:42bdefc37270 675 }
ee12b079 321:42bdefc37270 676 else{
ee12b079 321:42bdefc37270 677 break;
ee12b079 321:42bdefc37270 678 }
ee12b079 321:42bdefc37270 679 gPC.puts("after while looprn");
ee12b079 321:42bdefc37270 680 }
ee12b079 334:71e9f4fdb387 681 }