Autor Tema: Guardar y leer codigo en EEPROM interna  (Leído 3267 veces)

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

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Guardar y leer codigo en EEPROM interna
« en: 18 de Junio de 2006, 15:59:43 »
saludos he probado el ejemplo que habia por aqui (de VsZeNeR creo) y funciona correctamente con mi 873. El problema es que quiero escribir una contraseña de 4 numeros que luego comparara con un codigo que es introducido por teclado y pasado a decimal. Ese codigo es la suma de 4 variables de esta forma

code=((a-48)*1000+(b-48)*100+(c-48)*10+(d-48));//48=char '0'
printf("\n  CODIGO DEL USUARIO  %lu ;",code);//enseñamos el codigo por puerto serie

haber si me pueden echar un cable, gracias

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #1 en: 18 de Junio de 2006, 17:18:13 »
voy a poner parte del codigo haber si hago algo mal...

long int LAST_VOLUME=0;     
long int codigo1=9753;   
long int codigo2=2580;   
long int codigo3=4268;
long int codig1,codig2,codig3;

write_eeprom(LAST_VOLUME,codigo1);   //escritura de los mensajes...
LAST_VOLUME++;
write_eeprom(LAST_VOLUME,codigo2);
LAST_VOLUME++;
 write_eeprom(LAST_VOLUME,codigo3);

      Envia(CMD,CLR);
      codig1= read_EEPROM (LAST_VOLUME);            //almacena mensaje de la direccion eeprom
      printf(lcd_putc,"codigo 1 = %lu",codig1) ;
      delay_ms(1500);

y obtengo un 172 en vez del 9753

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #2 en: 18 de Junio de 2006, 17:46:16 »
Según el manual de CCS (supongo que estas utilizando este compilador) pone:

write_eeprom (address, value)

address is a (8 bit or 16 bit depending on the part) int, the range is device dependent, value is an 8 bit int

Cada posición de la eeprom es un byte, por consiguiente tendras que dividir en dos el proceso de escritura y de lectura de la misma, quedando mas o menos:

Código: CSS
  1. long int LAST_VOLUME=0;      
  2. long int codigo1=9753;  
  3. long int codigo2=2580;  
  4. long int codigo3=4268;
  5. long int codig1,codig2,codig3;
  6.  
  7. write_eeprom(LAST_VOLUME++,(codigo1&&FF00)>>8);   // Escritura parte alta del mensaje
  8. write_eeprom(LAST_VOLUME++,codigo1&&00FF);           // Escritura parte baja del mensaje
  9.  
  10. write_eeprom(LAST_VOLUME++,(codigo2&&FF00)>>8);   // Escritura parte alta del mensaje
  11. write_eeprom(LAST_VOLUME++,codigo2&&00FF);           // Escritura parte baja del mensaje
  12.  
  13. write_eeprom(LAST_VOLUME++,(codigo3&&FF00)>>8);   // Escritura parte alta del mensaje
  14. write_eeprom(LAST_VOLUME++,codigo3&&00FF);           // Escritura parte baja del mensaje

Para recuperar el primer mensaje:

Código: CSS
  1. long int LAST_VOLUME=0;
  2. codig1 = read_eeprom(LAST_VOLUME++)*16+read_eeprom(LAST_VOLUME);

Un saludo.
« Última modificación: 18 de Junio de 2006, 18:53:12 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #3 en: 18 de Junio de 2006, 18:03:27 »
muchas gracias no habia caido en eso

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #4 en: 19 de Junio de 2006, 12:41:01 »
sigue sin mostrar los 16 bits  :( ahora el 9753 es el 239

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #5 en: 19 de Junio de 2006, 12:51:29 »
Si tengo un hueco, procuraré simularlo en Proteus para ver donde falla.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #6 en: 19 de Junio de 2006, 13:18:46 »
ok gracias, de todas maneras se me ha ocurrido una manera un poco triste haber si funciona XD se trataria de hacer algo parecido a lo que hice con las variables del teclado es decir separar unidades decenas etc..  el primer codigo seria (9753) guardo en la memoria esos valores separados en 2 variables (97 y 53) luego en el programa principal le diria que el codigo es un int  de 16 bits  de  la primera variable (93)*100 + la variable 2 (53)   

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #7 en: 19 de Junio de 2006, 13:29:17 »
Es que lo tienes que guardar en trozos de 8 bits, ya que es la longitud de trabajo de la memoria EEPROM.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado T-RAVE.

  • PIC10
  • *
  • Mensajes: 9
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #8 en: 19 de Junio de 2006, 14:12:24 »
ya, pero el problema es que salen muchas varibles y en el programa dodne lo voy a utilizar ando sobre el 90% de ROM xD

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Guardar y leer codigo en EEPROM interna
« Respuesta #9 en: 19 de Junio de 2006, 16:05:39 »
Entonces puede ser que necesites embeber codigo en ASM para optimizar el código.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything