Hi,
Ich hab ein Problem mit meiner Taster-Mulitplexer-schaltung.
Für die Taster verwende ich Miniaturtaster, die Multiplexer/Encoder sind
74HC148. Da dieser IC LOW-Active arbeitet habe ich Probleme einen
Pull-Up widerstand einzuplanen, würde so wie ich mir das überlege nur
mir einem einzigen Taster funktionieren :/ bei mehreren ist der
gedrückte Taster leider nicht mehr zuordbar.
Über einen Tipp würd ich mich freuen! :)
danke
lg Markus
a) Deine Schaltung ist keine Multiplexer-Schaltunv.
b) Deine Verschaltung der 2x3 Ausgänge ist ... unorthodox.
c) Prioritätsenkoder können nicht 2 Ereignisse, also gkeichzeitig
gedrückte Tasten, diskriminieren.
d) 6 Eingänge um 11 Taster zu erfassen sind vollkommen ausreichend ganz
ohne Zusatzbauteile, sogar wenn man mehrere gkeichzeitig gedrückt
erkennen wil.
Die Schaltung wird einem allerdings so auch im Datenblatt vorgestellt
http://noel.feld.cvut.cz/hw/st/1903.pdf
in diesem Anwendungsfall brauche ich auch nicht erfassen ob 2 Tasten
gedrückt werden, das ist mir schon klar ;)
zu d) erklär mir dazu bitte mehr :) allerdings kann ich nur in Notfall
weiter 2 Bit für die Taster verwenden.
11 Tasten kannst Du als 3*4 Matrix (7 IO-Pins) einlesen, dann kannst Du
2 Tasten gleichzeitig erkennen.
Oder ganz einfach über 2 Schieberegister 74HC165 kaskadiert an 3 IO-Pins
des MC. Aber die Pullups je Taste nicht vergessen!
Danke für die Antwort! Die Lösung mit den 74HC165 hört sich sehr
interessant an :)
dann brauche ich bei 2 stück auch 5 Leitungen?! (oder hab ich mich
vertan?)
1x CLK(1x für beide IC)
2x CLK Inhibit (1x je IC)
2x Q(Output, wobei ich den doch auch zusammenlegen könnte, nicht? also
wenn ich die beiden seriell abfrage)
danke nochmal!
Markus schrieb:> 2x Q(Output, wobei ich den doch auch zusammenlegen könnte, nicht? also> wenn ich die beiden seriell abfrage)
Wenn du Q7 des ersten mit DS des zweiten '165er verbindest, reicht das Q
des zweiten, du schiebst dann bis zu 16 Takte.
Markus schrieb:> 2x CLK Inhibit (1x je IC)
Und Clk Inhibit brauchst du eigentlich gar nicht. Wenn du es
anschliesst, an beide gemeinsam.
Markus schrieb:> hab die neue Schaltung angehängt, stimmt das so?
Wenn dir das nicht zu unübersichtlich ist mit den mal belegten und mal
nicht belegten parallelen Eingängen, stimmt das so schon. Allerdings
musst du bei der (positiven) Logik unbedingt noch Pulldowns an den
Tastern vorsehen, ein unbelegter CMOS Eingang schwabbert undefiniert
herum.
Warum machst du es dir so kompliziert und legst die Eingänge nicht
einfach der Reihe nach auf die Eingänge? Mir wäre das jedenfalls zu
blöd, immer die unbenutzten Eingänge in meiner Tasteroutine
auszumaskieren.
Danke Matthias! :)
Hab mir das chaos hier eingebaut, um es nicht auf das Board zu
verlegen^^
Die Taster sind rund um die 165er platziert und so hab ich immer den Pin
und den Taster die am nähesten zueinander stehen verbunden :)
nochmals danke und liebe Grüße,
Markus
Ach, denke doch auch bitte daran, an jedes Schieberegister noch einen
100nF Abblockkondensator zwischen GND und Vcc zu machen. Das erspart dir
später eine mühselige Suche nach unerklärlichen Fehlimpulsen.
Noch ein Programmiertipp: Beim ersten Einschalten könnte in den internen
Flipflops ein undefinierter Zustand sein. Also bevor du wirklich Tasten
ausliest, schiebst du einmal eine volle Runde und ignorierst das
Ergebnis.
Dankeschön! den Kondensator hab ich noch direkt hinzugeschalten!
Allerdings habe ich nun doch ein Problem mit den Pulldown-Widerständen
:O
Wie ich glaube, würde meine Schaltung so nur bei einem einzigen Taster
allein funktionieren, nicht aber bei mehreren :/
Ich hab dazu mal ein Bild angehängt :)
Ich glaube, dass so wenn ein Taster gedrückt wird, der IC alle Taster
als gedrückt erkennt da ja alle Pulldowns über GND miteinander verbunden
sind, oder liege ich komplett falsch?^^
nochmals danke ;)
lg Markus
Markus schrieb:> da ja alle Pulldowns über GND miteinander verbunden> sind, oder liege ich komplett falsch?
Nein, stimmt schon, alle Pulldowns sind einseitig an GND, deswegen ja
Pulldown. Aber auf der anderen Seite ja nicht, dort liegt jeder
Widerstand nur am Taster und am SR Eingang. Wenn du einen Taster
drückst, wird also dieser SR Eingang high werden, aber da GND weiterhin
GND bleibt, bleiben die anderen ungedrückten Taster schön auf low. Du
hast es etwas ungeschickt gezeichnet, weil der Bus da quer durch geht,
aber die Schaltung ist schon richtig.