CDMS code for testing sbc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Revision:
245:da9d1bd999da
Parent:
203:424308159a56
Child:
261:1e54415b34d3
--- a/adf.h	Sat Jul 09 13:11:25 2016 +0000
+++ b/adf.h	Sun Jul 10 13:47:26 2016 +0000
@@ -7,29 +7,38 @@
 bool buffer_state;
 bool finish_write_data;
 uint8_t signal = 0x00;
-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,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00};
+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};
+bool data_irq_err=0;
+bool data_err= false;
+unsigned char temp_byte=0x00;
+unsigned char data_err1[112];
+unsigned char data_err_cnt=0;
+unsigned int byte_count =0;
+#define DATA_ERR_THRS 20
+bool rolling_buffer_settings_error=true;
+bool bbram_write_success=true;
+int bbram_err_cnt=0;
+int rbp_err_cnt=0;
+bool reset_flag=false;
+#define RBP_THRS 4
+bool quit_configuration=false;
+bool power_reset_flag=false;
+unsigned int power_reset_count=0;
+bool Configuration_done=false;
+#define HW_THRS 2
  
 //int initialise_card();
 //int disk_initialize();
- 
-#define bbram_write {\
-     SPI_mutex.lock();\
-    gCS_ADF=0;\
-    spi.write(0xB0);\
-    wait_us(300);\
-    gCS_ADF=1;\
-    gCS_ADF=0;\
-    for(int i=0;i<66;i++){\
-        spi.write(bbram_buffer[i]);\
-    }\
-    gCS_ADF=1;\
-    SPI_mutex.unlock();\
-}
 //------------------------------------------------------------------------
 // state checking functions
 //bool assrt_phy_off( int, int, int);
 //bool assrt_phy_on( int,int,int);
 //bool assrt_phy_tx(int,int,int);
+
+#define TRANSMIT_LEN_1 0xFF
+#define TRANSMIT_LEN_2 0xFF
+/***/
+Timer T;
  
 #define START_ADDRESS 0x020;
 #define MISO_PIN PTE3
@@ -45,7 +54,105 @@
 #define CMD_PHY_OFF 0xB0
 #define CMD_PHY_TX 0xB5
 #define CMD_CONFIG_DEV 0xBB
+/**STATES**/
+//=======================
+#define PHY_OFF 0xB1
+#define PHY_ON 0xB2
+#define PHY_TX 0xB4
+#define BUSY 0x00
+//===================================================
+
+unsigned int Adf_data_counter=0;
+unsigned char status =0;
+unsigned int cmd_err_cnt=0;
+unsigned int data_length;
+unsigned int state_err_cnt=0;
+unsigned int miso_err_cnt=0;
+unsigned int hw_reset_err_cnt=0;
+unsigned int counter =0;
+bool temp_return = 0;
+bool bcn_flag=0;
+bool bbram_flag=0;
+
+bool stop_transmission=false;
+
+#define reset_flags {\
+finish_write_data = false;\
+buffer_state = true;\
+last_buffer = false;\
+loop_on = true;\
+ADF_off = false;\
+buffer_state = true;\
+loop_on = true;\
+ADF_off = false;\
+sent_tmfrom_SDcard = false;\
+Adf_data_counter=0;\
+status =0;\
+cmd_err_cnt=0;\
+data_length;\
+state_err_cnt=0;\
+miso_err_cnt=0;\
+hw_reset_err_cnt=0;\
+counter =0;\
+bcn_flag=0;\
+bbram_flag=0;\
+stop_transmission=false;\
+    }
+
+
+int err_arr[64];
+bool bbram_err=false;
+int err_idx=-1;
+int err[64];
+#define bbram_check gCS_ADF=0;\
+    for(int i=0;i<64;i++){\
+        err_arr[i]=0;\
+        }\
+    for(int i=0;i<64;i++){\
+        err[i]=0;\
+        }\
+    bbram_err=false;\
+    gCS_ADF=0;\
+    spi.write(0x39);\
+    spi.write(0x00);\
+    spi.write(0xFF);\
+    for(int i=0;i<64;i++){\
+        err_arr[i]=spi.write(0xFF);\
+        if(err_arr[i]!=bbram_buffer[i+2]){\
+            err[i]=1;\
+            bbram_err=true;\
+            }\
+    }\
+    gCS_ADF=1;\
+    if(!bbram_err)\
+        gPC.printf("BBRAM verified \r\n");\
+    else\
+        gPC.printf("BBRAM error \r\n");\
  
