Resetea una microcontroladora por software 💻

Publicado el 18.06.2022 a las 12:41

Resetea una microcontroladora por software 💻

Resetea una microcontroladora por software 💻

Tengo corriendo una ESP32 en el campo de mi padre para controlar el riego.

Cada 3 semanas se queda bloqueada y tengo que reiniciarla. Sospecho que sea una fuga de memoria ocasionada por una librería que uso para comunicar con un servicio MQTT en la nube.


Mientras que saco tiempo para analizarlo en profundidad he decidido programar un reseteo de la placa cuando quede muy poca memoria disponible.


Escribo este artículo porque el reseteo no es tan fácil como escribir ESP.restart(). Es cierto que reinicia la placa, pero no completamente. En mi caso nunca consigue volver a conectar con el hotspot después del ESP.restart().


Solución

Incluye las librerías esp_int_wdt.h y esp_task_wdt.h

#include <esp_int_wdt.h>
#include <esp_task_wdt.h>

void hard_restart()
{
  esp_task_wdt_init(1, true);
  esp_task_wdt_add(NULL);

  while (true);
}

Hasta luego 🖖

fjmduran.com v 17.0.1