X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fjtag%2Fjtag430x2.c;h=b508f0beabfe78b58f4e790895ef5d86c8a36b25;hp=965c2626eef287344aaff2bed93d6b53dda390a4;hb=ef8b3dcd43ed26a82df672e64396bf8c024bb09c;hpb=52bd0029fe5e041bad6fe258afb3bf95b618de6b diff --git a/firmware/apps/jtag/jtag430x2.c b/firmware/apps/jtag/jtag430x2.c index 965c262..b508f0b 100644 --- a/firmware/apps/jtag/jtag430x2.c +++ b/firmware/apps/jtag/jtag430x2.c @@ -94,39 +94,40 @@ void jtag430x2_writemem(unsigned long adr, //! Read data from address unsigned int jtag430x2_readmem(unsigned long adr){ unsigned int toret=0; + unsigned int tries=5; - do{ - jtag_ir_shift8(IR_CNTRL_SIG_CAPTURE); - }while(!(jtag_dr_shift16(0) & 0x0301)); - - if(jtag_dr_shift16(0) & 0x0301){ - // Read Memory - CLRTCLK; - jtag_ir_shift8(IR_CNTRL_SIG_16BIT); - if(adr>=0x100){ - jtag_dr_shift16(0x0501);//word read - }else{ - jtag_dr_shift16(0x0511);//byte read - } + while(1){ + do{ + jtag_ir_shift8(IR_CNTRL_SIG_CAPTURE); + }while(!(jtag_dr_shift16(0) & 0x0301)); - jtag_ir_shift8(IR_ADDR_16BIT); - jtag_dr_shift20(adr); //20 - - jtag_ir_shift8(IR_DATA_TO_ADDR); - SETTCLK; - CLRTCLK; - toret = jtag_dr_shift16(0x0000); - - SETTCLK; - - //Cycle a bit. - CLRTCLK; - SETTCLK; - }else{ - return 0xBABE; + if(jtag_dr_shift16(0) & 0x0301){ + // Read Memory + CLRTCLK; + jtag_ir_shift8(IR_CNTRL_SIG_16BIT); + if(adr>=0x100){ + jtag_dr_shift16(0x0501);//word read + }else{ + jtag_dr_shift16(0x0511);//byte read + } + + jtag_ir_shift8(IR_ADDR_16BIT); + jtag_dr_shift20(adr); //20 + + jtag_ir_shift8(IR_DATA_TO_ADDR); + SETTCLK; + CLRTCLK; + toret = jtag_dr_shift16(0x0000); + + SETTCLK; + + //Cycle a bit. + CLRTCLK; + SETTCLK; + return toret; + } } - - return toret; + //return toret; } //! Syncs a POR.