Forum: Mikrocontroller und Digitale Elektronik 74HC4067 Nachfolgeschaltung?!


von Darkleon (Gast)


Lesenswert?

Hallo Profis ;)

Hab folgendes Anliegen.
Ich verwende einen PIC18F4550 und will damit mehrere Multiplexer 
schalten. Angefreundet hab ich mich mit dem Typ 74HC4067. Dieser besitzt 
16 Anschlussmöglichkeiten und kann sowohl als Digital Input/Output als 
auch als analoger Input verwendet werden. Die Ansteuerung mit den 
Steuerpins ist mir soweit klar und auch die Benutzung als Input oder 
Output...

Leider hab ich momentan noch keinen hier zum testen und aus dem 
Datenblatt ist mir mein Problem auch nicht gelöst worden.

Prinzipiell will ich 3 solche Multiplexer verwenden, 1 als analog Input 
und die anderen 2 als digital Output.
Jetzt dachte ich mir folgendes.
Die 4 Steuerleitungen schalte ich parallel mit einem PNP Transistor. Der 
analog Input Pin wird an AN0 angeschlossen und mittels Enable von diesem 
Multiplexer kann ich ja den einschalten und dann abfragen. Wenn die 
beiden anderen Multiplexer aufgrund der Parallelschaltung auch 
eingestellt werden, ist mir das ja egal, denn ich kann ja die Enable auf 
high schalten und den digital Pin am Controller einfach nicht abfragen.
Wenn ich digital Schalten will, dann stell ich auch wieder die 
Steuerleitungen so wie ich sie brauche, gib mit dem MikroC den Pegel an 
und sag dann mit der Enable Leitung welcher Multiplexer schalten soll.
Das sollte doch so funktionieren, oder?

Das eigentliche Problem ist folgendes. Wenn ich z.B.: den Pin Y0 am 
1.digital Output schalten will, dann setz ich die Steuerbits, geb den 
Pegel an und schalte die Enableleitung(aktiv=low).Jetzt will ich am 2. 
digital Output Y1 schalten, dazu stell ich wieder die Steuerbits, Pegel 
vorgeben und die Enable leitung setzen (Zuvor die vom ersten Multiplexer 
auf high setzen, damit der mir nicht auch aufgrund der parallelschaltung 
den gleichen pin schaltet)

Wenn ich das am 2.digital Output mache, dann fällt mir ja Y0 vom ersten 
ab,oder? diese bräuchte ich aber solange, bis ich wieder einen Impuls 
dahin gebe, damit die Leitung low wird (So nach dem Prinzip eines 
Stromstoßrelais...Impuls geben->Ausgang high, nächster Impuls->Ausgang 
low), nur will ich das eben nicht mit solchen Relais lösen, da ab und zu 
auch im kHz Bereich geschaltet werden soll).

Hoffe ich versteht mich und ihr könnt mir helfen. Ich weiß, sehr viel 
Text...Falls was unklar ist, kann ich auch mal versuchen einen 
Schaltplan zu erstellen:)

So long
Darkleon

von HaJo 42 (Gast)


Lesenswert?

Glaubst du wirklich, dass wir hier eine Fortsetzung von Krieg und 
Frieden lesen wollen?

von Darkleon (Gast)


Lesenswert?

Hi!
Nein ich hoffe ich schreck nicht alle mit so viel Text ab und jemand ist 
doch gewillt mir zu helfen. Aber auch mit einem Schaltbild ist etwas 
Text erforderlich, damit klar ist, was ich wann und wie schalten will :(

Hoffe auf Gnade;)

Darkleon

von Michael U. (amiga)


Lesenswert?

Hallo,

Deinen Text versteht ja doch keiner. Muß man aber auch nicht.
Ein Blick in die Wahrheitstavelle im Datenblatt des 4067 verrät, daß für 
/E = H gilt: keine Verbindung zwischen Z und den Ein-/Ausgängen.

Gruß aus Berlin
Michael

von Darkleon (Gast)


Lesenswert?

Hi Michael.

Danke für deine Antwort. Das ist mir soweit auch klar, nur wenn ich den 
4067 als Output verwende, dann bleibt der eingestellte Kanal nur so 
lange high, solange ich ihn direkt ansteuere. Nur möcht ich in eben mit 
nur einem Impuls auf high setzen und mit dem nächsten wieder auf low, 
damit ich andere Ausgänge schalten kann.

Werde dafür eben eine Schaltung nach dem Ausgangspin brauchen, nur ist 
die Frage wie man das anstellt. So wie das Prinzip des Stromstoßrelais.

Hoffe mich versteht man jetzt besser;)

Mfg Darkleon

von Michael U. (amiga)


Lesenswert?

Hallo,

ich verstehe prinzipiell Dein Problem schon, geht eben so nicht.
Anderes IC benutzen, mit Eingangs- oder Ausgangs-Latch.

Dürfte sich ja ohnehin dort nur um digitale Zustände handeln, da muß es 
ja kein Analog-MUX sein.

Gruß aus Berlin
Michael

von Peter D. (peda)


Lesenswert?

Darkleon wrote:
> Danke für deine Antwort. Das ist mir soweit auch klar, nur wenn ich den
> 4067 als Output verwende, dann bleibt der eingestellte Kanal nur so
> lange high, solange ich ihn direkt ansteuere.


Genau deshalb nimmt man eben keine Multiplexer, sondern Schieberegister 
(z.B. 74HC595).
Und als Eingänge dann praktisher Weise auch (z.B. 74HC165).

Mit 5 IO-Pins sind dann z.B. 256 Ausgänge und 256 Eingänge kein Problem.


http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister


Peter

von Darkleon (Gast)


Lesenswert?

Hi!
Danke für die Antworten.

Also für die Ausgänge kann ich jetzt den 74HC595 verwenden. Hab mir das 
Tutorial durchgelesen und hab das so verstanden.

Wenn ich jetzt das Bitmuster "00110100" an den Ic sende, das dann 
übernehmen lasse, dann stellt mir dieser die Ausgänge. Wenn ich jetzt 
aber nur einen einzigen Ausgang ändern will, dann muss ich ja das 
komplette Bitmuster mit meiner Änderung senden, dami alle anderen 
Ausgänge gleich bleiben, oder?

Und wenn ich mehrere kaskadiere, dann muss ich ja von jedem IC den 
aktuellen Bitstatus wissen, falls ich nur bei einem eine Änderung machen 
will und alle anderen gleich bleiben sollen. (Ist schon etwas 
aufwändig...).

Für die Einganserweiterung werde ich einfachheitshalber doch multiplexer 
verdwenden, da ich ja jeden Eingang direkt ansprechen kann, ohne dass 
ich ein ganzes Bitmuster einlesen muss, damit ich weiß welchen Pegel ein 
einziger Eingang hat.

Hab ich das jetzt so richtig verstanden?

Mfg Darkleon

von Peter D. (peda)


Lesenswert?

Darkleon wrote:
> Und wenn ich mehrere kaskadiere, dann muss ich ja von jedem IC den
> aktuellen Bitstatus wissen, falls ich nur bei einem eine Änderung machen
> will und alle anderen gleich bleiben sollen. (Ist schon etwas
> aufwändig...).

Ist nicht aufwendig.
Man legt sich quasi virtuelle Ports im SRAM an und ändert dort das 
entsprechende Bit.
Und diesen SRAM gibt man dann zyklisch in die 74HC595 aus, z.B. im 
Timereinterrupt.


> Für die Einganserweiterung werde ich einfachheitshalber doch multiplexer
> verdwenden, da ich ja jeden Eingang direkt ansprechen kann, ohne dass
> ich ein ganzes Bitmuster einlesen muss, damit ich weiß welchen Pegel ein
> einziger Eingang hat.

Ist aber aufwendiger.
Das SPI arbeitet bidirektional, d.h. wenn man 4 Bytes rausschiebt, kann 
man gleichzeitg 4 Bytes einlesen. Und die legt man dann wieder in 
virtuellen Eingangsports im SRAM ab.


Peter

von Darkleon (Gast)


Lesenswert?

Hi Peter!

Danke für deine schnelle Antwort. Das klingt natürlich schon wieder 
interessanter. Werd mir die Ics mal holen und dann kommen sicher noch 
Fragen ;)

Nochmals Danke für deine Antwort. Hatte mir ja für die Multiplexer ja 
auch so Ansteuerschemas geschrieben..Mla schauen ob das mit den 
Registern und SPI einfacher verläuft.

Mfg Darkleon

von Darkleon (Gast)


Lesenswert?

Hi!

Noch so eine Frage :) Wenn ich mehrere Schieberegister kaskadiere, kann 
ich zusätzlich zu diesen Ics auch einen EEPROM mit SPI Ansteuerung auf 
den Bus hängen? Dieser hat ja einen "Chip select Pin". Diesen haben aber 
die Schieberegister nicht, oder?! Hab da nichts dazu gefunden. Sonst 
könnte ich einfach das gewünschte Schieberegister oder den EEPROM 
selektieren und dann die gefordeten Daten rüberschaufeln. So würde auch 
das schieben durch die Register hinfällig werden..

Kann man das irgendwie lösen? Ich meine Schieberegister und EEPROM am 
gleichen bus?!

Hoffe auf Antwort:)

Danke schon im Voraus.

MfG Darkleon

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.