Überdenke mal dein Konzept.
Ich würde es so nicht angehen. Du verschwendest unnötig Ressourcen. Du
brauchst keinen externen Int, du brauchst auch den Timer nicht zu
löschen, du musst dir nur den Zeitstempel des Impulsbeginns merken und
dann vom Zeitstempel des Impulsendes subtrahieren. Der Timer läuft
dabei frei durch. Damit hast du auch die Möglichkeit, parallel die
Compare-Interrupts zu nutzen, falls du Verzögerungen oder weitere
interne Takte zum Synchronisieren des Programmablaufs brauchst.
Versuche mal das Beispielprogramm zu verstehen, dann weißt du was ich
meine.
Dann gefällt mir das rcall in der ISR nicht, rcall/ret braucht 7 Takte,
ISRs sollen aber so kurz wie möglich sein. Das cli in der ISR ist
besonders gefährlich, sowas macht man nur im Ausnahmefall und auch nur,
wenn man genau weiß, was man tut.
Wenn man nur 2 Werte ins SRAM schreiben will, dann muss man auch keinen
Pointer benutzen, dann geht das auch mit sts. Pointer lohnt sich erst,
wenn es mehr Werte werden.
Und stell mal dein AVR-Studio so ein, dass es die Tabs durch Spaces
ersetzt, dann passt der Quelltext auch in anderen Programmen auf den
Bildschirm und man muss nicht immer hinundher scrollen (das ist ätzend)
wenn man die Zeile bis zum Ende lesen will. War bei mir anfangs auch so,
lässt sich aber einstellen.
So, erstmal genug kritisiert... - Sorry...
...