From 8f416eb54a0517d582f039a945f57f9180c395af Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Tue, 25 May 2010 20:16:15 +0000 Subject: [PATCH] More accurate delay() function from BenF. --- hardware/arduino/cores/arduino/wiring.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hardware/arduino/cores/arduino/wiring.c b/hardware/arduino/cores/arduino/wiring.c index 858ab72a4..719e0e276 100755 --- a/hardware/arduino/cores/arduino/wiring.c +++ b/hardware/arduino/cores/arduino/wiring.c @@ -97,10 +97,14 @@ unsigned long micros() { void delay(unsigned long ms) { - unsigned long start = millis(); - - while (millis() - start <= ms) - ; + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } } /* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */