Autor Tema: cadena de caracteres en una solo posicion de la memoria eeprom???  (Leído 1249 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
saludos, intentando guardar una cadena en la memoria eeprom y teniendo la idea que esa cadena me iba a ocupar unos 50 posiciones de la memoria eeprom, hice el siguiente ejemplo, pero me di con la sorpresa que cada cadena solo ocupa una posicion de la memoria eeprom :-/???
sera cierto o estoy cometiendo un tremendo error???

char mensaje[50]="hola mundo aqui guardando en la memoria eeprom";
char mensaje1[50]="hola mundo aqui guardando en la memoria eeprom";
char mensaje2[50]="hola mundo aqui guardando en la memoria eeprom";
char mensaje3[50]="hola mundo aqui guardando en la memoria eeprom";

void main(){

    write_eeprom(0,mensaje);
    write_eeprom(1,mensaje1);
    write_eeprom(2,mensaje2);
    write_eeprom(3,mensaje3);
    write_eeprom(4,0x40);
 
   
    printf("el mensaje es: %s\r\n",read_eeprom(0));   
    printf("el mensaje es: %s\r\n",read_eeprom(1));
    printf("el mensaje es: %s\r\n",read_eeprom(2));
    printf("el mensaje es: %s\r\n",read_eeprom(3));
    printf("el mensaje es: %u\r\n",read_eeprom(4));
   
   
   while(1){
 
   }
}
« Última modificación: 20 de Enero de 2017, 08:20:24 por micronet3 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:cadena de caracteres en una solo posicion de la memoria eeprom???
« Respuesta #1 en: 20 de Enero de 2017, 13:21:31 »
Te voy a dar 2 indicios de que estas haciendo mal...

Primero, hace algo asi:

Código: C
  1. char mensaje[50]="hola mundo aqui guardando en la memoria eeprom";
  2. char mensaje1[50]="hola mundo aqui guardando en la memoria eeprom";
  3. char mensaje2[50]="hola mundo aqui guardando en la memoria eeprom";
  4. char mensaje3[50]="hola mundo aqui guardando en la memoria eeprom";
  5.  
  6. void main(){
  7.  
  8.     write_eeprom(0,mensaje);
  9.     write_eeprom(1,mensaje1);
  10.     write_eeprom(2,mensaje2);
  11.     write_eeprom(3,mensaje3);
  12.     write_eeprom(4,0x40);
  13.  
  14.     mensaje[1] = '1';
  15.     mensaje1[1] = '2';
  16.     mensaje2[1] = '3';
  17.     mensaje3[1] = '4';
  18.  
  19.     // No importa si lo cambie arriba, total cuando lea de la EEPROM va a ser el valor correcto, o no ?
  20.    
  21.     printf("el mensaje es: %s\r\n",read_eeprom(0));    
  22.     printf("el mensaje es: %s\r\n",read_eeprom(1));
  23.     printf("el mensaje es: %s\r\n",read_eeprom(2));
  24.     printf("el mensaje es: %s\r\n",read_eeprom(3));
  25.     printf("el mensaje es: %u\r\n",read_eeprom(4));
  26.    
  27.    
  28.    while(1){
  29.  
  30.    }
  31. }

Si aun asi no te das cuenta... pasemos a lo siguiente. Hace esto:


Código: C
  1. printf("la direccion en la RAM es: %X\r\n",&mensaje[0]);
  2.     printf("la direccion en la RAM es: %X\r\n",&mensaje1[0]);
  3.     printf("la direccion en la RAM es: %X\r\n",&mensaje2[0]);
  4.     printf("la direccion en la RAM es: %X\r\n",&mensaje3[0]);

Y luego comparalo con lo guardado en la EEPROM
« Última modificación: 20 de Enero de 2017, 13:32:32 por KILLERJC »

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:cadena de caracteres en una solo posicion de la memoria eeprom???
« Respuesta #2 en: 20 de Enero de 2017, 15:07:12 »
 :D :D :D
osea lo que estaba guardando en la eeprom era la direccion de cada cadena!!!!!
la verdad no le encontre la logica, pero algo me decia que no era lo correcto
killeric muy bien!!!
bueno entonces grabare con un for, y asi si que quda bien y tiene logica todo :)

char mensaje[50]="hola mundo aqui guardando en la memoria eeprom";
char lectura[50];
void main(){
 
    int16 i;
    for(i=0;i<50;i++)
      write_eeprom(i,mensaje [ i ] );
   
    for(i=0;i<50;i++)
      lectura [ i ] =read_eeprom(i);
    printf("mensaje:%s",lectura);
   
   while(1){
 
   }

« Última modificación: 20 de Enero de 2017, 15:52:39 por micronet3 »


 

anything