Ich hab jetzt nicht ins Datenblatt geschaut, aber was mir auffällt:
Es geht mit Start los, ok. Dann kommt die Adresse und das R/W Bit. Soweit auch ok.
Nur eine Bemerkung: Auch wenn ich die Funktion "TWI_Write_Adr()" nicht kenne, sollte sie melden, ob ein ACK vom Slave gekommen ist. Wenn man das auswertet weiß man, ob der Slave sich angesprochen fühlt, die Adresse also richtig ist.
Jetzt kommt die Registeradresse, auch ok.
Aber warum jetzt ein Start? Der Slave ist im "Write Mode" (R/W Bit war auf Write), also kann man jetzt den Wert ins Register schreiben. So ist das jedenfalls bei den meissten I2C Bausteinen gängig. Nur wenn man lesen will, bricht man die Übertragung nach dem Schreiben der Registeradresse ab und startet neu mit R/W Bit auf Read. Zusammengefasst : Das zweite Start() und Write_adr() weglassen.
MfG Klebwax
Lesezeichen