Hola,perezriveracarlos , Haber por la paginacion ,no te preocupes, pues de la forma que lees, no tienes ningún problema, la paginacion se gasta para acelerar la forma de leer la memoria, en bloques , sin tener que enviar los bits de start y stop, de un modo,que la librería ccs no implementa, en cuanto a el problema de escritura, si no veo el resto del programa no puedo decirte, mucho, por ejemplo, si la variable Tag[], la direccionas con a =0>255; no podrás poner mas de 255 bytes, o
while (c<ntag)// siempre escribes en las mismas posiciones desde c hasta ntag,
{
b=0;
while (b<12)
{// como i=0 cuando lo inicializas, al grabar eliminas el puntero en las 2 primeras direcciones de memoria.
write_ext_eeprom((i),tag[a]);// cuando c supere los 22 , 'a' (a=22*12=264 mas de un int8 )se desbordara, y en el mejor de los casos , empezara,
// otra vez de 0 , pero como dice murfy, crash seguro,
b++;
a++;
}
en cuanto a la lectura, la variable c , la desbordas 2 veces, como mínimo.
cuando defines tag[], cuantos bytes de memoria usas, haber si corrompes alguna dirección que no toca.
si puedes , postea el código completo y haber si podemos ayudarte mejor, o un modelo en proteus, para poderlo simular, por cierto, lo pruebas en físico, o en proteus?.