+
+bool tx_loop=1;
+
+#define PRNT_ONCE {\
+    gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
+    }
+ 
+#define bbram_write {\
+    gCS_ADF=0;\
+    spi.write(0xB0);\
+    wait_us(300);\
+    gCS_ADF=1;\
+    gCS_ADF=0;\
+    for(int i=0;i<66;i++){\
+        spi.write(bbram_buffer[i]);\
+    }\
+    gCS_ADF=1;\
+}
+//------------------------------------------------------------------------
+// state checking functions
+//bool assrt_phy_off( int, int, int);
+//bool assrt_phy_on( int,int,int);
+//bool assrt_phy_tx(int,int,int);
+
 #define check_status {\
     unsigned char stat=0;\
     gCS_ADF=0;\
@@ -54,97 +161,106 @@
     gCS_ADF=1;\
     status = stat;\
 }
- 
-// all three arguments are int
-#define assrt_phy_off(return_this) {\
-    int cmd_err_cnt = 0;\
-    int spi_err_cnt = 0;\
-    int state_err_cnt = 0;\
-    for(int i = 0 ; i < 40 ;i++){\
+
+/*CMD_VAR*/
+bool cmd_bit=true;
+bool cmd_err_flag=false;
+unsigned char command = 0x00;
+#define CMD(command) {\
+    cmd_err_cnt=0;\
+    cmd_err_flag=false;\
+    while(cmd_err_cnt<3) {\
         check_status;\
-        if(status == 0xB1){\
-            return_this = 0;\
+        cmd_bit=status&0x20;\
+        if(cmd_bit) {\
+            gCS_ADF=0;\
+            spi.write(command);\
+            gCS_ADF=1;\
             break;\
-        }\
-        else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){\
-            return_this = 1;\
-            break;\
+        } else {\
+            wait_us(5);\
+            cmd_err_cnt++;\
         }\
-        else if(state_err_cnt>STATE_ERR_THRS){\
-            return_this = 1;\
-            break;\
+    }\
+    if(cmd_err_cnt==3) {\
+        cmd_err_flag=true;\
+    }\
+}
+// all three arguments are int\
+#define assrt_phy_off {\
+    int state_err_cnt = 0;\
+    CMD(CMD_PHY_OFF);\
+    if(cmd_err_flag){\
+        temp_return=1;\
         }\
-        else if( (status & 0xA0) == 0xA0 ){\
-            gCS_ADF=0;\
-            spi.write(CMD_PHY_OFF);\
-            gCS_ADF=1;\
-            wait_us(PHY_OFF_EXEC_TIME);\
-            state_err_cnt++;\
-        }\
-        else if(status&0x80==0x00){\
-            wait_ms(5);\
-            spi_err_cnt++;\
-        }\
-        else {\
-            wait_ms(1);\
-            cmd_err_cnt++;\
+    else{\
+        for(int i = 0 ; i < 40 ;i++){\
+            CMD(CMD_PHY_OFF);\
+            check_status;\
+            if(status == PHY_OFF){\
+                temp_return = 0;\
+            break;\
+            }\
+            else if(state_err_cnt>THRS){\
+                temp_return = 1;\
+            break;\
+            }\
+            else {\
+                wait_ms(1);\
+            }\
         }\
     }\
 }
- 
- 
-#define initial_adf_check {\
-    spi.write(CMD_PHY_OFF);\
-    int tempReturn = 0;\
-    bool flag = false;\
-    while( hw_reset_err_cnt < 2 ){\
-        assrt_phy_off( tempReturn);\
-        if( !tempReturn ){\
-            bbram_write;\
-            bbram_flag=1;\
-            flag = true;\
-            break;\
-        }\
-        else{\
-            hardware_reset(0);\
-            hw_reset_err_cnt++;\
-            gPC.puts("Resetting hardware\r\n");\
-        }\
-    }\
-    if( flag == false ){\
-        gPC.puts("Seems to be SPI problem\r\n");\
-    }\
-    assrt_phy_off(tempReturn);\
-    if(!bbram_flag){\
-        bcn_flag=1;\
-     }\
-}
- 
-unsigned char status =0;
-unsigned int cmd_err_cnt=0;
-unsigned int state_err_cnt=0;
-unsigned int miso_err_cnt=0;
-unsigned int hw_reset_err_cnt=0;
-bool bcn_flag=0;
-bool bbram_flag=0;
- 
-bool hardware_reset(int bcn_call){
-    for(int i= 0; i < 20 ; i++){
+
+
+bool hardware_reset(int bcn_call)
+{
+    for(int i= 0; i < 2 ; i++) {
         gCS_ADF=0;
         spi.write(CMD_HW_RESET);
         gCS_ADF=1;
         wait_ms(2);// Typically 1 ms
         int count=0;
-        int temp_return = 0;
-        while(count<10 && miso_err_cnt<10){      
-            if(MISO_PIN){
-                assrt_phy_off(temp_return);
+        temp_return = 0;
+        while(count<10 && miso_err_cnt<10) {
+            if(MISO_PIN) {
+//                assrt_phy_off;
+/*asseert_phyoff Starts**/
+{\
+    int state_err_cnt = 0;\
+    CMD(CMD_PHY_OFF);\
+    if(cmd_err_flag){\
+        temp_return=1;\
+        }\
+    else{\
+        for(int i = 0 ; i < 40 ;i++){\
+            CMD(CMD_PHY_OFF);\
+            check_status;\
+            if(status == PHY_OFF){\
+                temp_return = 0;\
+            break;\
+            }\
+            else if(state_err_cnt>THRS){\
+                temp_return = 1;\
+            break;\
+            }\
+            else {\
+                wait_ms(1);\
+            }\
+        }\
+    }\
+}\
+/*Assert_phy_off_ends*/
+
+
+
+
+
                 if(!temp_return){
                     return 0;
                 }
                 count++;
-            }
-            else{
+            } else {
                 wait_us(50);
                 miso_err_cnt++;
             }
@@ -152,46 +268,158 @@
     }
     return 1;
 }
- 
-//for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx. 
+//for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
 //----------------------------------------------------------------------------
- 
-# define initiate {\
-    SPI_mutex.lock();\
+unsigned char temp;
+bool reg_err;
+int reg_err_cnt;
+#define REG_ERR_THRS 5
+#define reg_check(addr1,addr2,reg_val){\
+ gCS_ADF=0;\
+        reg_err=false;\
+        spi.write(addr1);\
+        spi.write(addr2);\
+        spi.write(0xFF);\
+        temp = spi.write(0xFF);\
+        if(temp==reg_val)\
+            reg_err = false;\
+        else\
+            reg_err=true;\
+    gCS_ADF=1;\
+}
+
+#define initiate {\
     gCS_ADF=0;\
     spi.write(0xFF);\
     spi.write(0xFF);\
     gCS_ADF=1;\
-    gCS_ADF=0;\
-    spi.write(0x08);\
-    spi.write(0x14);\
-    spi.write(0xFF);\
-    gCS_ADF=1;\
+    reg_err=true;\
+    for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
+        gCS_ADF=0;\
+        spi.write(0x08);\
+        spi.write(0x14);\
+        spi.write(TRANSMIT_LEN_1);\
+        gCS_ADF=1;\
+        reg_check(0x28,0x14,TRANSMIT_LEN_1);\
+    }\
+    if(reg_err)\
+        gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
+    else\
+        gPC.printf("reg written successful %x \r\n",(int)temp);\
+    reg_err=true;\
+    for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
+        gCS_ADF=0;\
+        spi.write(0x08);\
+        spi.write(0x15);\
+        spi.write(TRANSMIT_LEN_2);\
+        gCS_ADF=1;\
+        reg_check(0x28,0x15,TRANSMIT_LEN_2);\
+    }\
+    if(reg_err)\
+        gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
+    else\
+        gPC.printf("reg written successful %x \r\n",(int)temp);\
+}
+
+#define write_data {\
+    counter++;\
     gCS_ADF=0;\
-    spi.write(0x08);\
-    spi.write(0x15);\
-    spi.write(0xFF);\
-    gCS_ADF=1;\
-    gCS_ADF=0;\
-    spi.write(0x09);\
-    spi.write(0x24);\
-    spi.write(0x20);\
+        spi.write(0x0B);\
+        spi.write(0x36);\
+        spi.write(0xFF);\
     gCS_ADF=1;\
-    gCS_ADF=0;\
-    spi.write(0x09);\
-    spi.write(0x37);\
-    spi.write(0xE0);\
+    data_err_cnt=0;\
+    data_err=true;\
+    while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
+        gCS_ADF=0;\
+        if(buffer_state){\
+            spi.write(0x18);\
+            spi.write(0x20);\
+            for(unsigned char i=0; i<112;i++){\
+                if(bypass_adf)\
+                    gPC.putc(buffer_112[i]);\
+                else\
+                    spi.write(buffer_112[i]);\
+                    /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
+            }\
+        }\
+        else{\
+            spi.write(0x18);\
+            spi.write(0x90);\
+            for(unsigned char i=0; i<112;i++){\
+                if(bypass_adf)\
+                    gPC.putc(buffer_112[i]);\
+                else\
+                    spi.write(buffer_112[i]);\
+                /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
+            }\
+        }\
+        gCS_ADF=1;\
+        wait_us(5);\
+        data_err=false;\
+        gCS_ADF=0;\
+        spi.write(0x38);\
+        if(buffer_state){\
+            spi.write(0x20);\
+            }\
+        else{\
+            spi.write(0x90);\
+            }\
+        spi.write(0xFF);\
+        for(unsigned char i=0; i<112;i++){\
+            temp_byte=spi.write(0xFF);\
+            if(buffer_112[i]!=temp_byte){\
+                data_err1[i]=1;\
+                data_err=true;\
+                }\
+        }\
     gCS_ADF=1;\
-    gCS_ADF=0;\
-    spi.write(0x09);\
-    spi.write(0x36);\
-    spi.write(0x70);\
-    gCS_ADF=1;\
-    gCS_ADF=0;\
-    spi.write(0x09);\
-    spi.write(0x39);\
-    spi.write(0x10);\
-    gCS_ADF=1;\
+    /*SPI_mutex.unlock();*/\
+    if(data_err==false){\
+    buffer_state = !buffer_state;\
+    }\
+    data_err_cnt++;\
+    if(last_buffer){\
+        finish_write_data = true;\
+           /*gPC.puts("adf_off\r\n");*/\
+        }\
+    }\
+}
+
+#define check {\
+    check_status;\
+    /*gPC.printf("I 0x%X\r\n",(int)status);*/\
+    if(IRQ || bypass_adf){\
+        /*gPC.printf("det\r\n");*/\
+        if(!ADF_off) {\
+            if(finish_write_data) {\
+                write_data;\
+                ADF_off=true;\
+            } else {\
+                write_data;\
+                if(sent_tmfrom_SDcard)\
+                send_tm_from_SD_card_fun();\
+                else snd_tm.transmit_data(buffer_112,&last_buffer);\
+            }\
+        } else {\
+            wait_ms(20);\
+            gCS_ADF=0;\
+            spi.write(0xB1);\
+            gCS_ADF=1;\
+            gPC.puts("transmission done\r\n");\
+            loop_on=false;\
+        }\
+    }\
+    else{\
+        if(T.read_us()>98000){\
+                data_irq_err=true;\
+                CMD(CMD_PHY_ON);\
+                gPC.printf("Data_error_detected");\
+                }\        
+        }\
+}
+
+#define send_data {\
     gCS_ADF=0;\
     spi.write(0xBB);\
     gCS_ADF=1;\
