#define digitalInput 32
hw_timer_t*timer=NULL;
int t=0;
volatile bool interrupt = false;
volatile bool once = false;
volatile bool timer_running = false;
void IRAM_ATTR leerdigitalInput() {
once = true;
interrupt = true;
}
void IRAM_ATTR timerOn() {
t++;
}
void setup() {
Serial.begin(115200);
pinMode(digitalInput, INPUT_PULLDOWN);
attachInterrupt(digitalPinToInterrupt(digitalInput), leerdigitalInput, CHANGE);
timer = timerBegin(80000);
timerAttachInterrupt(timer, &timerOn);
timerAlarm(timer, 80, true, 0);
t=0;
}
void loop() {
if(interrupt && digitalRead(digitalInput) == 1 && !timer_running) {
timerStart(timer);
once = true;
t = 0;
//Serial.print("in");
timer_running = true;
}
if(interrupt && once && digitalRead(digitalInput) == 0) {
Serial.println(t);
interrupt = false;
once = false;
timer_running = false;
//Serial.print("out");
timerStop(timer);
t=0;
}
}