aus 16 mach 4 und aus 4 mach 16

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

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

Re: aus 16 mach 4 und aus 4 mach 16
Stefan F. M?ller schrieb:

Quoted text here. Click to load it

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


Re: aus 16 mach 4 und aus 4 mach 16


Stefan F. M?ller schrieb:
Quoted text here. Click to load it

Hallo,

Du kF6%nntest einen PrioritE4%tsencoder wie den 74LS148 nehmen, der ist m=
it20%
einem zusE4%tzlichen  LS00 auf 16 EingE4%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 AusgE4%nge und einen Eingang sowie einen 16 zu 120%
Multiplexer um alle 16 Sensoren nacheinander abzufragen.
Der PrioritE4%tsencoder kann Dir nur den aktiven Eingang mit der hF6%chst=
en20%
PrioritE4%t nennen.

Bye


Re: aus 16 mach 4 und aus 4 mach 16
Hallo Stefan!

Quoted text here. Click to load it

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?'
We've slightly trimmed the long signature. Click to see the full one.
Re: aus 16 mach 4 und aus 4 mach 16
     snipped-for-privacy@web.de (Stefan F. M?ller) writes:
Quoted text here. Click to load it

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

Re: aus 16 mach 4 und aus 4 mach 16
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

Re: aus 16 mach 4 und aus 4 mach 16
Quoted text here. Click to load it

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



Re: aus 16 mach 4 und aus 4 mach 16
Stefan F. M?ller schrieb:

Quoted text here. Click to load it

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


Re: aus 16 mach 4 und aus 4 mach 16
Quoted text here. Click to load it

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

Quoted text here. Click to load it

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 /
We've slightly trimmed the long signature. Click to see the full one.
Re: aus 16 mach 4 und aus 4 mach 16
snipped-for-privacy@web.de (Stefan F. M?ller) wrote in message

Quoted text here. Click to load it

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

Re: aus 16 mach 4 und aus 4 mach 16
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

Re: aus 16 mach 4 und aus 4 mach 16
Stefan F. M?ller schrieb:

Quoted text here. Click to load it

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


Re: aus 16 mach 4 und aus 4 mach 16
Stefan F. M?ller schrieb:

Quoted text here. Click to load it

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


Re: aus 16 mach 4 und aus 4 mach 16
snipped-for-privacy@web.de (Stefan F. M?ller) wrote in message
Quoted text here. Click to load it

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

Re: aus 16 mach 4 und aus 4 mach 16

Stefan F. M?ller schrieb:
Quoted text here. Click to load it

Hallo,

nein, funktioniert nicht.

Du brauchst zwei 74251 die zu einem 16 zu 1 Multiplexer20%
zusammengeschaltet werden. FFC%r alle Select EingE4%nge sind 4 Portleitun=
gen20%
notwendig, fFC%r den einen Ausgang der Zusammenschaltung noch eine20%
Portleitung, insgesamt 5 Portleitungen.
Es mFC%ssen Multiplexer mit Tristate Ausgang sein damit man zwei StFC%ck =
820%
zu 1 zu einem 16 zu 1 zusammenschalten kann.
Du kannst zwar die CS-Signale noch benutzen, aber 74251 brauchst Du20%
trotzdem, dann reichen zwar 3 + 1 Portleitungen und zwei CS-Signale,20%
aber Tristate ist auch notwendig.

Bye


Re: aus 16 mach 4 und aus 4 mach 16


Quoted text here. Click to load it

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 /
We've slightly trimmed the long signature. Click to see the full one.
Re: aus 16 mach 4 und aus 4 mach 16


MaWin schrieb:
Quoted text here. Click to load it

Hallo,

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

Bye


Re: aus 16 mach 4 und aus 4 mach 16
Quoted text here. Click to load it

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

--
MFG Gernot

Re: aus 16 mach 4 und aus 4 mach 16
Quoted text here. Click to load it
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 /
We've slightly trimmed the long signature. Click to see the full one.
Re: aus 16 mach 4 und aus 4 mach 16
Quoted text here. Click to load it

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

Site Timeline