Este es un pequeño ejemplo donde podemos ver la multitarea, utilizando los dos núcleos de nuestra ESP32. En este caso utilizando el entorno de desarrollo Visual Studio Code PlatformIO.
Primero debes declarar la tarea con «TaskHandle_t», luego crearemos la función que realizará la tarea en concreto «void Tarea1 ()», seguidamente y dentro de nuestro «setup()» crearemos la función diseñada por «FreeRTOS» llamada : «xTaskCreatePinnedToCore()» en esta función indicaremos todos los parametros necesarios para trabajar con el nucleo que queramos.
eso funciona bien. solo que al parecer siertas funciones como el monitor Serial y funciones de wifi como
Serial.printf(«Señal :%ddBm\n»,WiFi.RSSI()); no funcionan y genera reiniios en la placa usandolos en tareas que no sean el void loop()
Funciona bien. Acabo de terminar un proyecto que incluye wifi, sensores, reloj y comandos por consola. Se reiniciaba, como mencionas. Sólo había creado una tarea para el proc. 0 para código que maneja la consola, dejando el resto en loop() que por defecto va por el proc. 1. Entonces saqué todo de loop y creé una funcion que lo reemplace, dejando loop() vacío. Esa función la llamo en una segunda tarea que se ejectua en partición 1 y ya no se colgó más. Va de maravillas.
ok, muchas gracias por el aporte Federico, un saludo