Просмотр исходного кода

touch_sensor: fixed timer period

laokaiyao 3 лет назад
Родитель
Сommit
586a14af63
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      components/driver/esp32/touch_sensor.c

+ 3 - 2
components/driver/esp32/touch_sensor.c

@@ -427,7 +427,7 @@ esp_err_t touch_pad_set_filter_period(uint32_t new_period_ms)
     esp_err_t ret = ESP_OK;
     xSemaphoreTake(rtc_touch_mux, portMAX_DELAY);
     ESP_GOTO_ON_ERROR(esp_timer_stop(s_touch_pad_filter->timer), err, TOUCH_TAG, "failed to stop the timer");
-    ESP_GOTO_ON_ERROR(esp_timer_start_periodic(s_touch_pad_filter->timer, new_period_ms), err, TOUCH_TAG, "failed to start the timer");
+    ESP_GOTO_ON_ERROR(esp_timer_start_periodic(s_touch_pad_filter->timer, new_period_ms * 1000), err, TOUCH_TAG, "failed to start the timer");
     s_touch_pad_filter->period = new_period_ms;
 err:
     xSemaphoreGive(rtc_touch_mux);
@@ -479,7 +479,8 @@ esp_err_t touch_pad_filter_start(uint32_t filter_period_ms)
             goto err_no_mem;
         }
         s_touch_pad_filter->period = filter_period_ms;
-        esp_timer_start_periodic(s_touch_pad_filter->timer, filter_period_ms);
+        touch_pad_filter_cb(NULL); // Trigger once immediately to get the initial raw value
+        esp_timer_start_periodic(s_touch_pad_filter->timer, filter_period_ms * 1000);
     }
     xSemaphoreGive(rtc_touch_mux);