aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcores/arduino/wiring.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/cores/arduino/wiring.c b/cores/arduino/wiring.c
index 858ab72..719e0e2 100755
--- a/cores/arduino/wiring.c
+++ b/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. */