aus 16 mach 4 und aus 4 mach 16

Hallo!

ich setze den ATmega128 für ein Projekt mit viel Peripherie ein. Ich habe einen freien 8-bit-Port den ich für die CS-Logik einsetzen möchte, sowie eine Adressierungslogik für 16 Sensoren die ich abfragen möchte. Für die CS-Logik benötige ich bit 0-3 (und durch einen Demultiplexer (4-zu-16) kann ich 16 Bausteine adressieren (soweit meine Theorie :-))

Mit den anderen 4 Leitungen will ich die Sensoren-Abfrage aufbauen. Nun brauche ich eigentlich "nur" die CS-Logik umgedreht. Also ein Multiplexer, der aus 16 Einzelsignalen mir 4-binärkodierte liefert. Was für ein IC macht das? Irgendwie scheine ich den die ganze Zeit im meinem guten alten "269 IC"-Handbuch zu übersehen (wobei da natürlich mehr als 269 ICs drin stehen).

Vielen Dank!

Grüße, Stefan

Reply to
Stefan F. M?ller
Loading thread data ...

Stefan F. M?ller schrieb:

Kapiere ich das richtig, daß die Sensoren jeweils einen 4-bit Wert liefern? Also 16 verschiedene mögliche Werte pro Sensor? Kommt mir etwas grob vor für einen Sensor! Um was handelt es sich denn da?

Multiplexer gibt's wie Sand am Meer, sowohl analog als auch digital. Aber für eine Empfehlung bin ich mir zu unsicher bzgl. Deines Problems.

Für einen Angebotsüberblick (statt dem IC-Handbuch) siehe z.B. hier:

formatting link

--
Cheers
Stefan
Reply to
Stefan Heinzmann

Stefan F. M?ller schrieb:

ch

Hallo,

Du k=F6nntest einen Priorit=E4tsencoder wie den 74LS148 nehmen, der ist m= it=20 einem zus=E4tzlichen LS00 auf 16 Eing=E4nge kaskadierbar.

Aber was willst Du genau? Ist von 16 Sensoren nur einer gesetzt und Du willst wissen welcher? Sind mehrere gesetzt und Du willst wissen welche? Das kann man in einmal =

4 Bit nicht kodieren. Dann brauchst Du vier Ausg=E4nge und einen Eingang sowie einen 16 zu 1=20 Multiplexer um alle 16 Sensoren nacheinander abzufragen. Der Priorit=E4tsencoder kann Dir nur den aktiven Eingang mit der h=F6chst= en=20 Priorit=E4t nennen.

Bye

Reply to
Uwe Hercksen

Hallo Stefan!

Einen 16-zu-4 MUX kenne ich nicht, Phillips hat aber z.B. 4-zu-2 (74HC153/253) und 8-zu-3 (74HC151/251). Damit solltest du doch was tun können?!

Gruß Thorsten

--
Kunst kommt aber von 'können',
nicht von 'kennst du schon den neuesten trick?'
   Gunther in oecher.computer zum Thema "Gutes Webdesign"
Reply to
Thorsten Ostermann

Wenn von den 16 Signalen immer nur eins aktiv ist geht es so wie du sagst. Such dazu nach Prioritätsdecoder (74151) Sind aber mehrere aktiv hilft dir ein Schieberegister wie z.b 4021 weiter. Es gäbe auch noch 8zu1 als alternative.

--
MFG Gernot
Reply to
Gernot Fink

Hallo Stefan, irgendwie verstehe ich Dein Problem nicht. Wenn Du 16 Sensoren mit seriellem Ausgang an einen Eingang anschliessen willst, brauchst Du einen 16 zu 1 Multiplexer mit 4 Steuereingängen. Welcher der 16 Sensoren gerade senden darf, legst Du mit Deinen 4 Steuerbits fest. Die Signale der anderen Sensoren gehen ins Leere. Solche 16 zu 1 Multiplexer gibt es in der CMOS 4000er Serie, die genaue Nummer habe ich gerade nicht im Kopf. Diese Bausteine wirken übrigens in beide Richtungen, können also sowohl als Multiplexer wie auch als Demulti- plexer verwendet werden. Einen weiteren Baustein brauchst Du bei serillem Ausgang nicht. Haben Deine Sensoren allerdings einen 8bit Parallelausgang, wird es schwieriger. Dann brauchst Du normalerweise einen 8bit Eingang und 8 Multiplexer. Ersatzweise kannst Du natürlich nacheinander jewils die obere und untere Hälfte auslesen; dann kannst Du allerdings nur noch 8 Sensoren anschliessen. Gruss Harald

