Forum: Mikrocontroller und Digitale Elektronik Flankenauswertung


von David (Gast)


Lesenswert?

Wir sollen ein Programm schreiben, dass bei einem Tastendruck ein LED 
leuchten lässt und wenn man nochmals drückt, dass die LED wieder 
ausgeschaltet wird.
Wir Programmieren in AVR Studio 4, unser Microkontroller ist der 
ATmega16

von David (Gast)


Lesenswert?

Habe keine Ahnung wie ich anfangen soll...

von Thomas_32 (Gast)


Lesenswert?


von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Moin,

also bei so komplizierten Dingen wird dir hier kaum jemand weiter helfen 
können ;)

Guck dir doch mal die Tutorials an. Die Suchfunktion hier im Forum kann 
ich dir auch empfehlen.

Grüße aus Berlin

von Hans (Gast)


Lesenswert?

Und lese auch gleich noch nach wie man einen Schalter entprellt.
Das ist sonst die nächste Frage. .. warum es ab und zu geht und ab und 
zu nicht.

von Karl H. (kbuchegg)


Lesenswert?

David schrieb:
> Habe keine Ahnung wie ich anfangen soll...


Grundsätzlich:
mit der Überlegung, was denn eine Flanke aus Sicht eines Programms 
überhaupt ist. Woran kann man eine Flanke erkennen?

Dann mit
1
int main()
2
{
3
4
}

der Initialisierung der beteiligten Port-Komponenten und der Abfrage des 
betreffenden Pins. Und dann überlegt man sich, wie man die 
Flankenerkennung umsetzt. Eine Flanke ist ja nichts anderes als: eben 
noch war der Pin auf 0, jetzt beim nächsten nachsehen ist er auf 1, ergo 
muss da eine 0->1 Flanke gewesen sein. Du wirst also eine Variable 
brauchen, in der du dir den zuletzt am Pin gesehenen Zustand speichern 
kannst um dann den Vergleich durchzuführen.


Wie gesagt: das ist grundsätzlich so.
Denn in der Praxis kommt dann noch Prellen dazu, und dann wird die 
vermeintlich einfache Aufgabe plötzlich recht knifflig, wenn man es 
vernünftig lösen will.

von Martin V. (oldmax)


Lesenswert?

Hi
So ganz verstehe ich das nicht. Du hast in der Überschrift 
"Flankenauswertung" stehen. Warum setzt du das nicht bei der Suche ein 
und liest erst einmal, was hier und da darüber geschrieben worden ist. 
Das Thema ist bereits mehrfach durchgekaut. So ein wenig lesen solltest 
du schon, denn es ist zwar leicht, sich alles vor die Nase tragen zu 
lassen, aber Freunde machst du dir damit nicht.
Außerden, es ist nicht entscheident, welchen Controller du benutzt, 
sondern die Sprache ist eigentlich Maß der Dinge. Und damit du nicht so 
ganz ohne Hilfe dastehst, hier mal ein Tip.
Du hast eine Ablage der letzten gelesenen Werte aus der IO.
Die neuen Werte verknüpst du Exclusiv - Oder
Änderung = alt eor neu = 1
Das Ergebnis mit und:
Flanke_To_1 = Änderung And Neu
Flanke_To_0 = Änderung And Alt
Danach
Neu nach alt !
So, nun solltest du wissen, wie es geht.
Gruß oldmax

von m.n. (Gast)


Lesenswert?

David schrieb:
> Habe keine Ahnung wie ich anfangen soll...

Vielleicht mal in der Codesammlung suchen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.