Pinchanges verwende Ich im Prinzip nicht so gerne.
Eben weil man im Nachgang feststellen muss welcher Eingang denn nun den Interrupt getriggert hat und welche Flanke es war.
Ich lass eigentlich bei jedem Projekt einen Timer mitlaufen.
In seinem Timer Overflow Interrupt lasse ich dann einfach einen oder mehere Countdown Zähler runterzählen.
Die Anfangswerte werden im Hauptprogramm gesetzt und erst wenn der Counter wieder 0 erreicht hat wird nachgeschaut ob sich was geändert hat.
Beispiel:
Im Hauptprogramm wurde festgestellt, das eine Taste ihren Zustand geändert hat.
Dann wird der zugehörige Countdown Zähler mit einem Wert vorbelegt.
Die Timer Overflow Interrupt routine zählt diesen Zähler dann runter.
Wenn der wieder 0 erreicht hat wird geguckt, ob sich der Tastendruck bestätigt hat ( = Aktion auslösen ), oder ob die Taste nur geprellt hat.
Die entprell Zeiten lassen sich somit einfach durch verändern des Countdown Initial Wertes einstellen.
In der gleichen Timer Overflow Interrupt Routine lassen sich dann auch noch weitere Counter für andere Aufgaben realisieren.
Z.B. einen Countdowncounter für ein Display refresh usw.
Lesezeichen