Reply to
Harald Wilhelms

Hallo!

Vielen Dank an alle die geantwortet haben!

Die 16 Sensoren haben eine Sicherheitsfunktion in dem Gerät was ich bastle. Sobald irgendeiner der 16 Sensoren eine Meldung gibt, soll der INT7 "gefeuert" werden. Mein Programm soll dann abfragen, welche(r) der Sensoren reagiert hat. Dies kann ein einzelner sein oder mehrere.

Leider hatte ich den Denkfehler, man könne 16 Sensoren mit 4 bit kodieren...geht natürlich nicht (zumindestens wenn mehrere aktiv sein könnten).

Ich denke, 74251 wird mein Lösungsansatz werden. Ich kann zwar nur 8 Sensoren mit 4 Portleitungen prüfen, aber damit kann ich auch leben, wenn ich den 2* einsetze und denen eine eindeutige Adresse zuweise (STROBE).

Grüße, Stefan

Reply to
Stefan F. M?ller

Fällt mir spontan ein: Zwei Schieberegister 4021 kaskadiert. Mit einem Takt alle 16 Sensorsignale latchen und dann einzeln rausschieben. Da brauchst du nur 3 Portleitungen (Latch, Clock, DataIn), eine kleine Schleife in der Interruptroutine und kannst die Anzahl der Sensoren auch beliebig erhöhen, falls notwendig. Die Schieberei in der Software kosten natürlich etwas Zeit (ca. 10us alles in allem), aber meist sind gerade Sicherheitsfunktionen nicht so zeitkritisch (Temperaturüberwachung, Deckel auf, o.ä.).

Georg

Reply to
Georg Meister

Stefan F. M?ller schrieb:

Aha, man kann also einen Sensor als eine 1-bit Datenquelle auffassen.

Du hast da zwei Probleme: Erstens die Erzeugung des INT7, zweitens feststellen welche Sensoren aktiv sind.

Ersteres braucht ein 16->1 oder-Gatter (ich nehme einmal positive Logik an, falls das nicht so ist mußt Du die Logik entsprechend anpassen). Das kann man mit einem GAL oder aus kleineren Gattern aufbauen, oder mit Hilfe von Wired-Or (mittels Open-Collector-Treibern; sogar einzelne Transistoren könnten da gute Dienste tun).

Zweiteres kann unter Umständen von den Signalen der CS-Logik mitbedient werden. Die Idee ist, daß Du von demjenigen Sensor, der gerade per CS ausgewählt wird, auch den momentanen Status lesen kannst. Dann wäre nur eine Datenrückleitung nötig, die Du per 16->1 Multiplexer gewinnst.

--
Cheers
Stefan
Reply to
Stefan Heinzmann

Stefan F. M?ller schrieb im Beitrag ...

Man nennt das "ODER-Schaltung" (z.B. wired or)

Man nennt das "Multiplexer" (2*74xx151), 4 Adressleitungen hast du ja schon, eine Dateneingangsleitung mehr braucht man.

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Hallo zusammen!

Wow, jede Menge hilfreiche Antworten!

Also, ich habe mich für folgenden Weg entschieden: An 2* 74151 werden jeweils 8 der Sensoren angeschlossen

3 Portleitungen gehen an die SELECT-Eingänge der 2* 74151 und die 4. Portleitung an den Ausgang von den 74151. Mittels der CS-Logik kann ich die 74151 eindeutig ansprechen und die jeweiligen 8 Sensoren abfragen. Zusätzlichen gehen die Signalleitungen der 16 Sensoren in zwei 4078 (8-fach NOR) und deren Ausgänge in ein 4001 (normals NOR) und das wiederrum zum INT7.

