Interrupt_test

Dependencies:   mbed-rtos mbed

Fork of ADF_test_2 by shubham c

Committer:
ee12b079
Date:
Fri Jul 08 07:30:40 2016 +0000
Revision:
19:a4ce74cca3fa
Parent:
18:25e7644115f2
Integrating with ADF2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ee12b079 19:a4ce74cca3fa 1 //without reset feature , with state checks.
ee12b079 19:a4ce74cca3fa 2 //Ticker ticker;
ee12b079 19:a4ce74cca3fa 3 #include<iostream>
ee12b079 19:a4ce74cca3fa 4 #include"mbed.h"
ee12b079 19:a4ce74cca3fa 5 #define ADF_IRQ PTA14
ee12b079 19:a4ce74cca3fa 6 #define SPI_MOSI PTE1
ee12b079 19:a4ce74cca3fa 7 #define SPI_MISO PTE3
ee12b079 19:a4ce74cca3fa 8 #define SPI_CLK PTE2
ee12b079 19:a4ce74cca3fa 9 #define SPI_CS_ADF PTA15
ee12b079 19:a4ce74cca3fa 10 Serial gPC( USBTX, USBRX );
ee12b079 19:a4ce74cca3fa 11 SPI spi(PTE1, PTE3, PTE2);
ee12b079 19:a4ce74cca3fa 12 DigitalOut gCS_ADF(SPI_CS_ADF);
ee12b079 19:a4ce74cca3fa 13 DigitalOut led(LED_RED);
ee12b079 19:a4ce74cca3fa 14 InterruptIn IRQ(ADF_IRQ);
krishanprajapat 1:0b0579f5bbef 15
ee12b079 19:a4ce74cca3fa 16 bool loop_on;
ee12b079 19:a4ce74cca3fa 17 bool ADF_off;
ee12b079 19:a4ce74cca3fa 18 bool buffer_state;
ee12b079 19:a4ce74cca3fa 19 bool finish_write_data;
ee12b079 19:a4ce74cca3fa 20 uint8_t signal = 0x00;
ee12b079 19:a4ce74cca3fa 21 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,0x7F,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 19:a4ce74cca3fa 22 bool data_irq_err=0;
ee12b079 19:a4ce74cca3fa 23 bool data_err= false;
ee12b079 19:a4ce74cca3fa 24 unsigned char temp_byte=0x00;
ee12b079 19:a4ce74cca3fa 25 unsigned char data_err1[112];
ee12b079 19:a4ce74cca3fa 26 unsigned char data_err_cnt=0;
ee12b079 19:a4ce74cca3fa 27 unsigned int byte_count =0;
ee12b079 19:a4ce74cca3fa 28 #define DATA_ERR_THRS 20
ee12b079 19:a4ce74cca3fa 29 bool rolling_buffer_settings_error=true;
ee12b079 19:a4ce74cca3fa 30 bool bbram_write_success=true;
ee12b079 19:a4ce74cca3fa 31 int bbram_err_cnt=0;
ee12b079 19:a4ce74cca3fa 32 int rbp_err_cnt=0;
ee12b079 19:a4ce74cca3fa 33 bool reset_flag=false;
ee12b079 19:a4ce74cca3fa 34 #define RBP_THRS 4
ee12b079 19:a4ce74cca3fa 35 bool quit_configuration=false;
ee12b079 19:a4ce74cca3fa 36 bool power_reset_flag=false;
ee12b079 19:a4ce74cca3fa 37 unsigned int power_reset_count=0;
ee12b079 19:a4ce74cca3fa 38 bool Configuration_done=false;
ee12b079 19:a4ce74cca3fa 39 #define HW_THRS 2
ee12b079 19:a4ce74cca3fa 40
ee12b079 19:a4ce74cca3fa 41 //int initialise_card();
ee12b079 19:a4ce74cca3fa 42 //int disk_initialize();
ee12b079 19:a4ce74cca3fa 43 //------------------------------------------------------------------------
ee12b079 19:a4ce74cca3fa 44 // state checking functions
ee12b079 19:a4ce74cca3fa 45 //bool assrt_phy_off( int, int, int);
ee12b079 19:a4ce74cca3fa 46 //bool assrt_phy_on( int,int,int);
ee12b079 19:a4ce74cca3fa 47 //bool assrt_phy_tx(int,int,int);
ee12b079 19:a4ce74cca3fa 48
ee12b079 19:a4ce74cca3fa 49 #define TRANSMIT_LEN_1 0xFF
ee12b079 19:a4ce74cca3fa 50 #define TRANSMIT_LEN_2 0xFF
ee12b079 19:a4ce74cca3fa 51 /***/
ee12b079 19:a4ce74cca3fa 52 Timer T;
ee12b079 19:a4ce74cca3fa 53
ee12b079 17:f410d4327247 54 #define START_ADDRESS 0x020;
ee12b079 17:f410d4327247 55 #define MISO_PIN PTE3
ee12b079 17:f410d4327247 56 /**************Defining Counter Limits**************/
ee12b079 17:f410d4327247 57 #define THRS 20
ee12b079 17:f410d4327247 58 #define STATE_ERR_THRS 20
ee12b079 17:f410d4327247 59 #define PHY_OFF_EXEC_TIME 300
ee12b079 17:f410d4327247 60 #define PHY_ON_EXEC_TIME 300
ee12b079 17:f410d4327247 61 #define PHY_TX_EXEC_TIME 600
ee12b079 17:f410d4327247 62 /******DEFINING COMMANDS*********/
ee12b079 17:f410d4327247 63 #define CMD_HW_RESET 0xC8
ee12b079 17:f410d4327247 64 #define CMD_PHY_ON 0xB1
ee12b079 17:f410d4327247 65 #define CMD_PHY_OFF 0xB0
ee12b079 17:f410d4327247 66 #define CMD_PHY_TX 0xB5
ee12b079 17:f410d4327247 67 #define CMD_CONFIG_DEV 0xBB
ee12b079 17:f410d4327247 68 /**STATES**/
ee12b079 17:f410d4327247 69 //=======================
ee12b079 17:f410d4327247 70 #define PHY_OFF 0xB1
ee12b079 17:f410d4327247 71 #define PHY_ON 0xB2
ee12b079 17:f410d4327247 72 #define PHY_TX 0xB4
ee12b079 17:f410d4327247 73 #define BUSY 0x00
ee12b079 17:f410d4327247 74 //===================================================
krishanprajapat 0:578d0f87988f 75
krishanprajapat 0:578d0f87988f 76 unsigned int Adf_data_counter=0;
krishanprajapat 0:578d0f87988f 77 unsigned char status =0;
krishanprajapat 0:578d0f87988f 78 unsigned int cmd_err_cnt=0;
krishanprajapat 3:bac82a182b28 79 unsigned int data_length;
krishanprajapat 0:578d0f87988f 80 unsigned int state_err_cnt=0;
krishanprajapat 0:578d0f87988f 81 unsigned int miso_err_cnt=0;
krishanprajapat 0:578d0f87988f 82 unsigned int hw_reset_err_cnt=0;
krishanprajapat 3:bac82a182b28 83 unsigned int counter =0;
ee12b079 17:f410d4327247 84 bool temp_return = 0;
krishanprajapat 0:578d0f87988f 85 bool bcn_flag=0;
krishanprajapat 0:578d0f87988f 86 bool bbram_flag=0;
krishanprajapat 0:578d0f87988f 87
krishanprajapat 0:578d0f87988f 88 bool stop_transmission=false;
ee12b079 17:f410d4327247 89
ee12b079 17:f410d4327247 90 #define reset_flags {\
ee12b079 18:25e7644115f2 91 finish_write_data = false;\
ee12b079 18:25e7644115f2 92 buffer_state = true;\
ee12b079 18:25e7644115f2 93 last_buffer = false;\
ee12b079 18:25e7644115f2 94 loop_on = true;\
ee12b079 18:25e7644115f2 95 ADF_off = false;\
ee12b079 19:a4ce74cca3fa 96 buffer_state = true;\
ee12b079 19:a4ce74cca3fa 97 loop_on = true;\
ee12b079 19:a4ce74cca3fa 98 ADF_off = false;\
ee12b079 19:a4ce74cca3fa 99 sent_tmfrom_SDcard = false;\
ee12b079 14:eee578d96cfe 100 Adf_data_counter=0;\
ee12b079 14:eee578d96cfe 101 status =0;\
ee12b079 14:eee578d96cfe 102 cmd_err_cnt=0;\
ee12b079 14:eee578d96cfe 103 data_length;\
ee12b079 14:eee578d96cfe 104 state_err_cnt=0;\
ee12b079 14:eee578d96cfe 105 miso_err_cnt=0;\
ee12b079 14:eee578d96cfe 106 hw_reset_err_cnt=0;\
ee12b079 14:eee578d96cfe 107 counter =0;\
ee12b079 14:eee578d96cfe 108 bcn_flag=0;\
ee12b079 14:eee578d96cfe 109 bbram_flag=0;\
ee12b079 14:eee578d96cfe 110 stop_transmission=false;\
ee12b079 14:eee578d96cfe 111 }
ee12b079 19:a4ce74cca3fa 112
ee12b079 19:a4ce74cca3fa 113
ee12b079 17:f410d4327247 114 int err_arr[64];
ee12b079 17:f410d4327247 115 bool bbram_err=false;
ee12b079 17:f410d4327247 116 int err_idx=-1;
ee12b079 17:f410d4327247 117 int err[64];
ee12b079 17:f410d4327247 118 #define bbram_check gCS_ADF=0;\
ee12b079 17:f410d4327247 119 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 120 err_arr[i]=0;\
ee12b079 17:f410d4327247 121 }\
ee12b079 17:f410d4327247 122 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 123 err[i]=0;\
ee12b079 17:f410d4327247 124 }\
ee12b079 17:f410d4327247 125 bbram_err=false;\
ee12b079 17:f410d4327247 126 gCS_ADF=0;\
ee12b079 17:f410d4327247 127 spi.write(0x39);\
ee12b079 17:f410d4327247 128 spi.write(0x00);\
ee12b079 17:f410d4327247 129 spi.write(0xFF);\
ee12b079 17:f410d4327247 130 for(int i=0;i<64;i++){\
ee12b079 17:f410d4327247 131 err_arr[i]=spi.write(0xFF);\
ee12b079 17:f410d4327247 132 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 17:f410d4327247 133 err[i]=1;\
ee12b079 17:f410d4327247 134 bbram_err=true;\
ee12b079 17:f410d4327247 135 }\
ee12b079 17:f410d4327247 136 }\
ee12b079 17:f410d4327247 137 gCS_ADF=1;\
ee12b079 17:f410d4327247 138 if(!bbram_err)\
ee12b079 17:f410d4327247 139 gPC.printf("BBRAM verified \r\n");\
ee12b079 17:f410d4327247 140 else\
ee12b079 17:f410d4327247 141 gPC.printf("BBRAM error \r\n");\
ee12b079 17:f410d4327247 142
ee12b079 17:f410d4327247 143
ee12b079 17:f410d4327247 144 bool tx_loop=1;
krishanprajapat 0:578d0f87988f 145
ee12b079 19:a4ce74cca3fa 146 #define PRNT_ONCE {\
ee12b079 19:a4ce74cca3fa 147 gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 17:f410d4327247 148 }
ee12b079 17:f410d4327247 149
krishanprajapat 0:578d0f87988f 150 #define bbram_write {\
krishanprajapat 0:578d0f87988f 151 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 152 spi.write(0xB0);\
krishanprajapat 0:578d0f87988f 153 wait_us(300);\
krishanprajapat 0:578d0f87988f 154 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 155 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 156 for(int i=0;i<66;i++){\
krishanprajapat 0:578d0f87988f 157 spi.write(bbram_buffer[i]);\
krishanprajapat 0:578d0f87988f 158 }\
krishanprajapat 0:578d0f87988f 159 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 160 }
krishanprajapat 0:578d0f87988f 161 //------------------------------------------------------------------------
krishanprajapat 0:578d0f87988f 162 // state checking functions
krishanprajapat 0:578d0f87988f 163 //bool assrt_phy_off( int, int, int);
krishanprajapat 0:578d0f87988f 164 //bool assrt_phy_on( int,int,int);
krishanprajapat 0:578d0f87988f 165 //bool assrt_phy_tx(int,int,int);
krishanprajapat 0:578d0f87988f 166
krishanprajapat 0:578d0f87988f 167 #define check_status {\
krishanprajapat 0:578d0f87988f 168 unsigned char stat=0;\
krishanprajapat 0:578d0f87988f 169 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 170 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 171 stat = spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 172 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 173 status = stat;\
krishanprajapat 0:578d0f87988f 174 }
krishanprajapat 0:578d0f87988f 175
ee12b079 17:f410d4327247 176 /*CMD_VAR*/
ee12b079 17:f410d4327247 177 bool cmd_bit=true;
ee12b079 17:f410d4327247 178 bool cmd_err_flag=false;
ee12b079 17:f410d4327247 179 unsigned char command = 0x00;
ee12b079 17:f410d4327247 180 #define CMD(command) {\
ee12b079 17:f410d4327247 181 cmd_err_cnt=0;\
ee12b079 17:f410d4327247 182 cmd_err_flag=false;\
ee12b079 17:f410d4327247 183 while(cmd_err_cnt<3) {\
krishanprajapat 0:578d0f87988f 184 check_status;\
ee12b079 17:f410d4327247 185 cmd_bit=status&0x20;\
ee12b079 17:f410d4327247 186 if(cmd_bit) {\
ee12b079 17:f410d4327247 187 gCS_ADF=0;\
ee12b079 17:f410d4327247 188 spi.write(command);\
ee12b079 17:f410d4327247 189 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 190 break;\
ee12b079 17:f410d4327247 191 } else {\
ee12b079 17:f410d4327247 192 wait_us(5);\
krishanprajapat 0:578d0f87988f 193 cmd_err_cnt++;\
krishanprajapat 0:578d0f87988f 194 }\
krishanprajapat 0:578d0f87988f 195 }\
ee12b079 17:f410d4327247 196 if(cmd_err_cnt==3) {\
ee12b079 17:f410d4327247 197 cmd_err_flag=true;\
ee12b079 17:f410d4327247 198 }\
ee12b079 17:f410d4327247 199 }\
ee12b079 17:f410d4327247 200 // all three arguments are int\
ee12b079 17:f410d4327247 201 #define assrt_phy_off {\
ee12b079 17:f410d4327247 202 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 203 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 204 if(cmd_err_flag){\
ee12b079 17:f410d4327247 205 temp_return=1;\
ee12b079 17:f410d4327247 206 }\
ee12b079 17:f410d4327247 207 else{\
ee12b079 17:f410d4327247 208 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 209 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 210 check_status;\
ee12b079 17:f410d4327247 211 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 212 temp_return = 0;\
ee12b079 17:f410d4327247 213 break;\
ee12b079 17:f410d4327247 214 }\
ee12b079 17:f410d4327247 215 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 216 temp_return = 1;\
ee12b079 17:f410d4327247 217 break;\
ee12b079 17:f410d4327247 218 }\
ee12b079 17:f410d4327247 219 else {\
ee12b079 17:f410d4327247 220 wait_ms(1);\
ee12b079 17:f410d4327247 221 }\
ee12b079 17:f410d4327247 222 }\
ee12b079 17:f410d4327247 223 }\
ee12b079 19:a4ce74cca3fa 224 }
krishanprajapat 0:578d0f87988f 225
krishanprajapat 0:578d0f87988f 226
ee12b079 17:f410d4327247 227 bool hardware_reset(int bcn_call)
ee12b079 17:f410d4327247 228 {
ee12b079 17:f410d4327247 229 for(int i= 0; i < 2 ; i++) {
krishanprajapat 0:578d0f87988f 230 gCS_ADF=0;
krishanprajapat 0:578d0f87988f 231 spi.write(CMD_HW_RESET);
krishanprajapat 0:578d0f87988f 232 gCS_ADF=1;
krishanprajapat 0:578d0f87988f 233 wait_ms(2);// Typically 1 ms
krishanprajapat 0:578d0f87988f 234 int count=0;
ee12b079 17:f410d4327247 235 temp_return = 0;
ee12b079 17:f410d4327247 236 while(count<10 && miso_err_cnt<10) {
ee12b079 17:f410d4327247 237 if(MISO_PIN) {
ee12b079 17:f410d4327247 238 /*asseert_phyoff Starts**/
ee12b079 17:f410d4327247 239 {\
ee12b079 17:f410d4327247 240 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 241 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 242 if(cmd_err_flag){\
ee12b079 17:f410d4327247 243 temp_return=1;\
ee12b079 17:f410d4327247 244 }\
ee12b079 17:f410d4327247 245 else{\
ee12b079 17:f410d4327247 246 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 247 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 248 check_status;\
ee12b079 17:f410d4327247 249 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 250 temp_return = 0;\
ee12b079 17:f410d4327247 251 break;\
ee12b079 17:f410d4327247 252 }\
ee12b079 17:f410d4327247 253 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 254 temp_return = 1;\
ee12b079 17:f410d4327247 255 break;\
ee12b079 17:f410d4327247 256 }\
ee12b079 17:f410d4327247 257 else {\
ee12b079 17:f410d4327247 258 wait_ms(1);\
ee12b079 17:f410d4327247 259 }\
ee12b079 17:f410d4327247 260 }\
ee12b079 17:f410d4327247 261 }\
ee12b079 17:f410d4327247 262 }\
ee12b079 17:f410d4327247 263 /*Assert_phy_off_ends*/
ee12b079 17:f410d4327247 264
ee12b079 17:f410d4327247 265
ee12b079 17:f410d4327247 266
ee12b079 17:f410d4327247 267
ee12b079 17:f410d4327247 268
krishanprajapat 0:578d0f87988f 269 if(!temp_return){
krishanprajapat 0:578d0f87988f 270 return 0;
krishanprajapat 0:578d0f87988f 271 }
krishanprajapat 0:578d0f87988f 272 count++;
ee12b079 17:f410d4327247 273 } else {
krishanprajapat 0:578d0f87988f 274 wait_us(50);
krishanprajapat 0:578d0f87988f 275 miso_err_cnt++;
krishanprajapat 0:578d0f87988f 276 }
krishanprajapat 0:578d0f87988f 277 }
krishanprajapat 0:578d0f87988f 278 }
krishanprajapat 0:578d0f87988f 279 return 1;
krishanprajapat 0:578d0f87988f 280 }
ee12b079 17:f410d4327247 281 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
krishanprajapat 0:578d0f87988f 282 //----------------------------------------------------------------------------
ee12b079 17:f410d4327247 283 unsigned char temp;
ee12b079 17:f410d4327247 284 bool reg_err;
ee12b079 17:f410d4327247 285 int reg_err_cnt;
ee12b079 17:f410d4327247 286 #define REG_ERR_THRS 5
ee12b079 19:a4ce74cca3fa 287 #define reg_check(addr1,addr2,reg_val){\
ee12b079 17:f410d4327247 288 gCS_ADF=0;\
ee12b079 17:f410d4327247 289 reg_err=false;\
ee12b079 17:f410d4327247 290 spi.write(addr1);\
ee12b079 17:f410d4327247 291 spi.write(addr2);\
ee12b079 17:f410d4327247 292 spi.write(0xFF);\
ee12b079 17:f410d4327247 293 temp = spi.write(0xFF);\
ee12b079 17:f410d4327247 294 if(temp==reg_val)\
ee12b079 17:f410d4327247 295 reg_err = false;\
ee12b079 17:f410d4327247 296 else\
ee12b079 17:f410d4327247 297 reg_err=true;\
ee12b079 17:f410d4327247 298 gCS_ADF=1;\
ee12b079 19:a4ce74cca3fa 299 }
krishanprajapat 0:578d0f87988f 300
ee12b079 17:f410d4327247 301 #define initiate {\
ee12b079 17:f410d4327247 302 gCS_ADF=0;\
ee12b079 17:f410d4327247 303 spi.write(0xFF);\
ee12b079 17:f410d4327247 304 spi.write(0xFF);\
ee12b079 17:f410d4327247 305 gCS_ADF=1;\
ee12b079 17:f410d4327247 306 reg_err=true;\
ee12b079 17:f410d4327247 307 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 308 gCS_ADF=0;\
ee12b079 17:f410d4327247 309 spi.write(0x08);\
ee12b079 17:f410d4327247 310 spi.write(0x14);\
ee12b079 17:f410d4327247 311 spi.write(TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 312 gCS_ADF=1;\
ee12b079 17:f410d4327247 313 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 17:f410d4327247 314 }\
ee12b079 17:f410d4327247 315 if(reg_err)\
ee12b079 19:a4ce74cca3fa 316 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 317 else\
ee12b079 19:a4ce74cca3fa 318 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 319 reg_err=true;\
ee12b079 17:f410d4327247 320 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 17:f410d4327247 321 gCS_ADF=0;\
ee12b079 17:f410d4327247 322 spi.write(0x08);\
ee12b079 17:f410d4327247 323 spi.write(0x15);\
ee12b079 17:f410d4327247 324 spi.write(TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 325 gCS_ADF=1;\
ee12b079 17:f410d4327247 326 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 17:f410d4327247 327 }\
ee12b079 17:f410d4327247 328 if(reg_err)\
ee12b079 19:a4ce74cca3fa 329 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 330 else\
ee12b079 19:a4ce74cca3fa 331 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 17:f410d4327247 332 }\
ee12b079 17:f410d4327247 333 #define write_data {\
ee12b079 17:f410d4327247 334 counter++;\
ee12b079 17:f410d4327247 335 gCS_ADF=0;\
ee12b079 17:f410d4327247 336 spi.write(0x0B);\
ee12b079 17:f410d4327247 337 spi.write(0x36);\
ee12b079 17:f410d4327247 338 spi.write(0xFF);\
ee12b079 17:f410d4327247 339 gCS_ADF=1;\
ee12b079 17:f410d4327247 340 data_err_cnt=0;\
ee12b079 17:f410d4327247 341 data_err=true;\
ee12b079 17:f410d4327247 342 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 17:f410d4327247 343 gCS_ADF=0;\
ee12b079 17:f410d4327247 344 if(buffer_state){\
ee12b079 17:f410d4327247 345 spi.write(0x18);\
ee12b079 17:f410d4327247 346 spi.write(0x20);\
ee12b079 17:f410d4327247 347 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 348 if(bypass_adf)\
ee12b079 17:f410d4327247 349 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 350 else\
ee12b079 17:f410d4327247 351 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 352 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 353 }\
ee12b079 17:f410d4327247 354 }\
ee12b079 17:f410d4327247 355 else{\
ee12b079 17:f410d4327247 356 spi.write(0x18);\
ee12b079 17:f410d4327247 357 spi.write(0x90);\
ee12b079 17:f410d4327247 358 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 359 if(bypass_adf)\
ee12b079 17:f410d4327247 360 gPC.putc(buffer_112[i]);\
ee12b079 17:f410d4327247 361 else\
ee12b079 17:f410d4327247 362 spi.write(buffer_112[i]);\
ee12b079 17:f410d4327247 363 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 17:f410d4327247 364 }\
ee12b079 17:f410d4327247 365 }\
ee12b079 17:f410d4327247 366 gCS_ADF=1;\
ee12b079 17:f410d4327247 367 wait_us(5);\
ee12b079 17:f410d4327247 368 data_err=false;\
ee12b079 17:f410d4327247 369 gCS_ADF=0;\
ee12b079 17:f410d4327247 370 spi.write(0x38);\
ee12b079 17:f410d4327247 371 if(buffer_state){\
ee12b079 17:f410d4327247 372 spi.write(0x20);\
ee12b079 17:f410d4327247 373 }\
ee12b079 17:f410d4327247 374 else{\
ee12b079 17:f410d4327247 375 spi.write(0x90);\
ee12b079 17:f410d4327247 376 }\
ee12b079 17:f410d4327247 377 spi.write(0xFF);\
ee12b079 17:f410d4327247 378 for(unsigned char i=0; i<112;i++){\
ee12b079 17:f410d4327247 379 temp_byte=spi.write(0xFF);\
ee12b079 17:f410d4327247 380 if(buffer_112[i]!=temp_byte){\
ee12b079 17:f410d4327247 381 data_err1[i]=1;\
ee12b079 17:f410d4327247 382 data_err=true;\
ee12b079 17:f410d4327247 383 }\
ee12b079 17:f410d4327247 384 }\
ee12b079 17:f410d4327247 385 gCS_ADF=1;\
ee12b079 17:f410d4327247 386 /*SPI_mutex.unlock();*/\
ee12b079 17:f410d4327247 387 if(data_err==false){\
ee12b079 17:f410d4327247 388 buffer_state = !buffer_state;\
ee12b079 17:f410d4327247 389 }\
ee12b079 17:f410d4327247 390 data_err_cnt++;\
ee12b079 17:f410d4327247 391 if(last_buffer){\
ee12b079 17:f410d4327247 392 finish_write_data = true;\
ee12b079 17:f410d4327247 393 /*gPC.puts("adf_off\r\n");*/\
ee12b079 17:f410d4327247 394 }\
ee12b079 17:f410d4327247 395 }\
ee12b079 17:f410d4327247 396 }
ee12b079 17:f410d4327247 397
ee12b079 19:a4ce74cca3fa 398 #define check {\
ee12b079 19:a4ce74cca3fa 399 check_status;\
ee12b079 19:a4ce74cca3fa 400 gPC.printf("I 0x%X\r\n",(int)status);\
ee12b079 19:a4ce74cca3fa 401 if(IRQ || bypass_adf){\
ee12b079 19:a4ce74cca3fa 402 gPC.printf("det\r\n");\
ee12b079 19:a4ce74cca3fa 403 if(!ADF_off) {\
ee12b079 19:a4ce74cca3fa 404 if(finish_write_data) {\
ee12b079 19:a4ce74cca3fa 405 write_data;\
ee12b079 19:a4ce74cca3fa 406 ADF_off=true;\
ee12b079 19:a4ce74cca3fa 407 } else {\
ee12b079 19:a4ce74cca3fa 408 write_data;\
ee12b079 19:a4ce74cca3fa 409 if(sent_tmfrom_SDcard)\
ee12b079 19:a4ce74cca3fa 410 send_tm_from_SD_card_fun();\
ee12b079 19:a4ce74cca3fa 411 else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 19:a4ce74cca3fa 412 }\
ee12b079 19:a4ce74cca3fa 413 } else {\
ee12b079 19:a4ce74cca3fa 414 wait_ms(20);\
ee12b079 19:a4ce74cca3fa 415 gCS_ADF=0;\
ee12b079 19:a4ce74cca3fa 416 spi.write(0xB1);\
ee12b079 19:a4ce74cca3fa 417 gCS_ADF=1;\
ee12b079 19:a4ce74cca3fa 418 gPC.puts("transmission done\r\n");\
ee12b079 19:a4ce74cca3fa 419 loop_on=false;\
ee12b079 19:a4ce74cca3fa 420 }\
ee12b079 19:a4ce74cca3fa 421 }\
ee12b079 19:a4ce74cca3fa 422 else{\
ee12b079 17:f410d4327247 423 if(T.read_us()>98000){\
ee12b079 17:f410d4327247 424 data_irq_err=true;\
ee12b079 19:a4ce74cca3fa 425 CMD(CMD_PHY_ON);\
ee12b079 19:a4ce74cca3fa 426 gPC.puts("Data_error_detected");\
ee12b079 17:f410d4327247 427 }\
ee12b079 17:f410d4327247 428 }\
krishanprajapat 0:578d0f87988f 429 }
krishanprajapat 0:578d0f87988f 430
krishanprajapat 0:578d0f87988f 431 #define send_data {\
krishanprajapat 0:578d0f87988f 432 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 433 spi.write(0xBB);\
krishanprajapat 0:578d0f87988f 434 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 435 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 436 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 437 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 438 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 439 if(sent_tmfrom_SDcard){\
ee12b079 19:a4ce74cca3fa 440 send_tm_from_SD_card_fun();\
ee12b079 19:a4ce74cca3fa 441 }else{\
ee12b079 19:a4ce74cca3fa 442 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 0:578d0f87988f 443 }\
krishanprajapat 0:578d0f87988f 444 write_data;\
krishanprajapat 0:578d0f87988f 445 if(sent_tmfrom_SDcard){\
ee12b079 19:a4ce74cca3fa 446 send_tm_from_SD_card_fun();\
krishanprajapat 0:578d0f87988f 447 }else{\
ee12b079 19:a4ce74cca3fa 448 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 0:578d0f87988f 449 }\
krishanprajapat 0:578d0f87988f 450 write_data;\
krishanprajapat 0:578d0f87988f 451 if(sent_tmfrom_SDcard){\
ee12b079 19:a4ce74cca3fa 452 send_tm_from_SD_card_fun();\
krishanprajapat 0:578d0f87988f 453 }else{\
ee12b079 19:a4ce74cca3fa 454 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 0:578d0f87988f 455 }\
krishanprajapat 0:578d0f87988f 456 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 457 spi.write(0xB1);\
krishanprajapat 0:578d0f87988f 458 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 459 wait_us(300);\
krishanprajapat 0:578d0f87988f 460 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 461 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 462 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 463 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 464 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 465 spi.write(0xB5);\
krishanprajapat 0:578d0f87988f 466 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 467 wait_us(300);\
krishanprajapat 0:578d0f87988f 468 gCS_ADF=0;\
krishanprajapat 0:578d0f87988f 469 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 470 spi.write(0xFF);\
krishanprajapat 0:578d0f87988f 471 gCS_ADF=1;\
krishanprajapat 0:578d0f87988f 472 }
ee12b079 19:a4ce74cca3fa 473
ee12b079 17:f410d4327247 474 #define initial_adf_check {\
ee12b079 17:f410d4327247 475 bool Configuration_Done=false;\
ee12b079 17:f410d4327247 476 quit_configuration=false;\
ee12b079 17:f410d4327247 477 bool reset_flag1 = 0;\
ee12b079 17:f410d4327247 478 bool flag = false;\
ee12b079 17:f410d4327247 479 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 480 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 481 /*assrt_phy_off;*/\
ee12b079 17:f410d4327247 482 /*Assrt_phy_off Begin*/\
ee12b079 17:f410d4327247 483 {\
ee12b079 17:f410d4327247 484 int state_err_cnt = 0;\
ee12b079 17:f410d4327247 485 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 486 if(cmd_err_flag){\
ee12b079 17:f410d4327247 487 temp_return=1;\
ee12b079 17:f410d4327247 488 }\
ee12b079 17:f410d4327247 489 else{\
ee12b079 17:f410d4327247 490 for(int i = 0 ; i < 40 ;i++){\
ee12b079 17:f410d4327247 491 CMD(CMD_PHY_OFF);\
ee12b079 17:f410d4327247 492 check_status;\
ee12b079 17:f410d4327247 493 if(status == PHY_OFF){\
ee12b079 17:f410d4327247 494 temp_return = 0;\
ee12b079 17:f410d4327247 495 break;\
ee12b079 17:f410d4327247 496 }\
ee12b079 17:f410d4327247 497 else if(state_err_cnt>THRS){\
ee12b079 17:f410d4327247 498 temp_return = 1;\
ee12b079 17:f410d4327247 499 break;\
ee12b079 17:f410d4327247 500 }\
ee12b079 17:f410d4327247 501 else {\
ee12b079 17:f410d4327247 502 wait_ms(1);\
ee12b079 17:f410d4327247 503 }\
ee12b079 17:f410d4327247 504 }\
ee12b079 17:f410d4327247 505 }\
ee12b079 17:f410d4327247 506 }\
ee12b079 17:f410d4327247 507 /*Assrt_phy_off end*/\
ee12b079 17:f410d4327247 508 reset_flag1=temp_return;\
ee12b079 17:f410d4327247 509 if(!reset_flag1){\
ee12b079 17:f410d4327247 510 bbram_write;\
ee12b079 17:f410d4327247 511 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 17:f410d4327247 512 bbram_check;\
ee12b079 17:f410d4327247 513 if(bbram_err==0){\
ee12b079 17:f410d4327247 514 bbram_write_success=true;\
ee12b079 17:f410d4327247 515 bbram_err_cnt=0;\
ee12b079 17:f410d4327247 516 initiate;\
ee12b079 17:f410d4327247 517 if(reg_err){\
ee12b079 17:f410d4327247 518 rbp_err_cnt++;\
ee12b079 17:f410d4327247 519 }\
ee12b079 17:f410d4327247 520 else{\
ee12b079 17:f410d4327247 521 rbp_err_cnt=0;\
ee12b079 17:f410d4327247 522 gPC.printf("NO Reg err\r\n");\
ee12b079 17:f410d4327247 523 CMD(CMD_CONFIG_DEV);\
ee12b079 17:f410d4327247 524 if(cmd_err_flag){\
ee12b079 17:f410d4327247 525 reset_flag=1;\
ee12b079 17:f410d4327247 526 gPC.printf("CMD ERR\r\n");\
ee12b079 17:f410d4327247 527 }\
ee12b079 17:f410d4327247 528 else{\
ee12b079 17:f410d4327247 529 reset_flag=0;\
ee12b079 17:f410d4327247 530 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 17:f410d4327247 531 quit_configuration=true;\
ee12b079 17:f410d4327247 532 }\
ee12b079 17:f410d4327247 533 }\
ee12b079 17:f410d4327247 534 }\
ee12b079 17:f410d4327247 535 else{\
ee12b079 17:f410d4327247 536 bbram_write_success=false;\
ee12b079 17:f410d4327247 537 bbram_err_cnt++;\
ee12b079 17:f410d4327247 538 break;\
ee12b079 17:f410d4327247 539 }\
ee12b079 17:f410d4327247 540 }\
ee12b079 17:f410d4327247 541 }\
ee12b079 17:f410d4327247 542 else{\
ee12b079 17:f410d4327247 543 break;\
ee12b079 17:f410d4327247 544 }\
ee12b079 17:f410d4327247 545 }\
ee12b079 17:f410d4327247 546 if(reset_flag1){\
ee12b079 17:f410d4327247 547 hardware_reset(0);\
ee12b079 17:f410d4327247 548 hw_reset_err_cnt++;\
ee12b079 17:f410d4327247 549 gPC.puts("Resetting hardware\r\n");\
ee12b079 17:f410d4327247 550 }\
ee12b079 17:f410d4327247 551 }\
ee12b079 17:f410d4327247 552 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 17:f410d4327247 553 power_reset_flag=1;\
ee12b079 17:f410d4327247 554 power_reset_count++;\
ee12b079 17:f410d4327247 555 }\
ee12b079 17:f410d4327247 556 else{\
ee12b079 17:f410d4327247 557 Configuration_Done=true;\
ee12b079 17:f410d4327247 558 gPC.printf("Configuration_Done\n");\
ee12b079 17:f410d4327247 559 }\
ee12b079 17:f410d4327247 560 }
krishanprajapat 0:578d0f87988f 561
ee12b079 19:a4ce74cca3fa 562 #define configure_adf {\
ee12b079 19:a4ce74cca3fa 563 reset_flags;\
ee12b079 19:a4ce74cca3fa 564 initial_adf_check;\
ee12b079 19:a4ce74cca3fa 565 gPC.puts("Config_part done\r\n");\
krishanprajapat 0:578d0f87988f 566 }
ee12b079 19:a4ce74cca3fa 567
ee12b079 19:a4ce74cca3fa 568 #define transmit_adf {\
ee12b079 19:a4ce74cca3fa 569 configure_adf;\
ee12b079 19:a4ce74cca3fa 570 send_data;\
ee12b079 19:a4ce74cca3fa 571 CMD(CMD_PHY_TX);\
ee12b079 19:a4ce74cca3fa 572 wait_us(2000);\
ee12b079 19:a4ce74cca3fa 573 while(loop_on){\
ee12b079 19:a4ce74cca3fa 574 wait_us(20);\
ee12b079 19:a4ce74cca3fa 575 check;\
ee12b079 19:a4ce74cca3fa 576 if(data_irq_err){\
ee12b079 19:a4ce74cca3fa 577 break;\
ee12b079 19:a4ce74cca3fa 578 }\
ee12b079 19:a4ce74cca3fa 579 }\
ee12b079 19:a4ce74cca3fa 580 /*gPC.puts("after while loop\r\n");*/\
ee12b079 19:a4ce74cca3fa 581 }
ee12b079 19:a4ce74cca3fa 582