Vergleich mal den Teil zum Auslesen, es muss erst die (Speicher-)Adresse dem Slave per Write übergeben werden, danach ein Restart, und dann erst kann man das Byte lesen. Da war ich auch nicht ganz bei der Sache, hab das übersehen.
Übernimm mal das Beispiel vom lesen in die Function.

Das NACK bedeuted hier, das dies das letzte Byte ist, und danach ein Stop kommt, man könnte hier auch weiter lesen (mit ACK), und mehr Bytes holen als nur eins. Die EEproms zählen die Adresse normalweise selber weiter.