Um die Erledigung der Frage korrekt zu begründen, hier den aktuellen Stand.

Es werden vom Master (mega328/8MHz-intOsz) drei Bytes an den Slave (mega328bzw.168/20MHz-Quarz) gesendet. Je nachdem ob eine Taste gedrückt oder nicht gedrückt ist, werden zwei unterschiedliche Datensätze gesendet. Slaveadresse Schreiben x70, Slaveadresse Lesen x70+1. Schreibziel ist Position 2 bis 4 des Zielspeichers {von 1 bis 10 möglichen Plätzen}. Nach dem Senden des Datensatzes werden die drei Bytes zurückgelesen. Senden, Zurücklesen und evtl. Fehlermeldung werden im Terminal ausgegeben, siehe Beispiel der Ausgabe des Masters. Es ist eine Terminalverbindung des Masters (9600 Bd da ohne Quarz), des Slaves (128kBd) und des Sniffers (57600 Bd) eingesetzt.

......Klicke auf die Grafik für eine größere Ansicht

Name:	I2C_Test-vom-06-Dez-2011-17-38_ausschnitt.jpg
Hits:	57
Größe:	66,4 KB
ID:	20804

Um die Unterhaltung der beiden Controller mitzuschneiden wurde ein Sniffer (klick) gebaut (Dank an PDannegger). Tiny2313 mit 16MHz-Quarz. Beispiel für einen Mitschnitt:

I2C-Sniff 2313:
...
s70a01a36a37a38ap<\r
...
s70a01a36a37a38ap<\r>

Der Sniffer ist noch verbesserungswürdig, die Ausgaben sind gelegentlich gestört. Der obige Mitschnitt zeigt zweimal :
Sende an Adresse x70 / Speicherplatz 01 {von 10} / Datum x36 senden mit ACK / Datum x37 senden mit ACK / Datum x38 senden mit NAK / Stop