Hallo,
Wenn ich dem Sensor seine Masse wegnehme, dann bekomme ich keine ACK´s.
Also er fühlt sich jedenfalls angesprochen und funktioniert.
Wunderbar, dass das funktioniert. (Wenn du dem Sensor die Masse wegnimmst, kann er logischerweise nicht antworten, da er für's ACK ja auf Masse ziehen muss, die dann ja fehlt.)
Der Master kann steuern, ob er lesen oder schreiben will, das geschieht mit der Adresse, genauer: mit dem niedrigsten Bit.
Siehe: http://rn-wissen.de/index.php/I2C#Adressierung
Du brauchst ungefähr diesen Ablauf:
Code:
I2C-Start
Sende Slave-Adresse+Write
Sende Nummer des Registers, das ausgelesen werden soll
I2C-Stop oder Repeatet-Start
Sende Slave-Adresse+Read
Lese vom Bus (" TWCR=0b10000100; while(!(TWCR&128)){}; return TWDR; ")
I2C-Stop
Ich würde dir auch noch empfehlen, einzelne Codeabschnitte als Methoden/Funktionen zu programmieren, das erhöht die Lesbarkeit/Übersicht, lässt sich wiederverwenden und bringt meistens weniger Fehler mit sich 
Grüße,
Bernhard
Lesezeichen