I2C - gleichzeitig Master und Slave

Gast #5626783
Lesenswert?

Guten Tag,

ich suche nach einem AVR der gleichzeitig sowohl Slave wie auch Master 
sein kann. Dabei habe ich mir überlegt, dass doch theoretisch die 
Eingänge INT0/INT1 als Slave und das eigentliche TWI-Modul als Master 
benutzt werden kann, oder?

Ich konnte dazu nur relativ wenig Informationen finden.

Beste Grüße
Felix.
Gast #5626797
Lesenswert?

Wahrscheinlich heißt I2C bei Atmel deshalb TWI, weil nicht alle Teile 
der I2C-Spezifikation umgesetzt wurden. Spart wohl Lizenzabgaben.

Multimaster ist schon der richtige Weg. Nur wenn du dich dranmachst, 
solltest du das tBUF-Problem nicht aus den Augen verlieren.
Gast #5626847
Lesenswert?

FelixB schrieb:
>> Spricht etwas dagegen, den Modus je nach Bedarf umzuschalten?
> Müsste ich dann nicht auch eine feste Adresse für den Slave auswählen?

Als Slave braucht er eine Adresse - logisch. Auch diese ist zur Laufzeit 
änderbar.

Kann es sein, dass du einen Codegenerator benutzt, der dich dazu zwingt 
jeden I/O Pin vor dem eigentlichen Programmstart für eine bestimmte 
Verwendung festzunageln?
#5626906
Lesenswert?

Dergute W. schrieb:
> Ich kann nur waermstens vom I2C-Multimaster Mode abraten. Da muss nur
> mal ein kleiner Glitch oder eine zu langsame oder zu schnelle Flanke
> vorkommen, schon denkt jeder Master, er waere grad' nicht drann und
> wartet ... und wartet ... und wartet...

Die alten Philips P80C552, P87C751 und P89C668 hatten damit keinerlei 
Probleme. Sie haben sich an die Spezifikation gehalten.
Leider wurden sie ersatzlos abgekündigt. Beim Ersatz durch AVRs habe ich 
leider gemerkt, daß Atmel die Spezifikation nicht verstanden hat. Ich 
habs dann nur mit Timeout-Interrupts wieder zum Laufen gekriegt.
Gast #5626959
Lesenswert?

> Jeder Slave braucht eine Adresse, sonst kann er nicht am Bus teilnehmen.

Das stimmt natürlich. Was aber, wenn der Slave nur "lauschen" soll, also 
die Übertragung mitlesen kann ohne darauf zu reagieren, der AVR trotzdem 
aber gleichzeitig Master sein kann.
Gast #5626997
Lesenswert?

FelixB schrieb:
>> Jeder Slave braucht eine Adresse, sonst kann er nicht am Bus teilnehmen.
>
> Das stimmt natürlich. Was aber, wenn der Slave nur "lauschen" soll, also
> die Übertragung mitlesen kann ohne darauf zu reagieren, der AVR trotzdem
> aber gleichzeitig Master sein kann.

Nur lauschen geht mit "richtigen" Slaves nicht. Sniffer musst du ohnehin 
"zu Fuß" programmieren - denke ich jedenfalls.
Gast #5627010
Lesenswert?

> Nur lauschen geht mit "richtigen" Slaves nicht. Sniffer musst du ohnehin
> "zu Fuß" programmieren - denke ich jedenfalls.

Ah ja, Sniffer war das Wort welches ich gesucht habe.
Kann ich den Master mit dem TWI Modul machen und den Slave über die 
ION0/INT1 ?
Gast #5627018
Lesenswert?

FelixB schrieb:
>> Nur lauschen geht mit "richtigen" Slaves nicht. Sniffer musst du ohnehin
>> "zu Fuß" programmieren - denke ich jedenfalls.
>
> Ah ja, Sniffer war das Wort welches ich gesucht habe.
> Kann ich den Master mit dem TWI Modul machen und den Slave über die
> ION0/INT1 ?

Man kann, ob du das kannst, kann ich nicht beurteilen. Man kann das auch 
ganz ohne Interrupts machen - hängt sehr davon ab, womit du deinen µC 
sonst noch so belastest.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren