Hallo,
ich suche so etwas wie eine digitale Weiche (74er?) für folgendes
problem:
Ich möchte die SPI eines Atmegas abwechselt einem Display oder einem 433
Mhz Funkmoul zur Verfügung stellen. Dazu müsste das Signal OUT wie mit
einem Wechsler Relais umgeschaltet werden auf Display oder RF Modul und
das IN Signal genau umgekehrt.
Gibt es da etwas aus der 74er Reihe oder ähnliches? Möchte jetzt keine
Basis Gatter verschalten, da ich nur 1 IC verwenden möchte.
Grüße,
Christian
Als eine Art Relais-ersatz gibt es die 4066 , 4053 und ähnliche CMOS
Schalter, auch als 74HC40xx.
Man braucht dazu dann ggf. noch einen Pull-Up / Pull-down weil man ggf.
offenen Pins hat.
Yep, danke für den Tip! Gib es aber sowas überhaupt? Kommt ja wohl öfter
vor, dass Daten aufgeteilt werden müssen... ich finde nur normale Anlog
Schalter.
Ulrich H. schrieb:> Als eine Art Relais-ersatz gibt es die 4066 , 4053 und ähnliche CMOS> Schalter, auch als 74HC40xx.> Man braucht dazu dann ggf. noch einen Pull-Up / Pull-down weil man ggf.> offenen Pins hat.
Habe grad die Datenblätter offen. Sind aber alles nur Schalter, die
einen Eingang und einen Ausgang haben, aber eben kein "Wechsler -
Relais"
Christian J. schrieb:> Gibt es da etwas aus der 74er Reihe oder ähnliches? Möchte jetzt keine> Basis Gatter verschalten, da ich nur 1 IC verwenden möchte.
Obwohl die Signale pro Leitung unidirektional sind, ist die
unterschiedliche Richtung ein Problem für herkömmliche 74xx, da gibt es
nur mehrere Datenselektoren oder Datenmultiplexer in einem IC. Du
müsstest eigentlich nur SCLK aufteilen. Daher passt nur das CD4053,
obwohl der überflüssigerweise bidirektional und sogar analog ist.
Hallo Mawin,
daran habe ich auch schon gedacht aber diese Analog Schalter sind die
einzigen, die Datenrichtung keine Rolle spielt. Grundsätzlich ist es
nicht schwer aus NAND, NOT oder NOR Gattern etwas aufzubauen, wo zb ein
Eingang eines NAND als "Enable" verwendet wird und der andere die Daten
führt.
Ich werde es jetzt so machen wie vorgeschlagen, dass ich nur den Clock
aufteilen werde und die Datenleitungen immer vor die Türen der Geräte
hämmern, auch wenn diese grad nicht gemeint sind.
Grüße,
Christian
MaWin schrieb:> Obwohl die Signale pro Leitung unidirektional sind, ist die> unterschiedliche Richtung
Es gibt bei SPI nur unidirektionale Signale (CLK, MISO und MOSI gehen
jeweils in eine Richtung).
Normale, tri-state buffer tun es also.
Den Enable-Eingang von einem von zwei buffern versorgt man mit
invertierter CS_N, und schon hat man einen preisgünstigen Umschalter.
Ich frage mich allerdings, wie ein SPI slave ohne CS_N auskommen soll...
Dient ja auch zur Abgrenzung der Datenworte...
Ein '244 und ein einzelner Inverter sollte ausreichen.
Der '244 besteht aus zwei Gruppen à vier Tristate-Treiber, die mit je
einem lowaktiven /G-Signal gesteuert werden können. Diese Gruppen nenne
ich im folgenden Treibergruppen.
Im Anhang ein Bild der Innenbeschaltung.
Die Treibergruppen werden dort als 1 und 2 bezeichnet, Treibergruppe 1
besteht aus den vier Treibern 1A1-zu-1Y1 bis 1A4-zu-1Y4 und wird mit /1G
gesteuert.
Treibergruppe 2 besteht entsprechend aus den Treibern 2A1-zu-2Y1 bis
2A4-zu-2Y4 und wird mit /2G gesteuert.
Die vom µC erzeugten SPI-Signale (SPI_CLK und SPI_DATA_OUT) werden
jeweils an zwei Eingänge des '244 angeschlossen, die in den zwei
verschiedenen Treibergruppen liegen:
SPI_CLK des µC an 1A1 und 2A1
SPI_DATA_OUT des µC an 1A2 und 2A2
Die korrespondierenden Ausgänge der einen Treibergruppe werden mit dem
Display, die der anderen Treibergruppe mit dem Funkmodul verbunden.
1Y1 an SPI_CLK des Displays
1Y2 an SPI_DATA_IN des Displays
2Y1 an SPI_CLK des Funkmoduls
2Y2 an SPI_DATA_IN des Funkmoduls
Der SPI-Eingang des µCs wird parallel mit je einem Ausgang der beiden
Treibergruppen des '244 verbunden:
1Y3 und 2Y3 an SPI_DATA_IN des µC
... die korrespondierenden Eingänge werden je nach Treibergruppe mit
Display und Funkmodul verbunden:
SPI_DATA_OUT des Displays an 1A3
SPI_DATA_OUT des Funkmoduls an 2A3
Als Steuersignal defineren wir ein Signal namens "SPI_SWITCH", das der
µC auf irgendeinem I/O-Pin ausgeben muss. Das wird mit /1G und über den
einzelnen Inverter mit /2G verbunden.
Somit ist bei SPI_SWITCH = 0 das Display mit dem µC verbunden und bei
SPI_SWITCH = 1 das Funkmodul.
>Ich werde es jetzt so machen wie vorgeschlagen, dass ich nur den Clock>aufteilen werde und die Datenleitungen immer vor die Türen der Geräte>hämmern, auch wenn diese grad nicht gemeint sind.
Ich hoffe für dich, die Clock-EIngänge gehen durch das "Gehämmere" nicht
kaputt.
Man-o-man
Udo Neist schrieb:> um den> SS-Eingang der Slaves zu bedienen?
Die sollen keinen haben:
Christian J. schrieb:> Ich suche aber einen digitalen Umschalter, da es keinen> Select Pin gibt
Christian J. schrieb:> Ich möchte die SPI eines Atmegas abwechselt einem Display oder einem 433> Mhz Funkmoul zur Verfügung stellen.
Kannst du mal kurz durchgeben, um welches Display und um welches
Funkmodul es sich handelt.
Ich kann mir das nach wie vor nicht vorstellen, dass es keine CS Inputs
gibt. SPI kann ohne CS eigentlich nicht funktionieren.
Hallo,
ok, ich habe jetzt Geräte, die einen SS Eingang haben und meine
eigenwillige Konstruktion abgeändert. Dass der eine 3,3V hat und der
andere 5V wird hoffentlich nicht stören, sollen zumindest tolerant sein,
die nRF24L01 Funkmodule.
Das Thema Datenweiche ist ganz easy: Einfach wie oben genannt steuerbare
nicht-invertierende Buffer nehmen, die zu splittende Leitung an 2 davon
legen und wahlweise durchschalten. Das wars.
Die Analog Umschalter von ON sind ja genial, direkt mal abgespeichert.
Bleibt noch eine Frage:
Bei einer jetzt nur denkbaren Lösung mit Buffern ... müssen die
Busleitungen mit Pull Ups oder -downs versehen werden? Denn wird eine
SPI Datenleitung abgeschaltet sind Ausgang des Buffers und gegenüber
liegender Engang ja High-Z und können demnach lustig herumfloaten. Es
reicht einen Finger dran zu halten, zb bei 74HCT595 um, wenn LEDs
angesclossen sind lustige Lichtspiele zu sehen.
Helmut Lenzen schrieb:> 74HC157>> http://www.ti.com/lit/ds/symlink/cd54hc157.pdf
Hallo,
die funktionieren leider nicht, da sie das Gegenteil machen: 2 Signale
wechselweise auf eine Leitung legen. Aber gewünscht ist 1 Signal auf 2
Leitungen zu splitten. Zudem muss berücksichtigt werden dass bei einer
SPI "Gegenverkehr" herrscht, ein OUT und ein IN bestehen.
mfg
Christian
Christian J. schrieb:> Bei einer jetzt nur denkbaren Lösung mit Buffern ... müssen die> Busleitungen mit Pull Ups oder -downs versehen werden? Denn wird eine> SPI Datenleitung abgeschaltet sind Ausgang des Buffers und gegenüber> liegender Engang ja High-Z und können demnach lustig herumfloaten.
Das kommt drauf an, wie "High-Z" die sind. Klar, das ein Finger deutlich
niederohmiger ist und mit der dranhängenden Antenne reichlich Störungen
einspeist.
Zeig mal, wie deine Schaltung jetzt aussieht.
Christian J. schrieb:> Dass der eine 3,3V hat und der> andere 5V wird hoffentlich nicht stören,
Das klingt irgendwie nicht danach, als ob Du weißt, was Du da tust...
Christian J. schrieb:> ok, ich habe jetzt Geräte, die einen SS Eingang haben und meine> eigenwillige Konstruktion abgeändert. Dass der eine 3,3V hat und der> andere 5V wird hoffentlich nicht stören, sollen zumindest tolerant sein,> die nRF24L01 Funkmodule.
Also haben beide einen CS_N...?!
nRF24L01 ist 5V tolerant, und was ist der andere Baustein?
Mit scheint du benötigst eher einen Level-Shifter als einen Umschalter.
Poste doch mal einen Schaltplan, das hilft oft weiter als 1000 Worte.
Easylife schrieb:> Kannst du mal kurz durchgeben, um welches Display und um welches> Funkmodul es sich handelt.
Ne, das wäre ja zu einfach und der Thread wäre schnell zuende.
Er will, daß alle nur nutzlos rumraten aber keine Lösung.
Peter Dannegger schrieb:> Easylife schrieb:>> Kannst du mal kurz durchgeben, um welches Display und um welches>> Funkmodul es sich handelt.>> Ne, das wäre ja zu einfach und der Thread wäre schnell zuende.> Er will, daß alle nur nutzlos rumraten aber keine Lösung.
Menno,
ich nehme jetzt ein 5110 von Nokia und das Funkmodul nrF24L01 dazu und
schon hat sich mein problem in Luft aufgelöst. Vorher hatte ich eine
SPI-lisiertes 44780er als DIY Variante und das hatte keinen CS dran.
Problem gelöst :-)
Dass der Atmel 5V hat und die beiden Geräte 3.3V ist laut Datenblatt
kein Thema, dennoch habe ich 1k in alle Datenleitungen geschaltet, nur
zur Vorsicht, auch wenn dieses einen RC Pass darstellt, was bei 1MHZ
aber kein Thema sein dürfte.
Christian J. schrieb:> ich nehme jetzt ein 5110 von Nokia und das Funkmodul nrF24L01 dazu und> schon hat sich mein problem in Luft aufgelöst.
OK schön.
> Vorher hatte ich eine> SPI-lisiertes 44780er als DIY Variante und das hatte keinen CS dran.
Ich nehme an einen Hitachi 44780 Display Controller.
Interessehalber: wie ist denn der "SPI-lisiert" worden?
Mit einem 74HC595, so wie hier:
http://www.instructables.com/id/3-Wire-HD47780-LCD-for-less-than-1-dollar
Pin 12 ST_CP wäre dein CS_N gewesen... ;-)
Das Schieberegister schiebt zwar die Daten für den anderen SPI slave
munter durch sein shift register, solange es aber am ST_CP keine
low-high Flanke sieht, wird nichts davon ins storage register
übernommen.