Nick: carldani E-mail: none Board: internal_sleep patch Contents: Index: buspirate_spi.c =================================================================== --- buspirate_spi.c (Revision 1666) +++ buspirate_spi.c (Arbeitskopie) @@ -286,7 +286,7 @@ /* The Bus Pirate can't handle UART input buffer overflow in BBIO mode, and sending a sequence * of 0x00 too fast apparently triggers such an UART input buffer overflow. */ - usleep(10000); + internal_sleep(10000); } /* We know that 20 commands of \0 should elicit at least one BBIO1 response. */ if ((ret = buspirate_wait_for_string(bp_commbuf, "BBIO"))) Index: programmer.h =================================================================== --- programmer.h (Revision 1666) +++ programmer.h (Arbeitskopie) @@ -250,6 +250,7 @@ /* udelay.c */ void myusec_delay(int usecs); void myusec_calibrate_delay(void); +void internal_sleep(int usecs); void internal_delay(int usecs); #if CONFIG_INTERNAL == 1 Index: udelay.c =================================================================== --- udelay.c (Revision 1666) +++ udelay.c (Arbeitskopie) @@ -169,13 +169,23 @@ msg_pinfo("OK.\n"); } +/* Not very precise sleep. */ +void internal_sleep(int usecs) +{ +#ifdef _WIN32 + Sleep((usecs + 999) / 1000); +#else + sleep(usecs / 1000000); + usleep(usecs % 1000000); +#endif +} + +/* Precise delay. */ void internal_delay(int usecs) { - /* If the delay is >1 s, use usleep because timing does not need to - * be so precise. - */ + /* If the delay is >1 s, use internal_sleep because timing does not need to be so precise. */ if (usecs > 1000000) { - usleep(usecs); + internal_sleep(usecs); } else { myusec_delay(usecs); }