Hola buenas tardes, quisiera ver si me pueden ayudar en un problema que tengo al leer un char de la eeprom.
El tema es el siguiente, Recibo desde un modulo gsm al puerto serie del PIC (18f4550)un valor de 24 elementos por ejemplo 55cf91e97625425c93a9e3c1 a este valor lo guardo en un char llamado Id0 quedando de esta manera:
Id0[0]= USART_buffer[50];
Id0[1]= USART_buffer[51];
Id0[2]= USART_buffer[52];
Id0[3]= USART_buffer[53];
Id0[4]= USART_buffer[54];
Id0[5]= USART_buffer[55];
Id0[6]= USART_buffer[56];
Id0[7]= USART_buffer[57];
Id0[8]= USART_buffer[58];
Id0[9]= USART_buffer[59];
Id0[10]= USART_buffer[60];
Id0[11]= USART_buffer[61];
Id0[12]= USART_buffer[62];
Id0[13]= USART_buffer[63];
Id0[14]= USART_buffer[64];
Id0[15]= USART_buffer[65];
Id0[16]= USART_buffer[66];
Id0[17]= USART_buffer[67];
Id0[18]= USART_buffer[68];
Id0[19]= USART_buffer[69];
Id0[20]= USART_buffer[70];
Id0[21]= USART_buffer[71];
Id0[22]= USART_buffer[72];
Id0[23]= USART_buffer[73];
luego hago el sig codigo :
char sms[25];
printf("id sin guardar: %s",id0);
printf("\n");
write_eeprom(0,id0); // guardo el valor en la eeprom
delay_ms(1000);
strcpy(sms,read_eeprom(0));
imprimir (sms);
////////////////////
void imprimir (char *cad)
{
printf ("id guardado: %s",cad);
}
///////////////////////////////Compilado con css
la salida es :
id sin guardar: 55cf91e97625425c93a9e3c1
id guardado: 55cf91e97625425c93a9e3
////////////////////////
Se observa que faltan los 2 últimos valores, no se por q pasa eso, probé con longitudes mas pequeñas y siempre es lo mismo, faltan los 2 ultimos.
La verdad es q tampoco se como hace la eeprom para guardad semejante valor en una sola posicion de memoria. Quisiera saber que estoy haciendo mal, o si hay alguna manera mejor de hacerlo. Desde ya muchas gracias
Agrego un poco mas de info para interpretar mejor el escenario: salida que obtuve es lo que me sale por el hiperterminal de la pc.
El vector USART_BUFFER se llena cada ves que ocurre una interrupcion por el puerto serie, es un vector de 120 elementos.