สอบถามการเกิด watchdog ครับ

สอบถามหน่อยครับ การใช้ mutitasking ของ esp 32 ครับ เรื่องมีอยู่ว่า ผมได้ลองรันโค้ดชุดนี้แล้วลองเปลี่ยน core การรันดู โดยใน core 0 ให้ทำงาน ใชถ้ามีการกดสวิตช์ แต่ปรากฎว่า ถ้าไม่กดสวิตช์จะเกิดปัญญา watch dog คือ ถ้าเงือนไขเป็นเท็จนิจะเกิดปัญหานี้ทันที แต่ถ้าให้กดสวิตช์ค้างไว้ตลอด จะไม่เกิดปัญหา watch dog เกิดขึ้น ผมจึงอยากถามว่ามีหลักเกณฑ์ยังไงในการเลือกใช้ฟังก้ชั่นแบบ mutitasking เพื่อไม่ให้เกิดปัญหา watch dog ครับ

#include <WiFi.h>
#include "time.h"
const byte core0 = 0;
const byte core1 = 1;
const byte pushButton =25;
const byte led =26;
const char* ssid       = "NYELOOGBALL";
const char* password   = "egat593618";
const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600 * 7;
const int   daylightOffset_sec = 3600;
void coreTask0( void * pvParameters )
{
  pinMode(led, OUTPUT);
  for (;;)
  {
    digitalWrite(led, !digitalRead(led));
    Serial.println("CoreTask0 running on core " + String(xPortGetCoreID()));
    delay(1000);
  }
  vTaskDelete(NULL);
}
void coreTask1( void * pvParameters )
{
  pinMode(pushButton, INPUT);
  for (;;)
  {
    if (digitalRead(pushButton) == HIGH)
    {
      Serial.println("Push Button");
      Serial.println("CoreTask1 running on core " + String(xPortGetCoreID()));
      delay(1000);
    }
  }
  vTaskDelete(NULL);
}
void printLocalTime()
{
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void setup()
{
  Serial.begin(112500);
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" CONNECTED");
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
  xTaskCreatePinnedToCore(coreTask0, "coreTask0", 10000, NULL, 1, NULL, core1);
  xTaskCreatePinnedToCore(coreTask1, "coreTask1", 10000, NULL, 1, NULL, core0);
}
void loop()
{
  printLocalTime();
  Serial.println("Loop running on core " + String(xPortGetCoreID()));
  delay(1000);
}

หมายึงตรงนี้หรอครับ

ผมได้แบ่ง core ทำงานออกเป็น 2 core โดยที่ core 1 กับ core 0 โดย core 1 จะทำในส่วนของ ฟังก์ชัน void setup, void loop,และ void coreTask 1 ส่วน core 0 จะทำในส่วนของ ฟังก์ชั่น void coreTask0
ถ้าแบบนี้จะปกติดี แต่พอผมลองเปลี่ยนให้ ฟังก์ชั่น void coreTask 1 มาทำงานใน core 0 ซึ่งฟังก์ชั่น void coreTask 1 จะทำเกี่ยวกับการเช็ค การกด push button

ลองเพิ่มดีเลย์ดูครับ

หายแล้วครับ เป็นเพราะอะไรเหรอครับ

เหมือนว่า เวลา มันเป็น false ลูปมันทำงานเร็วเกินไปครับ ซึ่ง ถ้าเป็นใน arduino มันอาจจะไม่มีปัญหา แต่ตระกูล NodeMCU มันเป็นตัวจับแล้วปล่อย wifi อยู่แล้วมันจะเน้นเรื่องการจับ wifi เป็นหลักมันถึงใส่ watchdog มาเพื่อเคลียร์ โปรแกรมในกรณีที่ มีบ้างลูป(coreTask 1)ไปรบกวน loop การจับ WiFi หรือทำใหม่ loop นี้ไม่เสถียร ครับ

ขอบคุณมากครับ