.........Bild hier  

Zitat Zitat von wkrug
Wenn die dann kommt wird das ICP Timer register ausgelesen und das Sensing auf fallende Flanke umgestellt.
Tritt die dann auf wird das ICP Register wiederum ausgelesen un der vorherige Wert abgezogen.
Zitat Zitat von Jeti
Danke für die Antwort, aber ich glaube das (oder so etwas ähnliches) versuche ich doch gerade oder?
Hallo Jeti,
in Deinem Programm nutzt Du nur den Interrupt, den die Interrupt Capture Funktion zur Verfügung stellt. Das Gleiche könntest Du auch mit den INt0, INT1 oder INT2 Interrupts erreichen. Die schöne Funktion, die die Input Capture Funktion noch zur Verfügung stellt, ist, daß bei dem Capture event nicht nur das Interrupt Flag gesetzt wird, sondern auch gleichzeitig der Timerstand in das ICR1H/ICR1L Register kopiert wird.

Wenn der Timer1 nun zB mit 1MHz laufen würde, bei steigender Flanke der Input Capture zuschlägt und man dann ICR1H/ICR1L sichert, auf fallende Flanke umschaltet und beim nächsten Input Capture den gesicherten Wert mit dem neuen aktuellen ICR1H/ICR1L Wert verrechnet, hat man eine Auflösung von 1µs.

Außerdem sollte man die ISR so kurz wie möglich halten. Die Anzeigefunktion also irgendwie in die main plazieren.

Gruß
Searcher