X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/76471e5d1734786f6095c0b689fa49c5f6e92136..111c6934d4e5c58883d08210399afe8eaeccc5c3:/armsrc/util.c diff --git a/armsrc/util.c b/armsrc/util.c index 09926747..be6170d3 100644 --- a/armsrc/util.c +++ b/armsrc/util.c @@ -351,8 +351,7 @@ void StartCountUS() { uint32_t RAMFUNC GetCountUS(){ //return (AT91C_BASE_TC1->TC_CV * 0x8000) + ((AT91C_BASE_TC0->TC_CV / 15) * 10); // By suggestion from PwPiwi, http://www.proxmark.org/forum/viewtopic.php?pid=17548#p17548 - //return (AT91C_BASE_TC1->TC_CV * 0x8000) + ((AT91C_BASE_TC0->TC_CV * 2) / 3); - return (AT91C_BASE_TC1->TC_CV * 0x8000) + ((AT91C_BASE_TC0->TC_CV << 1) / 3); + return (AT91C_BASE_TC1->TC_CV * 0x8000) + ((AT91C_BASE_TC0->TC_CV * 2) / 3); } void ResetUSClock(void) { //enable clock of timer and software trigger @@ -363,12 +362,9 @@ void ResetUSClock(void) { // attempt at high resolution microsecond timer // beware: timer counts in 21.3uS increments (1024/48Mhz) void SpinDelayCountUs(uint32_t us) { - - us += GetCountUS(); - us -= 6; - - for(;;) - if ( GetCountUS() >= us ) return; + if (us < 8) return; + us += GetCountUS(); + while ( GetCountUS() < us ){} } // static uint32_t GlobalUsCounter = 0;