Also zunächst mal würde ich einen der Timer so konfigurieren, daß er eine art globalen Takt zur Verfügung stellt, er sollte also im wesentlichen nur eine Variable z.B. 1x pro Millisekunde um eins inkrementieren. Je nach Bedarf muss das natürlich eventuell auf mehrere Variablen erweitert werden, ich verwende eigentlich immer mehrere Variablen (z.B. 1/1000s, 1/10s, 1s, 1min ... je nachdem was gerade gebraucht wird)
Auf diese Art kann man leicht an beliebiger Stelle die Zeit, welche zwischen zwei Ereignissen vergangen ist feststellen, denn man muss ja nur die Startzeit von der Endzeit abziehen.
So, und damit das mit deinen beiden Tastern bequem funktioniert, schließt du sie an die beiden zur Verfügung stehenden externen Interrupts an.
Der Ablauf ist dann ganz simpel:
- Einstellen beider Interrupts auf fallende Flanke (wenn die Taster gegen Masse schalten)
- Wenn ein Interrupt durch eine fallende Flanke ausgelöst wird: die aktuelle Zeit (= Startzeit) merken, und den Interrupt auf steigende Flanke umschalten
- Wenn ein Interrupt durch eine steigende Flanke ausgelöst wurde: Startzeit von aktueller Zeit abziehen (= Dauer des Tastendrucks), und den Interrupt wieder auf fallende Flanke umschalten.
Lesezeichen