Forum: Mikrocontroller und Digitale Elektronik SPI 1 MASTER N SLAVEs verdrahtung problem bei zusatzleitung


von Patrick K. (kaplan)


Angehängte Dateien:

Lesenswert?

Servus,

ich bin auf folgendes Problem gestossen:

mein master (atmega644) wählt meine Slaves (ATmega644) über verschiedene 
CS Leitungen an. Diese melden sich ueber eine gemeinsame "Busy" Leitung 
zurueck. Alle nicht gewaehlten Slaves stellen dabei die Busy Leitung auf 
eingang.
Nur der gewaehlte Slave per CS Leitung setzt die "Busy"Leitung auf 
Ausgang. Das vermeidet Kurzschluesse... aber ich glaube der Master 
erkennt somit eien undefinierten zustand wenn gerademal alle Slaves Busy 
auf eingang gestellt haben.

Wichtig ist, dass der MAster auf jeden Fall immer einen definierten 
Zustand an der BusyLeitung bemerkt. sonst klappt die synchronisation 
nicht.


jetzt hab ich mir ueberlegt dass ich das analog zur LED verschaltung 
beim STK500 realisieren könnte. Dann waere  bei allen Slaves BUSY immer 
als Ausgang definiert. Nur der aktivierte Slave setzt dann BUSYauf Low 
(also das ganze Low active). siehe anhang!!!

Aber fliesst dann nicht zu viel Strom? ich will nicht dass was 
durchbrennt.

hat jemand ne Idee?

vielen dank
Patrick

von Jörg X. (Gast)


Lesenswert?

Open-Drain -leitung: beim Master auf eingang & Pull-up (evtl. einen 
'stärkeren' externen, die Slaves schalten zwischen High-Z (Eingang ohne 
Pull-up) und ausgang-low hin und her, wie  z.B. beim I2C, 1wire etc.

Aber das wäre dir bestimmt gleich auch allein eingefallen :)

hth. Jörg

von Patrick K. (kaplan)


Lesenswert?

Hallo Jörg,
ich bin total verwirrt. die ganzen ausdruecke verwechsel iich 
andauernd...

high-z > EINGANG, no PULL UP

open-drain heisst doch EINGANG und KEIN interner PULLUP oder???

open-source: AUSGANG, HIGH   ???
mann oh mann ich gfind da auch im netz keine gscheite uebersicht. immer 
dieses denglish, sorry

von Patrick K. (kaplan)


Lesenswert?

was haltet ihr davon:

Der Master ist Input, kein internal pull up.

Alle Slaves sind auf high-z, eingang ohne pull up

Es wird ein externer 10k Pull Up widerstand verwendet.

ein aktivierter Slave wechselt seine BUSY leitung auf ausgang low (=open 
drain?)


der master sieht somit immer ein HIGH signal,
nur wenn ein slave seinen ausgang aktiviert, sieht er LOW.

passt das?

von Michael Wilhelm (Gast)


Lesenswert?

Ich würde es so machen:

Master Busy-Eingang mit den 10k, die du angesprochen hast.

Alle Slaves sind auf Ausgang geschaltet und im inaktiven Zustand high.

Wenn ein Slave sich meldet, zieht er die Busy-Leitung über eine Diode 
auf Masse. Nach dem Datentransfer setzt der Slave die Leitung wieder 
high.

MW

von Patrick K. (kaplan)


Lesenswert?

> Alle Slaves sind auf Ausgang geschaltet und im inaktiven Zustand high.
>
> Wenn ein Slave sich meldet, zieht er die Busy-Leitung über eine Diode
> auf Masse. Nach dem Datentransfer setzt der Slave die Leitung wieder
> high.


also soll die diode den strom im inaktiven zustand sperren?
Also pro slave eine diode. Diode vom Master eingang zum Slave ausgang in 
Sperrrichtung?

MASTER
  In
   |
   +-------+----- ...
   |       |
  _|__    _|__
  \  /    \  /
  _\/_    _\/_
   |       |
   |       |
   |       |
Slave1   Slave2    ...
 out      out


von Patrick K. (kaplan)


Lesenswert?

Alternativ muesste doch auch das hier gehen:

Der Master sieht high = alle Slaves inaktiv

                        VDD
                         |
                         |
                         |
                       R 10k
                         |
                         |
MASTER in, o---R150------+-------+---SLAVE Eingang no pull up
no pull up                       |
                                 |
                                 +---SLAVE Eingang no pull up
                                 |


Der Master sieht low = ein Slave hat umgeschalten

                        VDD
                         |
                         |
                         |
                       R 10k
                         |
                         |
MASTER in, o---R150------+-------+---SLAVE AUSGANG LOW
no pull up                       |
                                 |
                                 +---SLAVE Eingang no pull up
                                 |


die widerstaende sollen den strom begrenzen...

von Jörg X. (Gast)


Lesenswert?

Genau so hab ich das gemeint :)
der 150Ohm Widerstand ist sicher unnötig: aus dem Slave-ausgang kommt 
kein Strom, bei Low-Pegel und aus dem Master Eingang auch nicht, und die 
5/10000=500µA , die durch den Pull-Up kommen.. ;)

hth. Jörg

von Patrick K. (kaplan)


Lesenswert?

Super, wird umgesetzt und getestet :)

danke vielmals

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.