Sven Weinmann schrieb:
> in meinem Script habe ich eine ADC, welche mir zu definierten Zählwerten
> ein Signal auf einen Pin gibt. Dieses Signal möchte ich nutzen, um die
> Flankenerkennung anzusteuern.
Man kann zar auch mit analogen Dingen eine Flankenerkennung machen, aber
dazu sollte die Flanke dann schon sehr eindeutig sein. Besser (und auch
einfacher) ist es aber, wenn ganz klar nur 2 Zustände im Spiel sind, man
also ein digitales Signal hat. Oder wo ist denn bei diesem
Spannungsverlauf
*
*
****
*
**
***********
***
die Flanke?
Das Kennzeichen einer Flanke ist es
*******************
*
*
*
************
das ein Eingangssignal eindeutig seinen Pegel ändert. D.h. wenn man vom
Digitalpin laufend eine 0 bekommt
************
und dann plötzlich eine 1
*******************
*
*
*
************
dann war beim Übergang von 0 auf 1 die Flanke
*******************
*
*
*
************
^
|
|
+--- hier ist die Flanke.
D.h. eine Flanke stellt man fest, indem man den momentanen Pegel mit dem
Pegel zeitlich kurz davor vergleicht. Das klappt zwar auch mit analogen
Signalen, ist aber nicht so eindeutig, weil man ja nicht jede kleine
Änderung als Flanke akzeptieren kann und auf der anderen Seite auch mit
Änderungen klar kommen muss, bei der sich die Spannung nur langsam an
den Maximalwert 'anschleicht'. D.h. sinnvollerweise wird man das analog
Signal vorher sowieso diskretisieren. Dann kann man es aber auch gleich
als Digitalsignal einlesen.
In C muss man dann eben eine Variable benutzen, in der man sich den
Zustand des Einganges von vorher merkt und wenn sich der jetzige Zustand
von dem genügend unterscheidet, dann hat man eine Flanke.
vorher = Zustand am Pin
while( 1 ) { // Hauptschleife
jetzt = Zustand am Pin
if ( jetzt != vorher ) {
// Flanke erkannt
}
vorher = jetzt
}
Der jeweils in einem Schleifendurchlauf gültige Zustand am Pin wird in
einer Variablen gemerkt, damit er im nächsten Schleifendurchlauf mit dem
jeweils neuen Zustand verglichen werden kann.