www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Entprellung bei Tastermatrix über AD-Wandler


Autor: Max (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

da ich an meinem Atmega48 für ein zukünftiges Projekt nicht mehr genug 
freie Pins für eine Tastermatrix habe, verwende ich dazu einen 
AD_Wandler. Dort werden die Taster über eine Wiederstandsmatrix 
eingelesen. Anhand der Spannung kann ich erkennen, welche Taste gedrückt 
wurde. Das mit dem einlesen der Spannungen klappt auch ohne Probleme.

Nun kam mir die Frage, wie kann ich diese Taster entprellen? Im Prinzip 
doch wie andetre Taster auch. Nach dem drücken muss gewartet werden, bis 
der Taster wieder losgelassen wird. Also in meinem Fall, bis am 
AD-Wandler keine Spannung mehr anliegt. Danach muss eine gewisse Zeit 
vergehen, bis ein erneutes einlesen des Tasters erlaubt wird.

Das habe ich nun so verwirklicht:

1. Taste wird gedrückt
2. Aktion ausgeführt
3. Erneutes Tasten einlesen verweigert (In der Software taste = 1)
4. Warten bis Taste losgelassen wurde (AD_Wert == 0)
5. Prellzeit einfügen (Variable t4 wird unter den Bedingungen 3 und 4 in
   der Hauptschleife hochgezählt)
6. Erreicht t4 den Wert 5 wird das Tasten einlesen wieder freigegeben

Nun hab ich aber irgendwie das Problem, dass anscheinend nicht jeder 
Tastendruck erkannt wird. Manchmal funktioniert es 10mal hintereinander, 
dann aber einmal nicht. Hab ich was Grundlegendes falsch gemacht? Anbei 
mal  ein Auszug aus dem Code.

Gruß

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der Peter hatte hier sowas mal in der Codesammlung.
Schau mal da nach.

Gruß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich hab dann einfach meine bewährte Entprellroutine auf 16 Bit (da 
12 Tasten) aufgepeppt:

Beitrag "Tastenmatrix auslesen über nur 2 Leitungen"


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.