Que tal Picavid,
Ahora ya me confundi con lo que intentas hacer. Podrias explicar un poquito cual es tu idea de recibir 1000 bytes. Hasta donde entiendo lo que quieres hacer es recibir datos desde una PC hacia el micro y grabarlos en la eeprom externa (24lc256). Pero mi pregunta es porque 1000 bytes o 500? o los que sean necesarios?
Cuando tu usas una memoria eeprom estas tienen un tiempo de borrado-escritura de 5 milisegundos es or eso que cuando realizas la escritura necesitas ese tiempo para que la memoria internamente ejecute la escitura. Ahora bien ese tipo de memoria si mal no recuerdo, tiene un buffer de escritura de hasta 64 bytes, esto hace que puedas escribir 64 bytes en solo 5 milisegundos y no asi usar 64 veces tu rutina de escritura.
Para mi es importante saber que pretendes hacer, te comento porque yo he grabado archivos de tipo texto a una memoria de ese tipo (usando picbasic). Lo que hice fue utilizar la hyperterminal, pregrabo un archivo con 32760 bytes y los transfiero a la memoria. Para ello, lo que hice fue enviar frames de 64 bytes y utilizar la cracteristica del handshaking asi cuando el micro recibe 64 bytes envia a la PC el caracter del XOFF para detener la transmision datos (solo durante 5 milisegundos) mientras realiza la escritura de esos datos. Una vez que se realiza la escritura envia el caracter de XON y la PC continua enviando los datos. Yo use una memoria SPI, pero la idea es la misma, lo unico que cambia es el protocolo, ya que tu usas I2C.
Despues tambien con algunos arreglos use una memoria conocida como DATAFLASH, la AT45DB041B de ATMEL, la cual tiene 4 Mbits y de igual manera genere un archivo de 512KB (524288 bytes) y funciona a la perfeccion. Esta memoria tiene la capacidad de 2048 paginas de 264 bytes cada pagina, pero yo solo uso 256. Su buffer es de 264 bytes tambien por lo que practicamente es lo mismo. La memoria tambien es SPI. Pero en fin, con mas datos de tu parte podremos ayudarte a encontrar la mejor solucion.
Saludos
Elreypic