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
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
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
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?
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
> 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
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...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.