Sollte funktionieren :-)

Viele Grüße & Dank!

Stefan

Reply to
Stefan F. M?ller

Stefan F. M?ller schrieb:

Nö. Die Schaltlogik für den INT7 ist falsch. Du brauchst ein 4011 (NAND).

Den Rest der Schaltung habe ich nicht recht kapiert, das liegt aber wahrscheinlich an mir. Schaltpläne verstehe ich leichter ;-)

--
Cheers
Stefan
Reply to
Stefan Heinzmann

Stefan F. M?ller schrieb:

Habe ich das richtig verstanden daß Du die Ausgänge der beiden 74151 zusammen an die 4. Portleitung schalten willst? Das geht nicht. Du brauchst dafür den 74251, weil der 3-state-Ausgänge hat.

Mir ist auch noch nicht klar, was die CS-Logik eigentlich macht. Hat die was mit den Sensoren zu tun oder ist die für was anderes gedacht? Der ATmega128 hat ja einen externen Bus, da würde ich doch vermuten daß die CS-Logik von den Adreßleitungen getrieben wird und nicht von einem beliebigen Port.

Je mehr ich überlege desto dubioser kommt mir Dein Vorhaben vor. Würde es Dir was ausmachen, etwas detaillierter zu beschreiben, was Du vorhast?

Da der Atmega128 auch einen I²C-Bus hat (Atmel nennt den etwas verschämt "Byte-oriented Two-wire Serial Interface") würde die Abfrage der 16 Sensoren samt Interrupt-Erzeugung auch mittels zweier PCF8574 gehen, es sei denn Dir ist I²C zu langsam.

Irgendwie habe ich das Gefühl daß Deine Lösung auf eine unnötige Materialschlacht hinausläuft.

--
Cheers
Stefan
Reply to
Stefan Heinzmann

Hallo Stefan, wieso mischt Du die Logikreihen? Nimmdoch den 4051 als Multiplexer. Gruss Harald

Reply to
Harald Wilhelms

Stefan F. M?ller schrieb:

Hallo,

nein, funktioniert nicht.

Du brauchst zwei 74251 die zu einem 16 zu 1 Multiplexer=20 zusammengeschaltet werden. F=FCr alle Select Eing=E4nge sind 4 Portleitun= gen=20 notwendig, f=FCr den einen Ausgang der Zusammenschaltung noch eine=20 Portleitung, insgesamt 5 Portleitungen. Es m=FCssen Multiplexer mit Tristate Ausgang sein damit man zwei St=FCck =

8=20 zu 1 zu einem 16 zu 1 zusammenschalten kann. Du kannst zwar die CS-Signale noch benutzen, aber 74251 brauchst Du=20 trotzdem, dann reichen zwar 3 + 1 Portleitungen und zwei CS-Signale,=20 aber Tristate ist auch notwendig.

Bye

Reply to
Uwe Hercksen

Uwe Hercksen schrieb im Beitrag ...

Warum 4 Adressleitungen und 1 Eingang und nicht 3 Adressleitungen und 2 Eingaenge ? Was ist an der zweiten Version schlechter ?

-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage:

formatting link
de.sci.electronics FAQ:
formatting link
Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Reply to
MaWin

MaWin schrieb:

Hallo,

schlechter nicht, aber in jedem Fall insgesamt 5. Mit nur 4 geht es halt nicht.

Bye

Reply to
Uwe Hercksen

Mit 2 4021 Schieberegistern geht es mit 3. Die Software wird eher einfacher als komplizierter

--
MFG Gernot
Reply to
Gernot Fink

Gernot Fink schrieb im Beitrag ...

Jein, die Adressleitungen waren ja 'geklaut' weil sowieso schon

4 Adressleitungen rauskamen, also nur 1 Pin zusaetzlich. Dein serieller Vorschag braucht zumindest 2 zusaetzliche Leitungen.
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

...

Skrupellose leute würden auch Load(P/S) und clock klauen. Macht wider 1 Pin. Ich finde halt set clock; clr clock, mov c,pin;rlc a einfacher.

--
MFG Gernot
Reply to
Gernot Fink

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.