@@ -199,58 +427,7 @@
     spi.write(0xFF);\
     spi.write(0xFF);\
     gCS_ADF=1;\
-    SPI_mutex.unlock();\
-}
- 
-#define write_data {\
-    SPI_mutex.lock();\
-    gCS_ADF=0;\
-    spi.write(0x0B);\
-    spi.write(0x36);\
-    spi.write(0xFF);\
-    gCS_ADF=1;\
-    gCS_ADF=0;\
-    if(buffer_state){\
-        spi.write(0x18);\
-        spi.write(0x20);\
-        for(unsigned char i=0; i<112;i++){\
-            if(bypass_adf)\
-                gPC.putc(buffer_112[i]);\
-            else\
-                spi.write(buffer_112[i]);\
-            /*gPC.printf("%02X",buffer_112[i])*/;\
-        }\
-    }\
-    else{\
-        spi.write(0x18);\
-        spi.write(0x90);\
-        for(unsigned char i=0; i<112;i++){\
-            if(bypass_adf)\
-                gPC.putc(buffer_112[i]);\
-            else\
-                spi.write(buffer_112[i]);\
-            /*gPC.printf("%02X",buffer_112[i])*/;\
-        }\
-    }\
-    gCS_ADF=1;\
-    SPI_mutex.unlock();\
-    buffer_state = !buffer_state;\
-    if(last_buffer){\
-        finish_write_data = true;\
-        /*gPC.puts("adf_off\r\n");*/\
-    }\
-}
- 
-/* 
-void check(){   
-    if(IRQ){
-        gCOM_MNG_TMTC_THREAD->signal_set(signal);
-    }
-}*/
-  
- 
-#define send_data {\
-if(sent_tmfrom_SDcard){\
+    if(sent_tmfrom_SDcard){\
         send_tm_from_SD_card_fun();\
     }else{\
         snd_tm.transmit_data(buffer_112,&last_buffer);\
@@ -267,7 +444,6 @@
     }else{\
         snd_tm.transmit_data(buffer_112,&last_buffer);\
     }\
-    SPI_mutex.lock();\
     gCS_ADF=0;\
     spi.write(0xB1);\
     gCS_ADF=1;\
@@ -284,53 +460,112 @@
     spi.write(0xFF);\
     spi.write(0xFF);\
     gCS_ADF=1;\
-    SPI_mutex.unlock();\
-    /*ticker.attach_us(&check,32000);*/\
 }
