#include <Arduino.h>
#include "soc/gpio_struct.h" // Structure pour accès direct aux registres
#include "driver/gpio.h" // Bibliothèque GPIO
#define PIN_TEST 4 // GPIO à tester
void setup() {
Serial.begin(115200);
pinMode(PIN_TEST, OUTPUT);
pinMode(PIN_TEST, INPUT);
uint32_t start, end, cycles_digital, cycles_registre;
// 📌 Mesure du temps pour digitalWrite()
start = ESP.getCycleCount();
digitalWrite(PIN_TEST, HIGH);
end = ESP.getCycleCount();
cycles_digital = end - start;
// 📌 Mesure du temps pour accès registre direct
start = ESP.getCycleCount();
GPIO.out_w1ts = (1 << PIN_TEST); // Écriture rapide via registre
end = ESP.getCycleCount();
cycles_registre = end - start;
Serial.println("Comparaison écriture :");
Serial.printf("digitalWrite() : %d cycles\n", cycles_digital);
Serial.printf("Registre GPIO : %d cycles\n", cycles_registre);
// 📌 Mesure du temps pour digitalRead()
start = ESP.getCycleCount();
int val = digitalRead(PIN_TEST);
end = ESP.getCycleCount();
cycles_digital = end - start;
// 📌 Mesure du temps pour lecture registre direct
start = ESP.getCycleCount();
int val_reg = (GPIO.in >> PIN_TEST) & 0x1; // Lecture directe du GPIO
end = ESP.getCycleCount();
cycles_registre = end - start;
Serial.println("\nComparaison lecture :");
Serial.printf("digitalRead() : %d cycles\n", cycles_digital);
Serial.printf("Registre GPIO : %d cycles\n", cycles_registre);
}
void loop() {
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK