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
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
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
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
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
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
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
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
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
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