PIC + Tastermatrix

Gast #562990
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?
Gast #562995
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).
Gast #563001
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.
Gast #564676
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!

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.