Forum: Analoge Elektronik und Schaltungstechnik 2to1-Multiplexer mit kleinem Unterschied


von Daniel (Gast)


Lesenswert?

Nabend zusammen,

ich hoffe mir kann jemand helfen. Ich brauche für ne Schaltung ne 
einfache Verknüpfung (A^C)v(B^D) und das mehrmals, quasi nen 
2to1-Multiplexer.

Ich suche eigentlich den hier: 
http://focus.ti.com/lit/ds/symlink/sn74lv157a.pdf

Das ist genau das was ich brauche, wenn die zwei ANDs und den Inverter 
ganz unten nicht da wären.

Gibt es sowas als IC? Ich könnte das zwar auch auch mit zwei ICs 
aufbauen (74x08 und 74x32), jedoch möchte ich das möglichst klein 
aufbauen. Von daher wäre es von Vorteil, wenn das alles in einem IC 
wäre.

MfG
Daniel

von Peter R. (gelb)


Lesenswert?

3 NAND-Gatter aus einem 74x00 richtig verschaltet.

Grüße, Peter

von hp-freund (Gast)


Lesenswert?

oder als einzelne Mux:
NC7SB3257

klein genug sind sie auch...

von (prx) A. K. (prx)


Lesenswert?

Gab es in der Anfangsphase der TTLs mal als AND/OR und AND/OR/INV Gates, 
Nummernkreis SN7450-55, sind aber wohl ausgestorben.

von Daniel (Gast)


Lesenswert?

Peter Roth schrieb:
> 3 NAND-Gatter aus einem 74x00 richtig verschaltet.

Jau prima Idee, danke. Leider brauche ich das mindestens zwei mal, also 
sechs Gatter, sodass ich mit einem IC nicht hinkomme. Aber auf jeden 
Fall besser, da ich dann nur noch einen Typ IC brauche.

hp-freund schrieb:
> NC7SB3257

Das ist doch genau das Gegenteil von dem was ich will, oder? Und auch da 
sind die drei Gatter drin, die ich nicht haben will.

A. K. schrieb:
> Gab es in der Anfangsphase der TTLs mal als AND/OR und AND/OR/INV Gates,
> Nummernkreis SN7450-55, sind aber wohl ausgestorben.

Danke auch für den Tipp. Aber ich habe nichts Verfügbares in der 
Richtung gefunden.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Daniel schrieb:
> A. K. schrieb:
>> Gab es in der Anfangsphase der TTLs mal als AND/OR und AND/OR/INV Gates,
>> Nummernkreis SN7450-55, sind aber wohl ausgestorben.
>
> Danke auch für den Tipp. Aber ich habe nichts Verfügbares in der
> Richtung gefunden.

Der 74x51 geht ja schon in die richtige Richtung und ist auch noch
erhältlich, nur dass sein Ausgang invertiert ist. Kannst du nicht im
nachfolgenden Schaltungsteil etwas ändern, damit das nicht mehr stört?

Wenn du sonst überhaupt nichts findest und der Platzbedarf höchste
Priorität hat, bleibt noch ein GAL.

von Daniel (Gast)


Lesenswert?

Oh, vollkommen übersehen, dass jemand geantwortet hat.

Ich hatte falsch gesucht und deswegen nichts gefunden... Der 7451 ist in 
der Tat fast das was ich suche, jedoch leider nur fast ;)


Um mal ein wenig Licht in die Sache zu bringen: Ich möchte für nen 
Freund ne kleine Adapterplatine für eine Art Selbstbaufernbedienung (FB) 
bauen. Die Platine ist dafür da widerstandscodierte Schalter an die FB 
anzubinden.

Es geht um diese hier: http://www.frank-geier.de/
PDF: 
http://mitglied.multimania.de/looserschnecke/index/bau/BZ_Bauanleitung_2_01_OS.pdf

Schaltplan für den Sender ist auf Seite 10 im PDF.

