Hi, ich habe folgendes Problem. Ich möchte einen Wert via I2C von einem Arduino zu einem zweiten Arduino senden. Dies soll alles mit den Hardware Registern TWXXX, also die Twin Wire Interface Register, geschehen. Dabei soll der Master Arduino als Reciever dienen und der Slave Arduino als Transmitter. Ich habe ebenfalls eine Funktion eingebaut die mich überprüfen lässt, ob ich im richtigen Stadium der Übertragung bin. Das Problem an der Sache ist die Adresse, welche ja aus 7 Bit Adresse + Read/Write Bit besteht. Beispielsweise würde ich eine Übertragung so erwarten:
- Master sendet Start
- Master sendet Adresse + Write Bit also 0b00000011 (Adresse ist Dezimal 1)
- Slave sendet ACK zurück wenn Adresse die gesendet wurde identisch mit Festgelegter Adresse ist also 0b00000010 (im Slave) 4.Master Empfängt ACK ... and so on ...
Jedoch bleibt meine Kommunikation still außer ich setzte in der Slave Adresse das LSB, also den General Call, auf 1. Deshalb landet der MR immer wieder im repeated Start und der ST startet nicht.
Hat jemand eine "einfache" Erklärung für die Adressierung?
Zu den Codes, die inkludierte Bibliothek dient der Überprüfung und spuckt die Hex-Zahlen des Übertragungszustands aus. Beispielsweise 0x8 für Start oder 0x18 für ACK ist zurück etc.