Daniel Düsentrieb schrieb:
> Ich habe eine Verständnisfrage:
>
> Ich möchte die Zeit zwischen externen Interrupts messen.
> Habe gelesen, dass sich dafür der Capture/Compare Mode eignet.
Nicht so richtig. Die Funktion einer Capture-Einheit besteht darin, den
aktuellen Stand eines Timers abzuspeichern, wenn ein Hardware-Ereignis
stattfindet. Welche Arten von Hardware-Ereignissen möglich sind, hängt
vom konkreten Timer-Subsystem ab. Das Minimum das jeder µC haben sollte,
sind steigende/fallende Flanken an einem IO-Pin.
Ein Interrupt hingegen ist die softwareseitige Reaktion auf ein
Hardware-Ereignis. Wenn du ein Ereignis per Capture erfaßt, dann
brauchst du dafür nicht auch noch extra einen Interrupt auszulösen.
Zumal die Capture-Einheiten ohnehin die Möglichkeit bieten, bei der
Auslösung selber einen Interrupt anzumelden.
Statt Hardware-Capture kann man die gleiche Funktion auch in Software
nachbilden. Dazu läßt man einfach einen Timer durchlaufen und in der ISR
für den entsprechenden Interrupt liest man den Zählerstand aus und
schreibt ihn in eine Variable.
Hardware-Capture hat den Vorteil, daß die Verzögerung zwischen dem
Hardware-Ereignis und dem Auslesen des Timers minimal ist. Und auch
nicht durch Interrupt-Sperren o.ä. beeinflußt wird.
> Wie muss ich nun vorgehen?
>
> Kann ich über den gleichen Pin, an dem ich die externen Interrupts
> erkenne, auch den Timer für den Capture/Compare Mode benutzen?
Lies das Hardware-Manual deines STM32. Insbesondere den Teil über die
Timer und deren Capture-Funktion. Die unterschiedlichen STM32-Familien
haben da durchaus unterschiedliche Fähigkeiten.