Ich bin mittlerweile schon über die TinyWireM-Bibliothek gestolpert
M = Master. Wenn der Atmega unaufgefordert Senden soll, dann muss auf den Tiny TinyWireS. TinyWireM brauchst du wenn der Tiny Master sein soll und von einem Slave Daten anfordert
Hier habe ich gezeigt wie man verschiedene Multi-Byte Darentypen über I2C austauscht:
http://forum.arduino.cc/index.php?topic=407599.msg2804476#msg2804476
Mit zwei Atmegas. Also Wire auf beiden Enden. Das könnte aber auch ein ATtiny mit TinyWire sein.
Das ist Test/Demo-Code! Es wird gezeigt wie der Master Daten an den Slave schickt. Aber auch wie der Master vom Slave Daten anfordert. In dem Beispiel schickt der Master zwei Zahlen, der Slave inkrementiert sie und der Master liest sie sofort wieder zurück. Praktisch musst du dich für eine Variante entscheiden!
1.) Master schickt Daten an den Slave:
Auf dem Master writeValues() nehmen und auf dem Slave den Receive Event Handler
2.) Master fordert Daten vom Slave an (analog zu I2C Sensoren):
Auf dem Master getValues() verwenden und auf dem Slave den Request Event Handler
Du willst hier warscheinlich Variante 1
Das ist für zwei Werte. Für nur einen Integer kann das anonyme struct entfallen:
union Data
{
byte asArray[sizeof(unsigned int)];
unsigned int value;
};
Wobei TinyWire glaube ich nicht diese Beschränkung hat dass man im Event Handler nur einmal write() machen kann. Man kann aber so oder so entweder ein Byte oder ein Array senden. Man kann nicht direkt Multi-Byte Variablen verschicken. Daher sind Unions sind sehr praktisch hierfür.