[ESP32] esp_timer와 sleep 모드 동시 사용 시 발생하는 간섭
ESP-IDF에는esp_timer 가 있습니다. 해당 timer는 task에서 제어됩니다. sleep 모드도 같이 사용할 경우 task가 제대로 작동되지 않는 문제가 발생합니다.
이런 경우에는 하드웨어 타이머를 사용하는 것이 좋습니다. 따라서 esp_timer 보다는 FreeRTOS에서 제공하는 하드웨어 타이머 함수들을 사용하면, 타이머 인터럽트가 제대로 작동하지 않는 문제들을 해결할 수 있습니다.
저의 경우에는 esp_timer와 ble 기능과 modem sleep을 활성화하고 나면, esp_timer로 등록된 타이머 인터럽트 함수가 제대로 작동하지 않는 것을 확인했습니다.
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "freertos/timers.h"
...
TimerHandle_t xOneShotTimer, xAutoReloadTimer;
static void opneShotFunc(TimerHandle_t xTimer)
{
...
}
static void autoReloadFunc(TimerHandle_t xTimer)
{
...
}
void app_main(void)
{
...
//5초후 1회만 진행
xOneShotTimer = xTimerCreate("OneShot", pdMS_TO_TICKS(5000UL), pdFALSE, 0, opneShotFunc);
//60초마다 1회 진행 반복
xAutoReloadTimer = xTimerCreate("AutoReload", pdMS_TO_TICKS(60000UL), pdTRUE, 0, autoReloadFunc);
//타이머 실행
xTimerStart(xOneShotTimer, 0);
xTimerStart(xAutoReloadTimer, 0);
...
}
https://www.esp32.com/viewtopic.php?t=20374
'개발 > ESP32, ESP8266' 카테고리의 다른 글
[ESP32] wifi 연결시 특정 와이파이 기기(AP)에 연결안되던 점 (1) | 2023.03.25 |
---|---|
[ESP32] RTC_SW_CPU_RST 에러 (0) | 2022.11.19 |
[ESP32 BLE 에러] BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e (0) | 2022.11.18 |
[ESP32 BLE 에러] BT_HCI: hcif disc complete: rsn 0x3d (0) | 2022.11.14 |
ESP8266(ESP-01, ESP-01S) wifi client, 서버로 부터 데이터 받기 (0) | 2022.11.11 |