- 
+  
+#define initial_adf_check {\
+    bool Configuration_Done=false;\
+    quit_configuration=false;\
+    bool reset_flag1 = 0;\
+    bool flag = false;\
+    while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
+        while((bbram_err_cnt<2)&&(quit_configuration==false)){\
+            /*assrt_phy_off;*/\
+            /*Assrt_phy_off Begin*/\
+            {\
+    int state_err_cnt = 0;\
+    CMD(CMD_PHY_OFF);\
+    if(cmd_err_flag){\
+        temp_return=1;\
+        }\
+    else{\
+        for(int i = 0 ; i < 40 ;i++){\
+            CMD(CMD_PHY_OFF);\
+            check_status;\
+            if(status == PHY_OFF){\
+                temp_return = 0;\
+            break;\
+            }\
+            else if(state_err_cnt>THRS){\
+                temp_return = 1;\
+            break;\
+            }\
+            else {\
+                wait_ms(1);\
+            }\
+        }\
+    }\
+}\
+            /*Assrt_phy_off end*/\
+            reset_flag1=temp_return;\
+            if(!reset_flag1){\
+                bbram_write;\
+                while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
+                    bbram_check;\
+                    if(bbram_err==0){\
+                        bbram_write_success=true;\
+                        bbram_err_cnt=0;\
+                        initiate;\
+                        if(reg_err){\
+                            rbp_err_cnt++;\
+                            }\
+                        else{\
+                            rbp_err_cnt=0;\
+                            gPC.printf("NO Reg err\r\n");\
+                            CMD(CMD_CONFIG_DEV);\
+                            if(cmd_err_flag){\
+                                reset_flag=1;\
+                                gPC.printf("CMD ERR\r\n");\
+                            }\
+                            else{\
+                                reset_flag=0;\
+                                gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
+                                quit_configuration=true;\
+                            }\
+                        }\
+                    }\
+                    else{\
+                        bbram_write_success=false;\
+                        bbram_err_cnt++;\
+                        break;\
+                    }\
+                }\
+            }\
+            else{\
+                break;\
+            }\
+        }\
+        if(reset_flag1){\
+            hardware_reset(0);\
+            hw_reset_err_cnt++;\
+            gPC.puts("Resetting hardware\r\n");\
+        }\
+    }\
+    if(hw_reset_err_cnt==HW_THRS){\
+        power_reset_flag=1;\
+        power_reset_count++;\
+        }\
+    else{\
+        Configuration_Done=true;\
+        gPC.printf("Configuration_Done\n");\
+        }\
+}
+
 #define configure_adf {\
