Chiarimenti sull'I2C

Vorrei togliermi alcuni dubbi prima di partire con un progettino che ho in mente.

Vorrei collegare 1 Attiny ed un dispositivo I2C tra di loro usando appunto l’I2C. E fin qui niente di difficile: l’Attiny sarebbe il master e l’altro lo slave.
Il problema sorge adesso: vorrei ora collegare l’Attiny all’Arduino sempre via I2C… in pratica l’Arduino dovrebbe fungere da master per interrogare l’Attiny come slave. L’Attiny dovrebbe però interrogare il dispositivo come master e fornire i risultati all’Arduino come slave…

E’ fattibile, secondo voi?
Cioè, posso aprire contemporaneamente la connessione I2C sull’Attiny come slave verso l’Arduino e come master verso il dispositivo?

Se fosse un collegamento seriale direi di no: una volta che l’Arduino ha aperto la connessione verso l’Attiny, questo avrebbe la linea impegnata e non potrebbe a sua volta aprirla. Ma con l’I2C in teoria l’Attiny dovrebbe comunicare agli altri dispositivi I2C che può essere interrogato come slave con un dato indirizzo. Insomma, sono un po’ confuso…

Questo è ciò che vorrei fare:

Disp. —> Attiny <----> Arduino

Le frecce indicano la direzione della trasmissione dei dati. Dispositivo invia solamente (verso l’Attiny), mentre l’Attiny può inviare e ricevere dall’Arduino.

beh ma con l'i2c non selezioni un'indirizzo per ogni nodo? puoi usare quello per scegliere chi interrogare no?

Sì ma il problema che ponevo era: può un dispositivo I2C (nel mio caso l'Attiny) tenere aperte contemporaneamente 2 connessioni? Una sarebbe come master per interrogare il dispositivo I2C, l'altra come slave per essere interrogato a sua volta dall'Arduino.

con soft i2c? http://forums.adafruit.com/viewtopic.php?f=25&t=13722

Grazie del link, avevo letto qualcosa in passato di quella libreria ma non ci avevo pensato.

Cmq sto riguardando un po' le specifiche del bus I2C e pare possano coesistere più dispositivi master contemporaneamente e che un dispositivo possa passare da master a slave senza problemi, basta terminare la comunicazione precedente.

Ieri sera era tardi per provare, forse stasera riesco a metter su qualcosa.

Si, è possibile avere più master sul bus I2C, si chiama protocollo multimaster, però è abbastanza ostico da implementare, qui puoi trovare un esempio di implementazione I2C multimaster tra due Arduino.

E' possibile perchè mi ricordo che sul playground tempo fa c'era una guida che descriveva proprio come interfacciare due arduino tra di loro, solo che adesso non sono ruscito a trovarla. In compenso googolando ho trovato questo: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1195968384 che dovrebbe fare al caso tuo