diff --git a/components/esp32/esp_timer_esp32.c b/components/esp32/esp_timer_esp32.c index 74f3369ca5..72c1d4bf0c 100644 --- a/components/esp32/esp_timer_esp32.c +++ b/components/esp32/esp_timer_esp32.c @@ -216,7 +216,7 @@ void IRAM_ATTR esp_timer_impl_set_alarm(uint64_t timestamp) // Note that if by the time we update ALARM_REG, COUNT_REG value is higher, // interrupt will not happen for another ALARM_OVERFLOW_VAL timer ticks, // so need to check if alarm value is too close in the future (e.g. <2 us away). - const uint32_t offset = s_timer_ticks_per_us * 2; + const int32_t offset = s_timer_ticks_per_us * 2; do { // Adjust current time if overflow has happened if (timer_overflow_happened()) { @@ -224,7 +224,7 @@ void IRAM_ATTR esp_timer_impl_set_alarm(uint64_t timestamp) s_time_base_us += s_timer_us_per_overflow; } s_mask_overflow = false; - uint64_t cur_count = REG_READ(FRC_TIMER_COUNT_REG(1)); + int64_t cur_count = REG_READ(FRC_TIMER_COUNT_REG(1)); // Alarm time relative to the moment when counter was 0 int64_t time_after_timebase_us = (int64_t)timestamp - s_time_base_us; // Calculate desired timer compare value (may exceed 2^32-1)