Schalter abfragen (nicht Taster)

Gast #3260567
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
Gast #3260575
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?
#3260576
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.
Gast #3260579
>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...
Gast #3260582
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
Gast #3260605
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.