-    finish_write_data = false;\
-    buffer_state = true;\
-    last_buffer = false;\
-    loop_on = true;\
-    ADF_off = false;\
+    reset_flags;\
     initial_adf_check;\
-    gPC.puts("initial adf check\r\n");\
-    initiate;\
-    gPC.puts("adf configured\r\n");\
-    /*gLEDR = !gLEDR;*/\
+    gPC.puts("Config_part done\r\n");\
 }
  
 #define transmit_adf {\
     configure_adf;\
-    if(sent_tmfrom_SDcard)\
-    signal = COM_MNG_TMTC_SIGNAL_ADF_SD;\
-    else signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;\
     send_data;\
+    CMD(CMD_PHY_TX);\
+    wait_us(2000);\
     while(loop_on){\
-        wait_ms(COM_TX_TICKER_LIMIT);\
-        if(IRQ || bypass_adf){\
-            if(finish_write_data){\
-                if(ADF_off){\
-                    SPI_mutex.lock();\ 
-                    gCS_ADF=0;\
-                    spi.write(0xB1);\
-                    gCS_ADF=1;\
-                    SPI_mutex.unlock();\
-                    loop_on = false;\
-                    gPC.puts("Transmission done\r\n");\
-                    gLEDR = 1;\
-                }\
-                else{\
-                    ADF_off = true;\
-                }\
-            }else{\ 
-                gLEDG = !gLEDG;\  
-                write_data;\
-                if(sent_tmfrom_SDcard)\
-                send_tm_from_SD_card_fun();\
-                else snd_tm.transmit_data(buffer_112,&last_buffer);\ 
-            }\
+        wait_us(20);\
+        check;\
+        if(data_irq_err){\
+        break;\
         }\
     }\
     /*gPC.puts("after while loop\r\n");*/\