AVR Taster Software Entprellung/Entstörung

Gast #2108310
Lesenswert?

Hallo.

Kann man bei einem AVR eine Entprellung und Entstörung wie folgt machen:

Bei einer steigenden Flanke wird ein Timer gestartet. Erst nach Ablauf 
von 100 ms wir der Wert akzeptiert.
Kann man damit auch die 50 Hz Einkopplung aus dem Netz eliminieren, die 
sonst 50 mal pro Sekunde triggert?
Gast #2108410
Lesenswert?

Meines Wissens sind 10ms grosszügig genug für Entprellung - für die 
meisten Schalter / Taster reichen 1ms - 2ms (aber ohne Garantie).

@Blume
Wieso geht das nicht mit 100ms? Ist doch eine halbe Schwingung, sollte 
also optimal sein?
#2108456
Lesenswert?

Voltage schrieb:
> Hallo.
>
> Kann man bei einem AVR eine Entprellung und Entstörung wie folgt machen:
>
> Bei einer steigenden Flanke wird ein Timer gestartet.

Nö, Unfug, der Timer wird bereits beim AVR-Start gestartet und liest 
alle etwa 4 bis 30 ms ein komplettes Byte mit bis zu 8 Tasten ein.

> Erst nach Ablauf
> von 100 ms wir der Wert akzeptiert.

Nööö, erst wenn 4 Runden hintereinander der Tastenzustand als (gegenüber 
gemerktem und als gültig erklärten Zustand) verändert erkannt wurde, 
erreicht der Tastendruckzähler seinen Endwert, was dazu führt, dass der 
neue Tastenzustand übernommen (gemerkt und für gültig erklärt) wird. Als 
Zugabe gibt es noch Flankenerkennung (Taste wurde irgendwann mal 
gedrückt, aber noch nicht bearbeitet) für bis zu 8 Tasten gleichzeitig 
und mit kleiner Erweiterung auch eine Repeatfunktion für ausgewählte 
Tasten.

Falls Dich das interessiert, dann suche mal in der Codesammlung nach 
"Bulletproof".

> Kann man damit auch die 50 Hz Einkopplung aus dem Netz eliminieren, die
> sonst 50 mal pro Sekunde triggert?

Man muss die Tasten ja nicht gerade mit exakt 50 Hz abtasten. Obwohl das 
bei mir (mit 20 ms) noch nie zu Fehlauslösungen geführt hat, obwohl ich 
nur die AVR-internen Pullup-Widerstände benutze. Wenn bei Dir das Netz 
einstreut, dann machst Du was Anderes falsch.

...
#2108465
Lesenswert?

Voltage schrieb:
> Bei einer steigenden Flanke wird ein Timer gestartet. Erst nach Ablauf
> von 100 ms wir der Wert akzeptiert.

Es hat sich bewährt, den Timer durchlaufen zu lassen, dann kann er noch 
andere Sachen machen.
Auch entprellt man bequemer Weise gleich den ganzen Port, da oftmals 
eine Taste nicht reicht.
Und wenn man auch das Loslassen entprellt, wird das noch sicherer und 
die Software einfacher (keine Fallunterscheidung).

Beitrag "Universelle Tastenabfrage"


Peter
Gast #2108475
Lesenswert?

Wohnst Du im Trafohäuschen? Wenn EMV trotz Pull-up-Widerstand ein 
Problem ist, schalte es so:

Taster gegen Masse, anderer Anschluß über 100R an 
Schmitt-Trigger-Eingang (HC11). Außerdem dort 1kR nach Vcc und 10kR mit 
10nF nach GND. Schmitt-Trigger-Ausgang an µC. Schluß ist mit Störungen! 
Leider ist dann auch die Stromaufnahme der Schaltung enorm: 5mA extra 
pro Taster.

Entprellung machste dann in Polling. Wenn bei z.B. 280Hz Abtastung 7 
hintereinanderliegende Zustände gleich sind, wird Deine Tastervariable 
gesetzt.

Gruß - Wolfgang
Gast #2108989
Lesenswert?

Im Prinzip nein, aber...

Wer will eigentlich garantieren, daß es dann keinesfalls mehr prellen 
kann? Sieh eine Entprellung in Software vor (kleine Kodierübung) und 
freue Dich dann, falls sie doch nicht in Aktion treten müssen sollte. 
Der Speicherverbrauch hält sich in Grenzen und auch die Prozessorlast 
ist zu vernachlässigen.

Gruß - Wolfgang

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