Die Auswertung der Schalter usw. ist alles kein Problem. Das mache ich 
mit nem attiny um später noch komplexere Schalterfunktionen 
einprogrammieren zu können. Im ersten Schritt gibt es drei Signale 
(jeweils eins pro Schalter) die an die FB anzuschließen sind. Die 
Anschlüsse dafür sind im Schaltplan unten rechts.

Zunächst hatte ich überlegt PC2 und PC3 jeweils an einen Interrupt zu 
hängen und dann die Ausgänge entsprechend zu schalten.
Da ich aber nicht weiß wie schnell die FB den Schalterport abfragt, 
wollte ich auf Nummer sicher gehen und die Logik dazwischenpacken, 
sodass die Verarbeitung im tiny nicht zeitkritisch ist und ich 100% auf 
der sicheren Seite bin.

An einen GAL/(C)PLD hatte ich auch schon gedacht, jedoch müsste ich mir 
dann noch die Programmer kaufen, was das ganze teuer machen würde. Oder 
gibt es da günstige Möglichkeiten? Ich kenne mich da absolut nicht 
aus...

Vorschläge und Hinweise sind immer gerne gesehen ;)

von (prx) A. K. (prx)


Lesenswert?

"Bahnhof". Müsste wahrscheinlich erstmal die ganze Doku vor und zurück 
lesen, vestehen was das eigentlich en detail sein soll (meist fängt eine 
Doku damit an, die aber nicht), dann versuchen rauszukriegen ob du da 
mit einem eigenen Selbstbauprojekt ein Selbstbauprojekt von jemand 
anderem modifizieren willst, oder was auch immer du vorhast. Jedenfalls 
habe ich von deinem letzten Posting so ungefähr nichts verstanden.

Hoffentlich verstehen es die Anderen.

von Andreas F. (aferber)


Lesenswert?

Deine Gatterkombo hilft dir da aber auch nicht weiter, da auch die nicht 
verhindert, dass du ggf. genau in dem Moment umschaltest, wenn die FB 
die Schalter ausliest. Das ist aber auch nicht das Problem.

Wenn ich das im PDF richtig sehe, dann werden da im Normalfall einfach 
ganz normale Kippschalter angeschlossen. Logischerweise muss die 
Firmware der Fernbedienung dann eine Entprellung für die Schalter drin 
haben. Damit sollte es dann aber nichts ausmachen, wenn ein einzelnes 
"Sample" beim Umschalten nicht sauber rüberkommt. Du musst nur dafür 
sorgen, dass der jeweilige Wert mindestens solange stabil anliegt, wie 
die Entprellung abwartet (ggf. ausprobieren).

Das eigentliche Problem ist, dass du das Multiplexing von PORTB auf der 
Fernbedienung nicht durcheinanderbringen darfst. Die Schalter sind mit 
den beiden äusseren Anschlüssen an Pinne des Controllers gelegt, damit 
sie zwischen den Abfragen auf hochohmig geschaltet werden können, um den 
zentralen Bus auf PORTB nicht zu beeinflussen. Zur Abfrage wird dann 
entweder PC2 auf high und PC3 auf low oder umgekehrt gelegt, dazwischen 
werden beide auf Eingang geschaltet.

Was du also eigentlich brauchst sind Tristate-Treiber (z.B. 74HC125) an 
deinen Ausgängen, deren Enable über PC2 oder PC3 von der Fernbedienung 
bedient werden (welcher der beiden passt musst du mit dem Oszi 
rausfinden, oder ausprobieren). Ausserdem muss noch ein Pullup (oder 
Pulldown bei positivem Enable an deinen Treibern) dran, damit die 
Treiber abschalten, wenn PC2/PC3 auf hochohmig schalten.

Und wieder einmal bewahrheitet sich Punkt 3 aus der Netiquette...

Andreas

von Andreas F. (aferber)


Lesenswert?

PS: vergiss das mit den Interrupts. Vermutlich wird die Fernbedienung 
die Schalter höchstens eine handvoll Takte nach dem Schalten von PC2/PC3 
abfragen. Selbst wenn dein eigener Controller mit höherem Takt läuft, 
wirst du die Werte nicht zuverlässig rechtzeitig ausgeben können, zumal 
du ja erst noch den Port auf Ausgang schalten musst, wegen Tristate. 
Ausserdem müsstest du auch noch mitbekommen, wenn PC2/PC3 wieder auf 
hochohmig schalten, um dann sofort auch deinen Port wieder auf Eingang 
zu schalten. Letzteres ist erst recht unmöglich.

Allenfalls könntest du das Abschalten der Treiber als Interrupt 
nehmen, um dann den nächsten Wert auszugeben, da du dann etwas länger 
Zeit hast, während die Fernbedienung mit ihren anderen Schaltern, dem 
LCD etc. beschäftigt ist.

Andreas

von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

Ui, ich dachte ich bringe mit meinem Posting etwas mehr Klarheit in die 
Sache. Scheinbar extrem falsch gedacht. Von daher Entschuldigung. Bin 
wohl zu sehr im Thema drin...

Dann versuche ich mal ein wenig mehr Licht ins Dunkel zu bringen.

Im Normalfall ist an jedem "Dreierstecker" ein Umschalter dran, der vom 
mittleren Pin zu einem der äußeren Pins herstellt.

In der Anleitung steht soweit ich gelesen habe nichts überraschendes 
drin. Den Schaltplan interpretiere ich wie folgt. Zum Abfragen der 
Schalter macht der Controller folgendes:
1. Enable vom Display auf low (Display nimmt keine Befehle an)
2. PC2 auf high
3. Port B abfragen
4. PC2 auf low
5. PC3 auf high
6. Port B abfragen
7. PC3 auf low


Ein Bild sagt ja mehr als tausend Worte. Ich hoffe auch bei mir...
So wie im angehangenen Bild sehen ungefähr meine Gedanken aus. Das war 
der Grund für die eigentliche Frage, denn so müsste es ja vom Prinzip 
einwandfrei funktionieren. Fehlen natürlich noch der ein oder andere 
Schutzwiderstand.
Wenn man dann das obige durchgeht, schalten aus Sicht der Fernbedienung 
die Gatter wie ein normaler Schalter es tun würde die mittleren Pins nur 
auf high wenn PC2 oder PC3 auf high sind und der tiny die entsprechenden 
Ausgänge auf high hat.

Das mit dem Umschalten usw. sollte damit kein Problem sein. "Mein" Teil 
verhält sich gegenüber der Fernbedienung ja wie ein ganz normaler 
Schalter und den kann man ja auch zu jeder beliebigen Zeit umschalten. 
Ob beide Positionen gleichzeitig eingeschaltet sein dürfen muss man noch 
prüfen, aber das kann man ja notfalls per Software abfangen.


Andreas Ferber schrieb:
> PS: vergiss das mit den Interrupts. Vermutlich wird die Fernbedienung
> die Schalter höchstens eine handvoll Takte nach dem Schalten von PC2/PC3
> abfragen. Selbst wenn dein eigener Controller mit höherem Takt läuft,
> wirst du die Werte nicht zuverlässig rechtzeitig ausgeben können, zumal
> du ja erst noch den Port auf Ausgang schalten musst, wegen Tristate.
> Ausserdem müsstest du auch noch mitbekommen, wenn PC2/PC3 wieder auf
> hochohmig schalten, um dann sofort auch deinen Port wieder auf Eingang
> zu schalten. Letzteres ist erst recht unmöglich.

Das habe ich mir auch gedacht, dass das zeitlich wahrscheinlich nicht 
hinhauen wird. Wegen der Dioden könnte ich jedoch die Pins am Controller 
ständig auf Ausgang stehen lassen. Es müssen nur alle low sein, solange 
PC2/PC3 low sind, damit nicht in den Bus reingefuscht wird. Bei Pin 
Change auf PC2/PC3 nach high müsste ich die jeweiligen Werte auf den 
Port laden und wenns wieder nach low geht wieder alles auf low setzen. 
Mit Assembler sollte das mit 2 Takten gehen(einer um in den Interrupt zu 
springen, einer um den Port zu setzen). Jedoch habe ich kein Bock auf 
Assembler und außerdem ist mir das wie gesagt zu unsicher.


