Was meinst du mit negativer Flanke genau?
Die
V
+x V -------+
|
0 V +------
oder
Die
V
0 V ----------+
|
-x V +------
Wie groß ist x?
Je nach dem muss man eine Eingangsschaltung benutzen. Negative oder zu
hohe Spannungen tun dem AVR aua. Die muss man zuerst in einen
verträglichen Bereich bringen.
Wie oft kommen die Flanken (Frequenz)?
Die Frequenz ist wichtig für die Auswahl der Eingangsschaltung und für
die Auswahl der passenden Programmstruktur.
Bei niedrigen Frequenzen kann man mit Polling ("Abfragen") arbeiten.
Laufend den Zustand der Leitung abfragen und wenn sich der Zustand alt =
HIGH zum Zustand neu = LOW geändert hat, hast du eine Flanke entdeckt.
Bei hohen Frequenzen ist Interruptbetrieb angesagt, d.h. du bereitest
die Hardware des AVR so vor, dass diese unabhängig von deinem Programm
auf die Flanke reagiert.
Ein Zwischending ist die Überwachung der Leitung in einer Timerroutine.
Der Timer läuft öfter als dein Hauptprogramm und unabhängig "neben"
deinem Hauptprogramm. In der Timerroutine wird dann Polling gemacht.
Für sauberen Interruptbetrieb gibt es verschiedene Möglichkeiten. Je
nach Möglichkeit, muss aber das Signal an einem bestimmten Pin
angeschlossen sein.
Der Analog Comparator vergleicht ein Signal mit einem Vorgabewert und
kann einen Interrupt erzeugen, wenn der Vergleich so oder so ausfällt.
Beispiel: Vergleiche Signal mit 2,56V (interne Referenz). Eingestellt
wird Interrupt schmeissen, wenn Signal < Referenz. Das wird eine
HIGH-LOW Flanke erkennen.
Die Input Capture Unit kann ebenfalls benutzt werden. Hier kann man
direkt den Trigger (Auslöser) einstellen, ob eine steigende Flanke oder
eine fallende Flanke den Interrupt auslöst.
Spielt bei der Signalquelle Prellen eine Rolle?
Wenn ja ist eine Entprellung notwendig.