Hallo, ich möchte einen Schalter mit einem Atmega8 abfragen (kein Taster). Der Schalter schaltet GND durch an einen Portpin der über die internen Pullups hochgezogen wird. Genügt es einfach, um zu erkennen, Schalter geschlossen oder offen den Portpin abzufragen (ob high oder low) oder muss man hier auch entprellen? Ob der "Druck" des Schalter 100ms später erkannt wird, stört mich nicht. So schnell merkt der Benutzer die Änderung sowieso nicht. Wie ist vorzugehen? Ziel ist es einfach, Schalter geschlossen mache dies, Schalter offen, mache etwas anderes. Danke. Felix
Entprellen musst du schon. Entweder stupide über ein Delay, oder z.B. einen Counter, der bei Änderung losläuft und eine erneute Reaktion auf die Schalteränderung für eine gewisse Zeit sperrt.
Ok, ich verwende derzeit bei Taster die Entprellroutine von Peter Danegger. Ich denke, die Funktion get_key_state dürfte dann für das Einlesen eines Schalters die Richtige sein oder?
Felix schrieb: > Genügt es einfach, um zu erkennen, Schalter geschlossen oder offen den > Portpin abzufragen (ob high oder low) oder muss man hier auch > entprellen? Die Frage ist ganz einfach, ob es etwas ausmacht, wenn dieselbe 'Aktion' in den ersten paar Millisekunden nach dem Umschalten ein paar mal abläuft oder nicht. Wenn der Schalter eine LED einschaltet und beim erneuten Umlegen des Schalters wieder ausschaltet, dann ist es herzlich egal, ob die LED in den ersten paar Millisekunden nach dem Schalten 2 oder 3 mal flackert. D.h. das was der Schalter auslöst, entscheidet ob man entprellen 'muss' oder nicht.
>Genügt es einfach, um zu erkennen, Schalter geschlossen oder offen den >Portpin abzufragen (ob high oder low) oder muss man hier auch >entprellen? Ich würde eine RC Entprellung rein machen und sich dann keine Sorgen machen, ob der Prellt oder nicht. BOM Kosten 2 Cent...
Felix schrieb: > Ok, ich verwende derzeit bei Taster die Entprellroutine von Peter > Danegger. Wenn du die sowieso schon drinn hast, wo liegt dann das Problem? > Ich denke, die Funktion get_key_state Dafür ist sie gedacht.
Hallo Felix, Schalter prellen genauso wie Taster (teilw. sogar noch mehr, bzw. länger). Ob Du aber entprellen musst, kannst nur Du wissen. Falls es egal ist wenn Dein Programm ein wenig hin- und herzappelt kannst Du Dir die Entprellung sparen Gruß Martin
Felix schrieb: > Ob der "Druck" des Schalter 100ms später erkannt wird, stört mich nicht. Dann musst du definitiv auch nicht entprellen - solange prellt kein Schalter. Und selbst wenn du zufällig gerade zum Zeitpunkt des Schaltens abfragst, dann erhältst du eben entweder den alten oder den neuen Zustand. Das gilt aber nur, wenn du tatsächlich nur alle 100 ms abfragst. Das IST praktisch die Entprellung. Gruss Reinhard
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.