diff --git a/components/esp8266/source/esp_timer.c b/components/esp8266/source/esp_timer.c index f44f1cb0..cb4c1f67 100644 --- a/components/esp8266/source/esp_timer.c +++ b/components/esp8266/source/esp_timer.c @@ -246,21 +246,21 @@ esp_err_t esp_timer_delete(esp_timer_handle_t timer) int64_t esp_timer_get_time() { - extern esp_tick_t g_cpu_ticks; extern uint64_t g_os_ticks; esp_irqflag_t flag; - esp_tick_t diff_ticks, ticks; + uint64_t diff_ticks, ticks, prev_ticks; uint64_t time; flag = soc_save_local_irq(); time = g_os_ticks * portTICK_PERIOD_MS * 1000; + prev_ticks = soc_get_ccompare() - _xt_tick_divisor; ticks = soc_get_ticks(); - if (ticks >= g_cpu_ticks) { - diff_ticks = ticks - g_cpu_ticks; + if (ticks >= prev_ticks) { + diff_ticks = ticks - prev_ticks; } else { - diff_ticks = ESP_TICKS_MAX - g_cpu_ticks + ticks; + diff_ticks = ESP_TICKS_MAX - prev_ticks + ticks; } time += diff_ticks / (_xt_tick_divisor * configTICK_RATE_HZ / (1000 * 1000));