mikrocontroller.net

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


Autor: Martin Witt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sollte!

Autor: Martin Witt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Witt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup, hat mich viel gehelft(Da werden Sie geholfen)


Many THX

grüße Martin

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Witt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.