Правильный способ использования WDT в esp32 Arduino - PullRequest
0 голосов
/ 16 мая 2019

Я хочу использовать функцию xTaskCreatePinnedToCore для запуска двух задач на каждом ядре.

Ниже приведен свернутый код для моей цели.

#include "esp_task_wdt.h"

void setup() {

  BaseType_t result = xTaskCreatePinnedToCore( handleOtherThings, "handleOtherThings", 20000, NULL, 1, NULL, 0 );
}

void handleOtherThings( void* param ) {

  while( true ){

    esp_task_wdt_reset();
  }
}
void loop() {
  // put your main code here, to run repeatedly:

}

Однако сброс WDT продолжает выполняться.

Ничто не изменится, если я использую yield () вместо esp_task_wdt_reset ();

Однако, если я изменю esp_task_wdt_reset () на vTaskDelay (10 / portTICK_PERIOD_MS), то больше не будет сброса WDT, но я не будухочу задержку 10 мс для моей задачи.

задержка (1);также сбрасывает таймер WDT, но я также не хочу, чтобы он был задержан на 1 мс.

delay (0);не сбрасывать таймер WDT.

delayMicroseconds (100);не сбрасывать таймер WDT.

Каким будет минимальный и правильный способ сброса таймера WDT в ESP32-arduino?

...