Hallo, ich muss 4 Taster an meinem Mega32 entprellen. Auf meiner Platine ist noch Platz, das Programm würde ich nur ungern ändern. Wie genau muss ich das anstellen? Im Internet finde ich nur Schaltpläne mit Schmitt-Trigger, aber das braucht man ja beim AVR nicht, richtig? Wie muss ich verkabeln? MfG Simon
>ich muss 4 Taster an meinem Mega32 entprellen. Auf meiner Platine ist >noch Platz, das Programm würde ich nur ungern ändern. Timerinterrupt mit 20-50ms kostet glaub ich gerade mal 20 Zeilen Code.
Wenn du unbedingt eine Hardwareentprellung willst, dann brauchst du 4 RS FF und entsprechend 4 Taster mit Umschaltkontakt. Aber wenn man schon einen mC hat, dann kann man das auch softwaretechnisch lösen. Fred
Ichnur schrieb: > Wie genau muss ich das anstellen? Nimm die bekannte Routine für 8 Tasten. http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Ichnur schrieb: > Im Internet finde ich nur Schaltpläne > mit Schmitt-Trigger, aber das braucht man ja beim AVR nicht, richtig? Völlig richtig. Ichnur schrieb: > Wie muss ich verkabeln? Taste an Pin und gegen GND. Vorzugsweise alle 4 Tasten an den gleichen Port. Peter
Danke für den Link! Ich versuch es jetzt per Software und wenn das nicht klappt, dann per Hardware. Meine Taster hängen alle an PORTD. Da sind aber auch noch LEDs dran. So wie ic hden Code verstehe, sollte das aber keine Probleme machen. Ein paar Fragen zum Code habe ich noch. 1) Was ist
1 | #define REPEAT_MASK (1<<KEY1 | 1<<KEY2) // repeat: key1, key2
|
2 | #define REPEAT_START 50 // after 500ms
|
3 | #define REPEAT_NEXT 20 // every 200ms
|
? Ich verstehe nicht, wozu diese Konstanten gut sein sollen. Brauch ich das nur für "Doppelklicks"? 2) Warum werden nur 4 Schwingungen ("Toggles" des Schalters) beachtet und wo ist dies im Code zu finden? Auf Antworten freue ich mich!
Ichnur schrieb: > Ich verstehe nicht, wozu diese Konstanten gut sein sollen. Brauch ich > das nur für "Doppelklicks"? Das ist keine doppelklick-funktion, sondern eine Repeat-Funktion wie z.B. an der PC-Tastatur: einmal drücken und warten ergibt mehrere nachfolgende Tastendrücke... > 2) Warum werden nur 4 Schwingungen ("Toggles" des Schalters) beachtet > und wo ist dies im Code zu finden? Wie meinst du das? Im Code sind einfach nur 8 parallele Zähler (das sind die Bytes), die jeweils 4 Schritte (=Timeraufrufe) weit zählen können. Solange muß das Tastensignal stabil bleiben, sonst wird der entsprechende Timer zurückgesetzt.
Danke für Punkt 2, habs verstanden! Ich habe einfach nahc einer Möglichkeit gesucht, die Grenze für maximale Schwingungen zu ändern. Ist aber nicht so schlimm, wenn es das nicht gibt. Erklärung 1 habe ich jetzt auch kapiert :) Ich hoffe nur, dass das Ganze auch problemlos funktioniert und ich nicht an sowas hängen bleibe. Morgen muss das Ding nämlich laufen (Nein, kein Schulprojekt ;))
Ichnur schrieb: > Ich habe einfach nahc einer > Möglichkeit gesucht, die Grenze für maximale Schwingungen zu ändern. Ist > aber nicht so schlimm, wenn es das nicht gibt. Ergibt sich aus der Interruptrate: 10ms * 4 = 40ms Ist aber völlig unkritisch. In der Regel reichen 2ms aus, kannst aber auch auf 50ms hochgehen. Reaktionen nach <=200ms werden vom Menschen noch als "sofort" wargenommen. Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.