-
-
Erfahrener Benutzer
Begeisterter Techniker
Hi,
also was das Thema Tastenentprellen angeht scheiden sich die Geister. Ich habe schon diverse Varianten ausprobiert eine "Tastatur" abzufragen:
1) Analog ADC: du verknüpfst über ein R2R Netzwerk die Taster untereinander, so dass bei jedem Druck eine spezifische Spannung am ADC anliegt. Um das ganze frei von äußeren Störungen zu bekommen habe ich tiefpassgefiltert. Dies bewirkte gleich eine Entprellung.
Vorteil: mehrere Tasten über einen Draht am AVR beschaltet
Nachteil: du musst dauernd den ADC abfragen und dann die richtige Spannung erraten lassen um einen Taster in einen definierten Bereich als "gedrückt" zu maskieren. Außerdem muss man je nach konfiguration recht lange drücken.
Anstelle des Tiefpasses kann man auch einfach den ADC in 1/50Hz abfragen (sollte Netzbrummen wegfiltern), das habe ich aber nie hinbekommen dass das schön sauber wird.
2) Direkte Abfrage über I/O Ports: jede Taste bekommt einen Draht an den AVR. Natürlich sollte man Pullup/Pulldown Widerstände nicht vergessen (ggf interne benutzen?). Über einen Timer oder einen verknüpften Interrupt (dazu braucht man mindestens einen Draht mehr) kann man dann den Status der Pins abfragen. Das Entprellen kann man softwareseitig lösen wie bei den obigen Links beschrieben. Ich persönlich halte davon aber auch nicht viel: viel rumgerechne rumgeschiebe und verprasselte Prozessorzeit. Großer Vorteil ist aber, dass es eben die billigste Variante ist Tasten zu betreiben. Weitere Variante ist alle Tasten wieder über einen Tiefpass zu entprellen; aber das musst du dann auch für jede Taste tun...
3) Direkt interrupt: du kannst auch wenn du zB nur 3 Tasten hast und eh noch Ports frei hast diese dann direkt an die Interrupt eingänge hängen. Entprellen könntest du softwareseitig oder auch mit dem Tiefpass.
4) I/O-Pins und 1x Interrupt: jede Taste bekommt einen IO-Pin (oder man assoziiert mehrere IO-Pins mit einer Taste (dadurch lassen sich wiederum Drähte sparen)). Über ein paar dioden kannst du dann einen Interrupt Pin durchschalten, wenn irgendeine Taste gedrückt wurde, in der entsprechenden ISR dann welche tasten gedrückt wurden (Mehrfachdrücken ist über eine kleine Bitmaske ebenfalls möglich). Entprellt wird das ganze über einen 22pF Kondensator, den du über den Taster legst. Auch wenn da jetzt die Leute sagen da gibts dann Spitzenströme durchs Prellen etc... die sind aber niemals so hoch dass dir das deine Taster zerhaut oder sonstwas. Ich habe diese Variante schon ein paar mal gut umgesetzt und noch nie probleme bekommen. Vorteil: Rechenpower kannst du dir für was anderes aufheben, wenig Code für die Abfrage, recht sicher. Nachteil: Beschaltungsaufwand (zusätzliche Kondensatoren + Dioden).
Hoffe einen kleinen Einblick gegeben zu haben, viele Grüße,
Simon
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen