Python, Raspberry-Problem: Kontakt entprellen

Gast #5934080
Lesenswert?
• ▲
▼
Die Entprellung auf dem Raspberry mittels der RPi.GPIO-Funktion 
GPIO.add_event_detect (siehe unten) ist ein Witz. Es wird nicht 
entprellt, es wird während der bouncetime nur gewartet. Weiter 
Auslösungen durch das Prellen des Kontakts werden einfach blockiert. Das 
Ereignis wird sofort ausgeführt. Ist die Schließzeit des Kontaktes 
länger als die bouncetime dann wird beim Öffnen des Kontakts u. U. - 
durch das Prellen - wieder ein Ereignis ausgelöst.

Ist eine Abhilfe nur per Kondensator, Widerstand & Schmitt-Trigger o. ä. 
möglich oder wie kann man eine echte Entprellung per Software 
durchführen?

1
GPIO.add_event_detect(pin, GPIO.FALLING, callback = AlarmCallback, bouncetime = 1000)
#5934214
Lesenswert?
• ▲
▼
Witty schrieb:
> Die Entprellung auf dem Raspberry mittels der RPi.GPIO-Funktion
> GPIO.add_event_detect (siehe unten) ist ein Witz.

Ja, viele gelernte Programmierer tun sich schwer damit, die reale Welt 
zu verstehen.
Ich entprelle immer gleich ganze Ports. Eine 4-fach Abtastung mit der 
Entprellzeit (2..20ms) hat sich dafür als optimal erwiesen. Praktischer 
Weise kann man bei der Entprellung auch gleich die Flanke mit auswerten, 
d.h. die Änderung des entprellten Signals.

Witty schrieb:
> Peter Z. schrieb:
>
>> Vielleicht zum Entprellen einen Timer parallel laufen lassen?
>
> Warum?

Nun, um während der Entprellzeit, die CPU nicht zu blockieren. Der Timer 
ist durch das Entprellen auch nicht verloren, er kann nebenei noch 
andere Sachen machen.
Bei MCs mit wenigen Timern (z.B. ATtiny13) kann man auch andere 
periodische Ereignisse für das Entprellen verwenden, z.B. den 
ADC-Interrupt.
Gast #5934372
Lesenswert?
• ▲
▼
Konrad S. schrieb:
> Selbst wenn es so wäre: Pedas Code für diesem Einsatzzweck läuft seit
> Jahren ohne Probleme.

Ich habe auch ein Programm zum Entprellen geschrieben, das seit langem 
läuft - leider ist die Variable zum Warten nach einem Tastendruck zu 
hoch eingestellt und man kann nur im Schneckentempo eintippen  :-)
Gast #5934384
Lesenswert?
• ▲
▼
>Raspberry-Problem

Nein, ist es nicht.

Bei Verwendung von Warteschleifen kommt es zu Problemen im Kopf des 
Programmierers.

Du liebe Güte, wie oft soll die Entprellung von Tasten noch das Thema 
sein?
Es gibt bewährte Lösungen. Die wurden hinreichend dokumentiert. Immer 
wieder angezweifelt, weil (siehe oben) ein Problem im Kopf besteht. Im 
Endeffekt gehen solche Threads endlos, enden in Glaubenskriegen durch 
Leute die nur glauben und nicht denken.

Peng.
#5934604
Lesenswert?
• ▲
▼
Das Problem ist, daß viele professionelle Programmierer denken, das 
Entprellen sei ja so popeleinfach, daß es nicht Wert ist, sich darüber 
mal gründlich Gedanken zu machen. Sie hauen einfach irgendwo Wartezeiten 
rein mit den sattsam bekannten Folgen. Und daher funktionieren viele 
Tastenabfragen eher schlecht als recht und der Benutzer muß sich damit 
rumärgern.

Die Filterung durch Mehrfachabtastung habe auch nicht ich erfunden, sie 
wird schon lange eingesetzt, nur leider viel zu selten. Z.B. 
Entprell-ICs haben sie implementiert, aber die sind sehr teuer.

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.