Forum: Mikrocontroller und Digitale Elektronik Müssen Tasten am PCF8574 entprellt werden?


von Joern DK7JB .. (moin)


Lesenswert?

Hallo,

bei meinem aktuellen Projekt müssen Taster abgefragt werden, die etwas 
weiter von Mikrocontroller (ATMEGA644) entfernt sind und für die sowieso 
keine Beine frei wären. Ich denke gerade an die Möglichkeit die Taster 
an zwei PCF8574 anzuschließen (für jeden Taster einen einzelnen Eingang 
- keine Matrix) und nur die I2C Leitungen plus eine Interruptleitung zum 
Hauptcontroller zu führen. Die I2C-Leitungen verlaufen sowieso durchs 
ganze Gerät.

Nun zur Frage:
Ist es überhaupt notwendig die Tasten zusätzlich noch per Software zu 
entprellen, da die Abfrageprozedur per I2C sowieso relativ langsam im 
Vergleich zu einer direkten Abfrage ist?

Die Taster in der Nähe des Mikrocontrollers werde ich wahrscheinlich mit 
einer Matrix und einem ADC-Eingang abfragen:
Beitrag "Re: Tastenmatrix auslesen über nur 2 Leitungen"

Grüße Jörn

von zwölferl (Gast)


Lesenswert?

Joern B. schrieb:
> Ist es überhaupt notwendig die Tasten zusätzlich noch per Software zu
> entprellen,

meiner Einschätzung nach nicht.

von Bronco (Gast)


Lesenswert?

Joern B. schrieb:
> Ist es überhaupt notwendig die Tasten zusätzlich noch per Software zu
> entprellen, da die Abfrageprozedur per I2C sowieso relativ langsam im
> Vergleich zu einer direkten Abfrage ist?

Kommt drauf an, was Du unter langsam verstehst.
Ist langsam alle 100us oder alle 100ms?

von Falk B. (falk)


Lesenswert?

@  Joern B. (moin)

>Ist es überhaupt notwendig die Tasten zusätzlich noch per Software zu
>entprellen, da die Abfrageprozedur per I2C sowieso relativ langsam im
>Vergleich zu einer direkten Abfrage ist?

Eigentlich schon, denn eine Tastenabfrage alle 1-10ms unterschiedet sich 
nicht zwischen direkten Pins und I2C Portexpander.

von Joern DK7JB .. (moin)


Lesenswert?

Hallo Falk,
deine Antwort habe ich leider nicht verstanden und bitte um eine 
Erklärung. Meine Idee war, dass das bis zum Beginn einer Abfrageprozedur 
sowieso so viel Zeit vergeht, dass der Schalter dann nicht mehr prellt. 
Vielleicht mache ich aber hier sowieso einen Gedankenfehler. Die PCF8574 
wollte ich sowieso nur abfragen, wenn das Interrupt-Signal des PCF8574 
einen Wechsel anzeigt.

Vergessen hatte ich zu erwähnen, dass ich zum Entstören sowieso am 
Eingang des Portexpanders 47nF hängen möchte.
Aufbau: Taster mit 10k nach 5V und 47nF nach Masse. Dann geht es zum 
Eingang des PCF8574
Vielleicht wird auch ein anderer Portexpander verwendet, was aber an der 
Fragestellung nichts ändert.

Grüße Jörn

von Peter D. (peda)


Lesenswert?

Entprellen schadet nichts und kostet kaum Ressourcen. Also im Zweifel 
ruhig einbauen. Außerdem ermöglicht es bequem Zusatzfunktionen 
(lang/kurz/repeat).


Peter

von Falk B. (falk)


Lesenswert?

@  Joern B. (moin)

>deine Antwort habe ich leider nicht verstanden und bitte um eine
>Erklärung.

Man kann auch einen PCF8474 mit einem 1ms Timer abfragen, wenn man es 
denn will oder braucht. Ein Schalter kann mehr als 1ms prellen. Wenn man 
nun nicht entprellt, prellt es ;-)
Das Gleiche geht auch mit direkt an den Propzessor angeschlossenen 
Tastern, auch wenn man die theoretisch mit 100kHz auslesen könnte.

> Meine Idee war, dass das bis zum Beginn einer Abfrageprozedur
>sowieso so viel Zeit vergeht, dass der Schalter dann nicht mehr prellt.

Wie lange ist das? 1ms? 10ms? Soooo langsam ist I2C auch nicht bei 
400kbit/s.

Klar kann man mit gemächlichen 10ms oder gar 100ms die Tasten auslesen, 
dann muss man wohl nicht mehr entprellen.

>Vielleicht mache ich aber hier sowieso einen Gedankenfehler. Die PCF8574
>wollte ich sowieso nur abfragen, wenn das Interrupt-Signal des PCF8574
>einen Wechsel anzeigt.

Kann man machen. Dann muss man aber dennoch iregndwie entprellen, 
sinnvollerweise NICHT mit Warteschleifen. Eher so, dass man in einem x 
ms Timerinterrupt prüft, ob das INterruptpin aktiv ist und dann 
ausliest.

>Vergessen hatte ich zu erwähnen, dass ich zum Entstören sowieso am
>Eingang des Portexpanders 47nF hängen möchte.
>Aufbau: Taster mit 10k nach 5V und 47nF nach Masse. Dann geht es zum
>Eingang des PCF8574

Und tostet langsam aber sicher deinen Kontakt, der jedes mal die 47nF 
hart kurzschließt. Nicht gut. Lass das alles weg und schließ die Taster 
direkt ohne alles gegen Masse an. Fertig.

http://www.mikrocontroller.net/articles/Port-Expander_PCF8574

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Joern B. schrieb:
> Meine Idee war, dass das bis zum Beginn einer Abfrageprozedur
> sowieso so viel Zeit vergeht, dass der Schalter dann nicht mehr prellt.
Weiß der Schalter von deiner Idee?
Oder weißt du sicher, dass das so ist?
Wie lange prellt dein Schalter?
Und nach 10000 Betätigungen?

Frag ich mal andersrum:
Hast du irgendeine Versicherung abgeschlossen?
Wenn ja: warum? Richtig: weil es sein könnte, dass...

Und jetzt wieder:
Entprellst du deine Schalter?
Wenn ja: warum? Richtig: weil es sein könnte, dass...

von Bronco (Gast)


Lesenswert?

Joern B. schrieb:
> Die PCF8574
> wollte ich sowieso nur abfragen, wenn das Interrupt-Signal des PCF8574
> einen Wechsel anzeigt.

Du findest aber das Prellen des Tasters auf dem Interrupt-Signal wieder.

Entprellen würde eher so funktionieren, daß Du den PCF in einem festen 
Zeitraster ausliest, welches langsam genug ist, um Prellen 
auszuschließen.

von Joern DK7JB .. (moin)


Lesenswert?

@alle

Ihr habt mich überzeugt. Die Arbeit mit dem Timer und ohne Wartezeiten 
habe ich mit Bascom bisher so noch nicht gemacht und werde mich damit 
mal auseinandersetzen. Die Tutorials hier im Forum habe ich gefunden und 
werde sie durcharbeiten. Bisher hatte ich gehofft, dass ich um diese 
Timer-Geschichte herumkomme ;-(.
Noch ist die Routine von Peter für ich etwas sperrig.

In meinem Projekt arbeite ich mit einem Drehencoder, direkt abgefragten 
Tastern, mit über I2C abgefragten Tastern, einem Display. Gesteuert 
werden einige Relais, ein DDS AD9912 und ein SI570. Zusätzlich ist das 
Umfeld mit HF-Störungen durchsetzt. Mir wird immer klarer, dass ich eine 
handfeste Absicherung durch eine Entprellung benötige. Wenn ich eine 
Timer-Entprellung in Bascom eingebunden habe, kann ich sie auch für 
spätere Projekte verwenden ;-).

Grüße Jörn

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.