Buenas,
Varios comentarios al respecto (por si pueden suponer algo de ayuda):
Para la lectura he visto que muchos mandan la direccion de dispositivo (A0), luego la posiciion de memoria inicial (0x0000).. realizan un RESTART, luego mandan la direccion de dispositivo( A1 ) y luego leer ...
Esto es para poner el puntero de direccion en la posicion correcta. Es lo que tienes que hacer
Por otro lado, el principal error supongo que lo tienes porque no estás haciendo escrituras paginadas, si miras el datasheet te dirá que puedes escribir un byte o una pagina, tu te estás quedando a mitad, ni un byte ni una pagina, no se si eso será posible, prueba grabando un byte y leyendo un byte.
Has comprobado con un osciloscopio, datalogger, etc que el micro saca la señal correcta? Seria una buena manera de empezar.
Comprueba los bits de colision, etc (aunque solo tengas un maestro y un esclavo), puede darte indicaciones de error de hardware/software.
Compruebas el ACK que te debe enviar la memoria? No lo compruebas, deberias saber si la memoria "se ha enterado" de tu petición de escritura.
En caso que la escritura se hiciese correctamente, debes darle más tiempo para leerla (seguro que no te contesta el ACK de la escritura del puntero de direccion, puesto que acaba de empezar el ciclo de escritura interna de la memoria eeprom), por tanto estarías leyendo en otra dirección, ya que no escribiria bien el puntero.
Espero que sirva de ayuda, comenta los avances y podremos seguir ayudandote...
Un saludo,