From 03f35e44f06e9798338ee0b41156203ee094aca0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 1 Dec 2014 00:37:51 +0300 Subject: [PATCH] Don't use timer for zero delay --- cores/esp8266/wiring.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cores/esp8266/wiring.c b/cores/esp8266/wiring.c index 6ddf13fa4..67a3b2da9 100644 --- a/cores/esp8266/wiring.c +++ b/cores/esp8266/wiring.c @@ -48,10 +48,20 @@ void delay_end(void* arg) void delay(unsigned long ms) { - os_timer_setfn(&delay_timer, (os_timer_func_t*) &delay_end, 0); - os_timer_arm(&delay_timer, ms, ONCE); + if (ms) + { + os_timer_setfn(&delay_timer, (os_timer_func_t*) &delay_end, 0); + os_timer_arm(&delay_timer, ms, ONCE); + } + else + { + esp_schedule(); + } esp_yield(); - os_timer_disarm(&delay_timer); + if (ms) + { + os_timer_disarm(&delay_timer); + } } unsigned long micros()