aus 16 mach 4 und aus 4 mach 16

S

Stefan F. M?ller

Guest
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
 
Stefan F. M?ller schrieb:

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).
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:
http://focus.ti.com/lit/ug/scyd013/scyd013.pdf

--
Cheers
Stefan
 
Stefan F. M?ller schrieb:
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).
Hallo,

Du könntest einen Prioritätsencoder wie den 74LS148 nehmen, der ist mit
einem zusätzlichen LS00 auf 16 Eingänge 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änge und einen Eingang sowie einen 16 zu 1
Multiplexer um alle 16 Sensoren nacheinander abzufragen.
Der Prioritätsencoder kann Dir nur den aktiven Eingang mit der höchsten
Priorität nennen.

Bye
 
Hallo Stefan!

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.
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"
 
In article <3f3da1be.0402180731.2cf8b96e@posting.google.com>,
StefanMueller65535@web.de (Stefan F. M?ller) writes:
Hallo!

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
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
 
StefanMueller65535@web.de (Stefan F. M?ller) wrote in message news:<3f3da1be.0402180731.2cf8b96e@posting.google.com>...

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.
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
 
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
 
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).
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
 
Stefan F. M?ller schrieb:

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).
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
 
Stefan F. M?ller <StefanMueller65535@web.de> schrieb im Beitrag <3f3da1be.0402190659.43f38206@posting.google.com>...
Sobald irgendeiner der 16 Sensoren eine Meldung gibt, soll der
INT7 "gefeuert" werden.
Man nennt das "ODER-Schaltung" (z.B. wired or)

Mein Programm soll dann abfragen, welche(r) der Sensoren reagiert hat.
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.
 
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
 
Stefan F. M?ller schrieb:

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 :)
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
 
Stefan F. M?ller schrieb:

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 :)
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
 
StefanMueller65535@web.de (Stefan F. M?ller) wrote in message news:<3f3da1be.0402200358.637affad@posting.google.com>...
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
Hallo Stefan,
wieso mischt Du die Logikreihen?
Nimmdoch den 4051 als Multiplexer.
Gruss
Harald
 
Stefan F. M?ller schrieb:
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 :)
Hallo,

nein, funktioniert nicht.

Du brauchst zwei 74251 die zu einem 16 zu 1 Multiplexer
zusammengeschaltet werden. Für alle Select Eingänge sind 4 Portleitungen
notwendig, für den einen Ausgang der Zusammenschaltung noch eine
Portleitung, insgesamt 5 Portleitungen.
Es müssen Multiplexer mit Tristate Ausgang sein damit man zwei Stück 8
zu 1 zu einem 16 zu 1 zusammenschalten kann.
Du kannst zwar die CS-Signale noch benutzen, aber 74251 brauchst Du
trotzdem, dann reichen zwar 3 + 1 Portleitungen und zwei CS-Signale,
aber Tristate ist auch notwendig.

Bye
 
Uwe Hercksen <hercksen@mew.uni-erlangen.de> schrieb im Beitrag <403620E9.6070700@mew.uni-erlangen.de>...


nein, funktioniert nicht.
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: 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.
 
MaWin schrieb:
Warum 4 Adressleitungen und 1 Eingang
und nicht 3 Adressleitungen und 2 Eingaenge ?
Was ist an der zweiten Version schlechter ?
Hallo,

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

Bye
 
In article <4039B5FB.3090100@mew.uni-erlangen.de>,
Uwe Hercksen <hercksen@mew.uni-erlangen.de> writes:
MaWin schrieb:

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

Hallo,

schlechter nicht, aber in jedem Fall insgesamt 5. Mit nur 4 geht es halt
nicht.
Mit 2 4021 Schieberegistern geht es mit 3. Die Software wird eher einfacher
als komplizierter

--
MFG Gernot
 
Gernot Fink <G.Fink@gmx.net> schrieb im Beitrag <c1ddsl$1g6q7m$1@ID-4207.news.uni-berlin.de>...
Mit 2 4021 Schieberegistern geht es mit 3. Die Software wird eher einfacher
als komplizierter

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.
 
In article <01c3fa45$de94ffa0$0100007f@amdk6-300>,
"MaWin" <me@privacy.net> writes:
Gernot Fink <G.Fink@gmx.net> schrieb im Beitrag <c1ddsl$1g6q7m$1@ID-4207.news.uni-berlin.de>...
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.
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
 

Welcome to EDABoard.com

Sponsor

Back
Top