Zeit zwischen zwei steigenden Flanken messen

Ich möchte die Zeit zwischen einer steigenden und der jeweils folgenden steigenden Flanke mittels Interrupt messen.

Dann solltest du das auch tun, denke ich mal....

Mein ungetesteter Vorschlag lautet:

#include <util/atomic.h>
#define CriticalSection ATOMIC_BLOCK(ATOMIC_RESTORESTATE)


volatile uint32_t dauer;



void zeitMessAutomat() 
{
  static bool start         = true;
  static uint32_t startZeit = 0;
  if(start) startZeit = micros();
    else dauer = micros() - startZeit;
  start = !start;  
}


void setup() 
{
  pinMode(2,INPUT_PULLUP);
  attachInterrupt(0, zeitMessAutomat, FALLING);
  Serial.begin(9600);
  Serial.println("start");
  
}

void loop() 
{
  uint32_t tempDauer;
  CriticalSection
  {
    tempDauer = dauer; 
  }
  Serial.println(tempDauer);
  delay(1000);
}

Edit: Verbesserte Version