J'ai trouvé un exemple :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "sys/time.h"
#include "sdkconfig.h"
#include "esp_deep_sleep.h"
#define GPIO_DEEP_SLEEP_DURATION 10 // sleep 10 seconds and then wake up
RTC_DATA_ATTR static time_t last; // remember last boot in RTC Memory
void app_main() {
struct timeval now;
printf("start ESP32\n");
gettimeofday(&now, NULL);
printf("deep sleep (%lds since last reset, %lds since last boot)\n",now.tv_sec,now.tv_sec-last);
last = now.tv_sec;
esp_deep_sleep(1000000LL * GPIO_DEEP_SLEEP_DURATION);
}
Le code se réveille toutes les 10 secondes et affiche le temps de sommeil, mais en secondes. Il reste juste à trouver le moyen d'obtenir des microsecondes...
Probable qu'on puisse utiliser
last = now.tv_usec;
ou convertir les temps en microsecondes comme
now.tv_sec * 1000000 + now.tv_usec
Je teste ça dès que j'ai un moment...