Signale dieser länge vermißt man am besten mit dem
TimerCaptureInterrupt.
Dazu wird der Timer initialisiert und eingeschaltet. Den Vorteiler
(Prescaler) legt man am besten so, daß der die Maximale Impulsbreite
weniger als 0xffff Timertakte beansprucht:
prescaler > Controllertakt / 0xffff * Impulszeit
Damit muß man sich dann keine weiteren Gedanken um Timerüberläufe
machen.
Nach dem Einschalten des TimerCaptureInterrupts, den du auf die
steigende Flanke eingestellt hast, wird der Interrupt bei der ersten
steigenden Flanke aufgerufen.
In der Interrupt Service Routine speicherst du den Capturewert als
Startwert ab und stellst den Capture interrupt auf die fallende Flanke
um.
Beim nächsten Interrupt kannst du die Zeitdifferenz berechnen.