So, ich hoffe dass das jetzt ein wenig klarer ist. Funktioniert das so 
wie ich das auf dem Bild gezeichnet habe oder ist da noch ein grober 
Schnitzer drin? Ich sehe nämlich nichts was dagegen spricht. Falls noch 
was unklar ist, bescheid sagen, dann versuche ich das zu erklären.

Besten Dank für die Geduld
Daniel

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Den Schaltplan interpretiere ich wie folgt....
> 5. Port B abfragen
Das ist schlecht, denn der Port B kann als Eingang entweder nur Pullups 
haben oder hochohmig sein. Beides wäre für eine zuverlässige Abfrage 
schlecht, denn wegen der Dioden ist ja kein definierter Low-Pegel an den 
Eingangspin zu bekommen.

Ich würde das anders machen:
1. Enable vom Display auf low (Display nimmt keine Befehle an)
2. Port C auf Eingang mit Pullup
3. Port B0 auf low
4. Pins C3..0 abfragen
5. Port B1 auf low
6. Pins C3..0 abfragen
5. Port B2 auf low
6. Pins C3..0 abfragen
:
:

Dann passt allerdings deine Schaltung nicht, weil die Signalrichtung 
schon nicht stimmt  :-o

Warum nimmst du nicht einfach Analogschalter CD4066 o.ä.?

von Daniel (Gast)


Lesenswert?

Moin,

dass die Abfrage andersrum ist, habe ich auch schon gedacht. Jedoch 
wären dann die Dioden falsch rum. Die geben ja die Richtung vor, also 
kann das nicht sein.

Normalerweise müssten daher am kompletten PortB Pulldowns dran. 
Scheinbar funktioniert das zufällig richtig, da die Pins ja in der Luft 
hängen.
Das ist jedoch nicht der einzige Fehler. Der Reset ist lustigerweise 
komplett unbeschaltet... Wobei, das könnte gehen, wenn man RSTDISBL 
setzt...

Habe leider keine Platine hier. Von daher kann ich momentan nicht sagen 
wie das in echt aussieht.

Vielleicht kriege ich aber heute noch eine, dann werde ich berichten.

Gruß
Daniel

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> dass die Abfrage andersrum ist, habe ich auch schon gedacht. Jedoch
> wären dann die Dioden falsch rum.
Nein, mach mal Schritt für Schritt durch, was ich geschreiben habe. Da 
gibt es nirgends undefinierte Pegel:
Port C3..0 sind Eingänge mit Pullups.
Port B ist Ausgang.
Immer nur 1 Pin von Port B ist Low, die anderen sind High.
Eine gedrückte Taste zieht über die Diode den entsprechenden Pin C auf 
Low.

von Daniel (Gast)


Lesenswert?

Ja, ich lese schon das was ich will. So geht es natürlich und das ohne 
undefinierte Pegel...

Ich glaube ich höre jetzt erstmal auf zu spekulieren und warte bis ich 
die Platine habe...

von SF (Gast)


Lesenswert?

>Das ist jedoch nicht der einzige Fehler. Der Reset ist lustigerweise
>komplett unbeschaltet... Wobei, das könnte gehen, wenn man RSTDISBL
>setzt...
Der Rest braucht auch nicht angeschlossen sein. Die AVR haben (fast) 
alle einen internen Power-On-Reset. Es gibt auf dem Chip einen Pullup 
Widerstand, der den RESET Pin mit VCC verbindet. Deshalb ist eine 
Beschaltung des Reset unnötig. Einfach mal das Datenblatt lesen ...

Eigentlich wird der Reset Pin nur dann extern beschaltet, wenn man ISP 
machen möchte, den Chip aus irgendwelchen Gründen mit einer externen 
Schaltung Resetten möchte oder eine größere Sicherheit gegen EMV 
Störungen erreichen möchte.

Wenn du RSTDISBL setzt, dann kanst du den Chip nicht mehr per ISP 
Programmieren. Das ist in den meisten Fällen sehr schlecht.

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.