Nein...
Der Timer läuft durch. Zumindest, wenn du ihn aktiviert hast
(Vorteiler).
Die Flanke (also der Pegelwechsel, wie er im Steuerregister für ICP
eingestellt ist) am ICP-Pin sorgt dafür, dass der momentane Zählerstand
des Timers "fotografiert" wird, also in die ICP-Register übernommen
wird. In der ISR liest du diesen Wert aus, auch wenn die ISR etwas
verspätet kommt.
Nun stellt sich die Frage, was du überhaupt messen willst.
Interessiert dich nur die Periodendauer, also der Anstand der
steigenden Flanken (die fallenden werden ignoriert, da sie unwichtig
sind), dann brauchst du die Flanke natürlich nicht umzustellen. Dann
wird bei jeder steigenden Flanke der Zählerstand des Timers ermittelt
und der Int ausgelöst. Der Timer wird dabei nicht angehalten oder
gestartet, der klappert munter weiter.
In der ISR subtrahierst du den alten Wert (der ja älter, also kleiner
ist) vom neuen Wert und erhältst dadurch die Differenz, also den
Zeitabstand (in Timertakten gemessen) zwischen letzter Flanke und
jetziger Flanke. Diese Differenz musst du dann woandershin kopieren,
damit du den aktuellen Zählerstand für die nächste Subtraktion sichern
kannst.
Dein Ergebnis ist also immer die Differenz zwischen aktuellem Wert und
Wert der letzten Messung. Natürlich sollte der Timer-Vorteiler so
gewählt werden, dass sinnvolle Werte entstehen.
Willst du Impulsdauer und Impulspause getrennt messen, dann musst du in
der ISR erstmal ergründen, ob das jetzt die steigende oder die fallende
Flanke war. Danach kannst du das Ergebnis der Subtraktion als
Impulsdauer oder Pausendauer zuordnen. Damit die nächste Messung bei
der umgekehrten Flanke erfolgt, muss nun auch die Flanke umgestellt
werden. Damit bekommst du also wechselweise die Dauer der H-Phase und
der L-Phase. Der Timer klappert dabei munter weiter, denn es wird ja
jeweils die Differenz zwischen zwei "Schnappschüssen" ermittelt.
Den Timer kannst du sogar noch gleichzeitig für Output-Compare
benutzen. Dabei solltest du den Timer aber nicht auf 0 setzen (also
kein CTC), sondern einfach den Output-Compare-Wert um den Wert des
Intervalls erhöhen (nach $ffff kommt $0000). Somit kann dir der Timer
gleichzeitig die Impulse am ICP-Pin messen und einen rythmischen
Timer-Int zur Programmsteuerung (z.B. Software-PWM) erzeugen. Wenn du
auch noch den Überlauf-Int nutzt, kannst du darin ein (oder 2) Register
hochzählen, das/die du als Verbreiterung des Timers sehen kannst (obere
Stellen, Übertrag, also 24 Bit oder 32 Bit Auflösung). Diese kann man
bei ICP mit einbeziehen, um längere Zeiten messen zu können. Es werden
dann neben den Werten in den ICP-Registern noch die Werte in den
Übertrag-Registern zur Differenzbildung herangezogen.
Der Timer1 bietet also sehr viele Möglichkeiten. Und dabei kann er ohne
Halt durchlaufen.
...