Hallo Zarathustra,

es ist genau so, wie du es sagst:

Schreiben:
1) i2c_start(slave_id);
2) i2c_write(addr, wohin man schreiben will);
[2a) i2c_write(high(addr), falls im Baustein mehr als 256 Speicherstellen vorhanden sind);]
3) i2c_write(Wert, den man an die Position [addr] schreibenwill);
Die schreibaddr wird dann normaleweise automatisch um 1 erhöht, so dass man auch mehrere Bytes nacheinander schreiben kann.
4) i2c_stop();

Lesen:
1) i2c_start_wait(slave_id);
2) i2c_write(addr, von wo man lesen will);
[2a) i2c_write(high(addr), falls im Baustein mehr als 256 Speicherstellen vorhanden sind);]
3) i2c_repeated_start(slave_id+1); Bus nochmal starten, jetzt aber für Schreibzugriff, deshalb slave_id+1
4) var=i2c_readAck(); wenn man noch ein Byte lesen will bzw i2c_readNak(); , wenn man keine Bytes mehr vom slave will
5)i2c_stop();

MfG Mark