es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Almacene el valor de la Unión en la memoria RTC.

Estoy tratando de guardar una unión en la memoria RTC de mi ESP32 pero no parece funcionar. Este es un ejemplo de lo que estoy tratando de hacer:

“`c++
RTC_DATA_ATTR union {
float float_variable;
byte temp_array[4];
} u;

int sleepTime = 5;
RTC_DATA_ATTR int cpt = 0;

void setup() {

Serial.begin(115200);
esp_sleep_enable_timer_wakeup(sleepTime * 1000000);
u.float_variable = 2.1;

}

void loop() {
Serial.println("número de despertar: " + String(cpt) + " u.float_variable es: " + String(u.float_variable));
cpt++;
u.float_variable += cpt;

esp_deepsleep_start();
}
“`

Si puedes probarlo en tu máquina, verás que el contador “cpt” aumenta pero no la variable “u.float_variable”. Si alguien tiene alguna sugerencia, estoy abierto a ellas ¡gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando guardar una unión en la memoria RTC de tu ESP32, pero no está funcionando como se esperaba. El código parece estar bien, pero es difícil determinar el problema sin más información o pruebas. Aquí tienes algunas sugerencias:

    1. Asegúrate de estar utilizando la última versión del núcleo Arduino-ESP32.
    2. Intenta utilizar un tipo de dato diferente en la unión, como un entero o un arreglo de caracteres, para ver si marca alguna diferencia.
    3. Verifica si la memoria RTC está habilitada en la configuración de tu placa. La memoria RTC no siempre está disponible en todas las placas y puede requerir una configuración especial.
    4. Intenta utilizar un método diferente para guardar datos en la memoria RTC, como el NVS del ESP32 o el sistema de archivos SPIFFS, para ver si funciona.
    5. Utiliza Serial.print() para depurar e imprimir los valores de la unión y el tiempo de suspensión en el monitor serie, para ver si se actualizan correctamente.
    6. Intenta utilizar una placa diferente para ver si el problema persiste.

    ¡Espero que esto ayude!

Comments are closed.