Hi,

da ich für meinen neuen Bot mehrere Atmegas verwenden will und diese auch untereinander kommunizieren müssen, hab ich mich mal ein wenig informiert, und bin auf den I²C - Bus gestoßen.

Nun, gibt es ja diese tolle Bascom Hilfe, die leider in Englisch ist, und da mein Englisch (noch) nicht das Beste ist, glaube ich, ich hab da was missverstanden.

So wie ich das sehe, werden im Code, der auf dem Master läuft, die Adressen der Slave - Controller definiert. Mit diesen Adressen kann ich dann mit I2CSEND irgendwelche Daten an den bestimmten Controller schicken.

Den entsprechenden Empfangs - Befehl für den Slave-Controller glaube ich in I2CRECEIVE gefunden zu haben. So weit so gut. Wenn ich nun Daten vom Master empfangen will, muss ich dann einfach diesen Befehl ausführen lassen, und er gibt mir die Daten in eine Variable? Wenn der Befehl ausgeführt wird, und es kommen keine Daten vom Master, bleibt das Programm dann an dieser Stelle stehen, bis der Master ein Signal sendet?

Die Rückmeldung erfolgt (meines Erachtens) ebenfalls über I2CSEND. In der Bascom-Hilfe steht aber dazu, dass dieser Befehl zum Senden von Daten an SLAVES gut sein soll. Oder muss ich dann nur die Adresse des Masters angeben?

Und wie wissen die Slaves und der Master, welche Adressen sie überhaupt haben? Werden die per Fusebits eingestellt?

Fragen über Fragen


Viele Grüße
ikarus_177


EDIT: ok, also das mit Senden und Empfangen hab ich jetzt hingekriegt, unklar ist mir aber weiterhin, wie die einzelnen AVR´s ihre eigenen Adressen mitgeteilt bekommen, das sie also wissen, dass sie angesprochen werden.