Bonjour,
C'est peut-être énorme mais je ne vois pas.
Le code sur ESP32-C3 (ESP32-devkit m-1 ) et platformIO
#include <Arduino.h>
hw_timer_t * timer;
uint64_t compteur1 ;
uint64_t compteur2 ;
uint64_t diff_compteur ;
uint64_t tour ;
void setup()
{
Serial.begin(115200) ;
delay(1000);
pinMode(19, OUTPUT) ;
digitalWrite(19, LOW) ;
// Config :
// Timer 1, diviseur d'horloge = 2 (valeur minimale), mode = comptage
// l'horloge des timers est fh/2 = 80 MHz
// l'horloge qui pilote le timer est 40 MHz
timer = timerBegin(1,2,true);
Serial.print("\n");
}
void loop()
{
compteur1 = timerRead(timer);
digitalWrite(19,HIGH);
compteur2 = timerRead(timer);
digitalWrite(19,LOW);
diff_compteur = compteur2-compteur1 ;
Serial.println("ligne ne fonctionnant pas");
Serial.printf("Tour = %d Compteur A = %d Compteur B = %d différence = %d \n", tour, compteur1, compteur2, diff_compteur);
Serial.println("lignes fonctionnant :");
Serial.printf("Tour = %d ", tour);
Serial.printf(" Compteur 1 = %d ", compteur1);
Serial.printf(" Compteur 2 = %d ", compteur2);
Serial.printf(" Diff = %d \n", diff_compteur);
delay(5000);
tour++;
Serial.println("");
}
Le retour du moniteur série :
ligne ne fonctionnant pas
Tour = 1 Compteur A = 0 Compteur B = 200594467 différence = 0
lignes fonctionnant :
Tour = 1 Compteur 1 = 200594467 Compteur 2 = 200594539 Diff = 72
ligne ne fonctionnant pas
Tour = 2 Compteur A = 0 Compteur B = 401194467 différence = 0
lignes fonctionnant :
Tour = 2 Compteur 1 = 401194467 Compteur 2 = 401194539 Diff = 72
ligne ne fonctionnant pas
Tour = 3 Compteur A = 0 Compteur B = 601794467 différence = 0
lignes fonctionnant :
Tour = 3 Compteur 1 = 601794467 Compteur 2 = 601794539 Diff = 72
ligne ne fonctionnant pas
Tour = 4 Compteur A = 0 Compteur B = 802394467 différence = 0
lignes fonctionnant :
Tour = 4 Compteur 1 = 802394467 Compteur 2 = 802394539 Diff = 72 saisissez ou collez du code ici
Ce doit être énorme mais pourquoi avec cette ligne :
Serial.printf("Tour = %d Compteur A = %d Compteur B = %d différence = %d \n", tour, compteur1, compteur2, diff_compteur);
les indications à l'écran sont éronnées (valeur de compteur A).
Alors qu'avec les lignes :
Serial.printf("Tour = %d ", tour);
Serial.printf(" Compteur 1 = %d ", compteur1);
Serial.printf(" Compteur 2 = %d ", compteur2);
Serial.printf(" Diff = %d \n", diff_compteur);
Les indications sembles correctes dans cette deuxième forme d'impression.
Merci pour vos lumières.