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 #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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren