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.
:
Bearbeitet durch User
Danke Matthias! hab die neue Schaltung angehängt, stimmt das so? Danke im voraus!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.