Hi
Wenn Du mir schreibst, was Du bereits über den Kram, Den ich erwähnte, rausgefunden hast - warum nicht?
Allerdings ist Das hier kein 'schreib mir einen SKetch für mein Problem'-Forum, sondern Hilfe zur Selbsthilfe.
In der ISR brauchst Du keine atomaren Zugriffe - zumindest der AVR kann nur einen Interrupt zur gleichen Zeit.
- die Variable Deines Zähler in uint16_t statt byte ändern (also den Typ, ergibt dann 16Bit Breite)
- vor dem Auslesen der Variable in Deiner loop() die Interrupts sperren, also
noInterrupts();
Dann die Variable auslesen, die Variable Null setzen.
interrupts(); - durch das interrupts(); erlaubst Du die Interrupts wieder und wir haben in kürzester Zeit unseren Wert sauber gelesen.
DANACH erst mit dem Wert arbeiten - Zeit ist Geld - und in der Zeit, wo die Interrupts verboten sind, kann ein Impuls kommen.
Das ist aber noch kein Problem, sobald die Interrupts wieder zugelassen sind, wird Dieser 'nachgeholt' - aber blöd, wenn in der Zeit zwei Interrupts kämen - dann geht Einer verloren!
Eigentlich ist Das bereits die Umschrift Deines Sketch - halt in Worten zur Selbsthilfe statt als Code zum kopieren - Nachteil: man lernt selber was dabei ... und ja, man braucht ein/zwei Minuten zum Umschreiben
MfG