Wenn in einem Multi-Master-System zwei Master etwas von dem selben Slave haben wollen, müsste doch zu Problemen kommen können. Mal so ein kleines Denkexperiment: Angenommen es sind an einem I2C-Bus zwei Master und ein Slave angeschlossen. Im gleichen Moment wollen beide Master was vom Slave und fangen deshalb im selben Moment zu senden an. Sie generieren eine Startcondition und schreiben die selbe Adresse auf den Bus. Dann müsste doch für beide Master die Arbitrierung klappen, da es ja zu keiner Kollision kommt. Aber wie geht es dann weiter? Angenommen beide Master Übermitteln jetzt zwei unterschiedliche Anfragebytes. Hier müsste es dann aufgrund der Hardwareverdrahteten Oder-Schaltung zu Datenmüll kommen? Ist es denn überhaupt zulässig den selben Slave von zwei Mastern aus anzusprechen? Hat jemand bereits Erfahrung mit dieser Fragestellung?
Das klappt schon. Solange beide das gleiche senden, gibts kein Problem. Nur beim ersten unterschiedlichen Bit verabschiedet sich einer und der andere macht weiter. Peter
Wiso sollte sich beim ersten unterschiedlichen Bit jemand verabschieden? Heist das nun das ein Master immer merkt wenn ein anderer zur selben Zeit sendet? So wit ch das verstanden habe, bekommt das nur ein der Master während der Arbitrierung mit, also im ersten Byte, dass übertragen wird. Josef
"Heist das nun das ein Master immer merkt wenn ein anderer zur selben Zeit sendet?" Nein. Er merkt nur, wenn er high sendet und low zurückliest und verläßt sofort den Mastermodus. Der andere kriegt davon nichts mit (sendet low und liest low) und macht einfach weiter. Schau Dir mal die Zustände an, da gibt es auch "Arbitrierung verloren im Datenbyte". Peter
Danke, jetz hab ich es verstanden. Grüße Josef
Gast
#346719
Ahhhh 10000 Dank das hab ich mich auch schon immer gefragt.