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