I2C-"Netzwerk" mit ATMega8... noch unklares...
Moin.
Da die einzelnen Geräte mit nem ATMega8 immer mehr werden und diese letztendlich doch mal alle gemeinsam gesteuert werden sollen, wollte ich diese nun über den I2C-Bus verbinden. Geplant ist, dass alle Geräte als Slaves arbeiten und dann ein ATMega8 allein die Aufgabe des Masters übernimmt.
Hab zwar schon mal nach Infos gesucht, aber trotzdem gibts da noch einige Punkte, bei denen ich noch nicht ganz 100% sicher bin. Darum mal hier die unklaren Punkte.
#1) I2CSlave Library: "Works for 2313,2323, 2333,2343,4433, tiny22, tiny12, tiny15 and M8. Other AVR chips have build in hardware for I2C."
Geh ich richtig, dass M8 dort den ATMega8 bezeichnet und somit für einen Slave diese Library benötigt wird, bei einem ATmega16 aber nicht?
#2) Soweit klar, dass ein Slave nicht von sich aus senden kann. Wenn nun Slave 2 an Slave 4 etwas senden will, muss der Master die Daten also von S2 auslesen und danach an S4 weiterleiten... ?
#3) Aus einem Codebeispiel weiss ich, dass man mit dem Folgenden Code (für Master) einen Slave abfragen kann...
Code:
I2cstart
I2cwbyte ICaddress
I2crbyte Bytetoread, Ack
I2crbyte Bytetoread, Nack
I2cstop
Aber wie sieht hierzu dann im Slave das Gegenstück des Codes aus?
MfG
S.C
Re: I2C-"Netzwerk" mit ATMega8... noch unklares...
Hallo Jaecko,
ich komme zwar aus der C-Ecke, aber ich probiers mal.
Ob ein AVR TWI Hardware-mässig unterstützt, musst Du in den Datenblättern nachschauen. Der Mega8 unterstützt TWI auf jeden Fall(in HW).
In einem TWI-Bus kann ein Slave auf keinen Fall senden! Es wäre zwar möglich, dass er einfach wartet bis er vom Master abgefragt wird, und dieser es dann an den 2. Slave weitergibt. Aber hier ist MultiMaster auf jeden Fall die bessere Lösung.
Es gibt ein wiki dazu auf roboternetz. Wenn mich nicht alles täuscht sogar ein Beispiel in BASCOM für Multimaster.
An einem TWI-Bus gibt es zur gleichen Zeit immer nur einen Master. Wenn es ein Multimaster-Bus ist, und 2 gleichzeitig Master werden wollen, gibt es ein Verfahren(Arbitation) wodurch einer gewinnt und Master wird und der andere zum Slave wird(oder sollte).
Beschäftige Dich mal mit dem Wiki, und schreibe hier einfach wenn Du noch fragen hast.
cu
Martin