Entprellung von Schalter/Pin (nicht Taster) also Low & High

Gast #621654
Lesenswert?
• ▲
▼
Hallo,

habe in der Codesammlung die "Bulletproof" Entprellung für Tasten 
gefunden. Die ist soweit wunderbar, allerdings nicht für Schalter. Habe 
jedoch einen mechanischen Schalter, bei dem auf Low und High reagiert 
werden soll. Wie entprellt man so etwas? In der ISR (Timer Overflow) 
einfach eine Variable hochzählen wenn der letzte Zustand dem aktuellen 
entspricht, andernfalls die Variable wieder auf Null zurücksetzen? Ab 
einem bestimmten Zählerwert ist halt ein Zustand eingetreten. Bessere 
Vorschläge?

Gruß,

Hans
Gast #622284
Lesenswert?
• ▲
▼
Hallo,

habe probiert die Entprellung zu verstehen und bin dazu auch mal den 
Code per Zettel + Stift durchgegangen um zu sehen was da überhaupt 
passiert. Muss gestehen: das Teil funktioniert perfekt, aber wäre ich 
nie drauf gekommen und werde ich auch nicht ändern/anfassen. Habe nur 
die Tastenabfrage erweitert, so dass man Pins aus unterschiedlichen 
Ports verwenden kann und arbeite da noch dran Pins die nicht von 0...7 
gehen zu verwenden (z.B. PortA Pin0, Pin1 & PortB Pin1).
Zurück zum Thema: habe das jetzt so im Timer Overflow gelöst (actState 
und switchcount sind globale Variablen die mit 0 initialisiert werden):

  unsigned char tempSwitch;

  tempSwitch = (PortSwitch & (1 << PinSwitch));
  if (tempSwitch == actState)
  {
    switchcount++;
  }
  else
  {
    switchcount = 0;
  }
  actState = tempSwitch;

Außerhalb der ISR prüfe ich dann einfach switchcount auf größer/gleich 4 
und den Zustand von actState. Scheint zu laufen ;=)

Gruß,

Hans

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.