De antemano agradezco sus respuestas.
Ahora bien, el método que empleo para escribir, automaticamente antes de realizar la escritura de los datos copia estos y los guarda en el primer sector de la memoria (0-4095) , luego los borra, escribe los nuevos datos junto con los que ya se habian copiado.
Este es el siguiente,
void ChangeStringSector( BYTE *Data, DWORD Addrs, UINT Length ){
DWORD i, con2; BYTE data, band; UINT con1;
con1 = i = band = 0;
con2 = ( SelectSector(Addrs) * SECTOR_4K ) - SECTOR_4K; // Inicio de Sector a leer
// Lee la memoria y hace el cambio de datos
for( i=con2;i<(SelectSector(Addrs) * SECTOR_4K); i++ ){
data = FlashRead(i);
if( Addrs == i ){
while( Length-- ){ data = *Data++; FlashWrite(data, con1 ); con1++; i++; }
band = 1;
}
if( band == 1 ){ band = 0; }else{ FlashWrite( data, con1 ); con1++; }
}
// Borra el Sector leido
EraserSector( SelectSector(Addrs), 1 );
// Escribe en el sector borrado los nuevos datos
con1 = 0;
for( i=con2;i<(SelectSector(Addrs) * SECTOR_4K);i++ ){
FlashWrite( FlashRead(con1), i ); con1++;
}
//strlen(buffer);//me determina el tamao del buffer que he de implementar para ubicarlo en el lugar de Lenght
// Borra el Sector utilizado como buffer
EraserSector( 0, 1 );
}
El problema que detecto es que al momento de Reset el PIC, y leo lo que esta en la memoria, luego de haber 'sobreescrito' los primeros 10 bytes de la memoria (a partir de la 52096), la lectura empieza desplazada n+1, es decir se vuela el primer dato, es decri, hasta el dato numero 10 todo es perfecto, luego cuando empieza la segunda linea de 10 datos, no me lee el numero 11 sino el 12 y asi... de ahi adelante todo carece de coherencia...
Gracias por su atencion, interes y ayuda, Suky, Kallitos y todos los q deseen colaborarme con esto.