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.
I2C kann Multimaster, wobei das beim AVR sehr verbugt ist. Falls Du 2 getrennte I2C willst, dann das HW-I2C als Slave und Single-Master-I2C in SW. Bzw. der ATmega328PB hat 2 I2Cs.
Spricht etwas dagegen, den Modus je nach Bedarf umzuschalten?
Beim Mikrocontroller hast Du das per Programm in der Hand den Betriebsmodus im laufenden Betrieb zu ändern. Können alle, die 2 Pins frei haben, entweder Hardware TWI oder Software TWI
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.
neuer PIC Freund schrieb im Beitrag #5626797: > solltest du das tBUF-Problem nicht aus den Augen verlieren. Was soll das sein?
Vielleicht auch mal überlegen, ob ein anderer Bus vielleicht besser ist. Bei CAN z.B. ist Multi-Master sehr einfach, da macht das alles die Hardware.
Dr. Sommer schrieb: > Vielleicht auch mal überlegen, ob ein anderer Bus vielleicht besser ist. Ja vor allem weil die MasterSlaves vor lauter Protokoll- Chaos nicht wissen wann wer sprechen darf. Gibt schöne Bus-Kollisionen und viel Spass.
> Spricht etwas dagegen, den Modus je nach Bedarf umzuschalten?
Müsste ich dann nicht auch eine feste Adresse für den Slave auswählen?
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?
Moin, 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... Gruss WK
Ich habe I2C-Multimaster auch noch nie benutzt. Und ehrlich gesagt auch nicht gebraucht.
FelixB schrieb: > Müsste ich dann nicht auch eine feste Adresse für den Slave auswählen? Jeder Slave braucht eine Adresse, sonst kann er nicht am Bus teilnehmen. Und die Adresse sollte konstant sein, sonst schaut der Master ziemlich dumm aus der Wäsche, wenn ein Slave plötzlich nicht mehr reagiert.
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.
Chaos Master schrieb: > Ja vor allem weil die MasterSlaves vor lauter Protokoll- > Chaos nicht wissen wann wer sprechen darf. Gibt schöne > Bus-Kollisionen und viel Spass. Bei I2C gibt es keine Kollisionen. Ein Master gewinnt die Arbitration und kann seinen Transfer fortsetzen. Es wird kein Paket zerstört und es gibt auch kein Protokoll-Chaos.
> 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.
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.
> 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 ?
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.
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.