Forum: Mikrocontroller und Digitale Elektronik Einfacher Check ob mehrere Tasten gedrückt sind


von Martin Witt (Gast)


Lesenswert?

Hallo zusammen,

ich möchte abfragen ob mehrere Tasten gleichzeitig gedrücktt sind, wenn
ja, dann soll eben nix passieren ansonsten wie gehabt.

Möchte auch noch einen Interupt auslösen, wenn eine taste gedrückt
wird. Habe dazu die Signale über Dioden entkoppelt, müsste funzen
oder?

Grüße

Martin

von Markus_8051 (Gast)


Lesenswert?

Ja, sollte!

von Martin Witt (Gast)


Lesenswert?

Danke für die Antwiort,


aber hier nochmal zu meiner oberen Frage:

Wie kann ich abfragen ob mehrere Tasten gedrückt wurden?

Als Beispiel: 5 Taster hängen an einem Port. Wenn mehr als eine
gedrückt wurde soll nix weiter passieren, nur wenn eine gedrückt wurde,
dann soll entsprechend was passieren.

Grüße

Martin

von Wolle (Gast)


Lesenswert?

5 Tatzen an einem Port ?
Was ist das.........
Tatzenparallelschaltung ?
Sind dann alle gleichberechtigt und nicht einzeln bestimmbar.
Lösung :
Tatzenmatrix mit mehereren Ports oder Abfrage der Tatzenauswirkung(en)

von Andi (Gast)


Lesenswert?

Der meint doch an 5 Pins eines 8it-Ports 5 Tasten!
Müßtest statt einer Bit-Prüfung eine Werte-Prüfung in einem Register
oder einer Variablen machen.
Weiß ja nicht mit was du progst.
Angenommen, Du hast die Tasten/Taster an PortB an PB0 bis PB4.
Anstatt die Pins 0 bis 4 zu prüfen ob Pin-wert = 0 eine Werteprüfung in
der Form:
Wenn keine Taste gedrückt wird, also Pin 0 bis 4 high = 11111 also 31
was man nicht berücksichtigen muß.
Taste an Pin 0 gedrückt, also Pin 0 = low = 11110 = 30 als
Wertprüfung.
Taste an Pin 1 gedrückt, also Pin 1 = low = 11101 = 29 als
Wertprüfung.
Taste an Pin 2 gedrückt, also Pin 2 = low = 11011 = 27 als
Wertprüfung.
Taste an Pin 3 gedrückt, also Pin 3 = low = 10111 = 23 als
Wertprüfung.
Taste an Pin 4 gedrückt, also Pin 4 = low = 01111 = 15 als
Wertprüfung.
Alle anderen möglichen Werte werden nicht abgefragt und dann bei mehr
als einer Taste auch nicht berücksichtigt.
Sollte man evtl. mit einer Verzögerung ala längeren Entprellung von
50mS oder so machen wenn möglich.

Gruß
Andi

von Martin Witt (Gast)


Lesenswert?

Jup, hat mich viel gehelft(Da werden Sie geholfen)


Many THX

grüße Martin

von Markus_8051 (Gast)


Lesenswert?

Hallo Martin,

eigentlich wollte ich mit meiner Antwort oben nur andeuten, daß die
Usergemeinde, die sich hier im Forum rumtreibt, noch ein paar weiter
Informationen benötigt, um Dir sinnvoll helfen zu können. Zumindest in
Bezug auf die Anordnung der Tasten kam dann ja auch noch ein Hinweis
von Dir, aus dem Andi ableiten konnte, wie Du die Tasten am
Mikrocontroller angeschlossen hast. Er wäre noch interessant zu wissen,
welchen µC Du einsetzt.

Bei der Abfrage mittels Interrupt solltest Du unbedingt darauf achten,
das der IRQ-Pin flankengesteuert und pegelgesteuert konfiguriert ist.
Sonst kommt der µC aus dem Interrupt nicht raus, solange irgendein DAU
eine Taste gedrückt hält. Bei den meisten µC kann man dieses
Triggerverhalten umprogrammieren.

Gruß,
Markus_8051

von Martin Witt (Gast)


Lesenswert?

hallo Markus,

Bitte schiebe das auf meine Unerfahrenheit beim posten solcher Sachen!
Für mich ist das immer Schwierig mich in die Situation eines Lesers
einzufinden. Für alle, die diesen Beitrag lesen, schildere ich hier die
gesamte (mittlerweile erfolgreiche) Konfiguration.

Ich benutzte einen AT90S2313, mit 4 Tastern an PortB.
Die Taster sind pulledUp mit 10K Widerständen und schliessen gegen
Masse. Alle 4 Taster gehen mit Dioden entkoppelt auf Int0 vom µC.
Der µC ist so konfiguriert daß der Interrupt nur bei fallender
Taktflanke ausgelöst wird. Durch die fallende Taktflanke muß ich auch
nicht mehr feststellen ob mehr als eine Taste gedrückt ist, weil kein
DAU in der Lage sein dürfte bei 4MHz Takt gleichzeitig 2 Tasten zu
drücken (und falls doch dürfte es ihm Schwerfallen zu wissen welche er
zuerst gedrückt hat ;-)))))



Sod, hoffe ich habe net wieder was vergessen ;-)))))


Grüße Martin

von Michael (Gast)


Lesenswert?

Vielleicht versuchst Du es einfach einmal mit einer Tastaturentprellung,
die nur eine aktive Taste zuläßt.

http://www.mikrocontroller.net/forum/read-4-16594.html#16594

von Markus_8051 (Gast)


Lesenswert?

Hey Martin,

vorbildliche Beschreibung Deines Hardwareaufbaus, weiter so, damit
können die User hier doch was anfangen.

Prima, daß Du an die Konfiguration des IRQ schon selbst gedacht hast,
dann sollte jetzt ja alles laufen.

Gruß,

Markus_8051

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.