Forum: Mikrocontroller und Digitale Elektronik PIC + Tastermatrix


von Erhard (Gast)


Lesenswert?

Hallo,

ich habe an einem PIC16F871 am PORTB eine Tastermatrix angeschlossen,
PORTB0-2 sind als Ausgang definiert, der Rest als Eingang mit 
eingeschaltenen Pull-Up´s.

Eins vorweg -> sie frunktioniert.

Ab und zu allerdings passiert es, das Tasten "überblenden", soll heißen:
Z.B. PORTB0 ist L und die Taste an PORTB7 ist gedrückt -> die Funktion 
wird gestartet, allerdings auch die Funktion die mit PORTB6 verknüpft 
ist.

Das Einfügen einer kleinen Zeitschleife von 10µs zwischen den Abfragen 
brachte zwar eine Verbesserung, aber es läuft noch nicht sicher.

Hat jemand von Euch auch schon dieses Problem gehabt und wenn ja, was 
ist dagegen zu tun?

von Ale (Gast)


Lesenswert?

Tasten "springen" so du muss per soft ein "debounce" algorithm benutzen.
d.h. du musst sicher sein dass srpungene Taste nicht als ein neue 
drukene Taste erkennt ist. SO im prinip wenn du eine Probe nimmst und 
ein bisschen Zeit später eine neue Probe nimmst und beide sind gleich, 
du kannst sagen daß di Taste ein bestimmte Position hat (gedruckt oder 
nicht). mehr als 20 uS und bis 25 funktioniert bei mir gut. Gibt viel in 
andere Threads und auch ein Tutorial. (Wenn ich deine Frage nicht 
werstanden habe, sag es einfach so).

von Currywurst (Gast)


Lesenswert?

Zu "debounce" sagt man auch Entprellen. Ab einer bestimmten Zeitspanne 
bist du auf einer sicheren Seite. Die Zeit zwischen den einzeln Abfragen 
auf einen Wert zu stellen der sicher länger ist als der Prell-Vorgang, 
ist eine Entprellung. Setz die Zeit zwischen den Abfragen auf 1ms oder 
mehr. Kein Mensch kann eine Taste zweimal in 1000us drücken.

von Erhard (Gast)


Lesenswert?

Hab den Fehler gefunden nachdem das Zeug mal in der Ecke lag.
Die Eingänge waren ja über die internen Pull-Up´s abgeschlossen.
Ich habe die Dinger nun abgeschaltet und "richtige" Widerstände mit 10k
an die Eingänge gelegt, und siehe da, es funktioniert!

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.