Autor Tema: cosa rara con la eeprom  (Leído 3883 veces)

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

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
cosa rara con la eeprom
« en: 14 de Febrero de 2006, 17:54:00 »
amigos: grabo el valor de un ajuste de una constante en un equipo con un pic 16f873a, prendo el equipo y la constante debe ser la que yo grabe.

luego la coloco sobre un lcd para que el operario la pueda setear y volver a grabar si quiere.

ahora me informaron que por ejemplo grabaron 0.63 y al volver a prender les salio 0.31.

despues lo chequeamos telefonicamente y el operario de las 10 veces que grabo la constante  en la eeprom ,9 le devolvio el valor correcto y una vez el valor 0.31

alguna sugerencia?

este es pedazo de programa en donde lee la variable y la coloca en el lcd

   lcd_init ();
   printf ("SINCRONISMO ESPUMADORA
"Giño;
   printf (lcd_putc, "f   ESPUMADORA
    MENTVIL"Giño;
   delay_ms (3000);
   printf (lcd_putc, "f"Giño;

   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);

   x = read_eeprom ( 0 ) ;
   K = ((float)x / 100.0 ) ;  // k es la constante


este es el pedazo de programa de escritura


menu ( )
{

   leo_tecla ( ) ;
   if ( tecla == "S" ) mem_rec = 1 ;   //apaga el sonido de la alarma
   if ( tecla == "U" && K < 2.0 ) K = K + 0.01 ; //eleva la constante
   if ( tecla == "D" && K > 0.2 ) K = K - 0.01 ; //baja la constante
   if ( tecla == "K" )
   {
      x = (int8)( K * 100.0 ) ;
      write_eeprom ( 0, x );
      lcd_gotoxy ( 0 , 1 ) ;
      printf ( lcd_putc, "K FUE GRABADA !!" ) ;
      delay_ms ( 3000 ) ;
   }
}

desde ya gracias por la ayuda!!!

Desconectado EARC

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 35
RE: cosa rara con la eeprom
« Respuesta #1 en: 15 de Febrero de 2006, 07:57:00 »
Ese problema se me presento alguna vez y lo solucione de la sgte manera:

Grababa en 3 posiciones el mismo dato y cuando lo necesitaba leer comparaba el dato en estas posiciones y si no era el mismo, entonses miraba cual era el que se repite mas veces y asi sacaba el verdadero, y si los tres eran totalmente distintos sacaba el mensaje error e la memoria.

Tambien puedes hacer el mismo proceso despues de grabar y  asi asegurarte que realmente se graba lo que era.

Saludos desde COLOMBIA.Giño

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: cosa rara con la eeprom
« Respuesta #2 en: 15 de Febrero de 2006, 08:17:00 »
Buenas!!!!ami me pao algo similar, y bueno probe grabandolo en hexadecimal los datos y desde que hice eso ya nunca mas me dio problemas!no se por que.....jeje peor bueno a los ejemplos 51 y 52 me remito del post Ejemplitos en C para 16F648A
Ahh!y tambien declare las variables como indica el CCS tanto para el valor como para la direccion de memoria:
Codigo:

   BYTE   address,value;



Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #3 en: 15 de Febrero de 2006, 12:28:00 »
a ver si entendi:

decis que debo guardar y leer la informacion en la eeprom en forma hex

esto quiere decir que en mi caso es el banco 0 entonces la lectura seria:

read_eeprom(0x00)

ahora ,con respecto al valor de grabacion de la direccion es 0 no hay problema,pero si en el caso del value si mi constante es  tipo float ej:0,63 para grabarla como hex

tendria que multiplicarla por 100 para poder guardar 63, que en hex seria 0x3f

y luego cuando me devuelva 3f en la lectura de la eeprom tendria que hacer la conversion inversa para meterla en los calculos como 0,63?

es eso correcto?

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #4 en: 15 de Febrero de 2006, 12:40:00 »
y no encuentro la forma de pasar de hex a decimal y de decimal a hex ,en el primer caso para poder cargar la variable,y en segundo caso si yo le mando al operario en el display del lcd en hex,le va a agarrar un infarto.....

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: cosa rara con la eeprom
« Respuesta #5 en: 15 de Febrero de 2006, 13:46:00 »
¡No soy el único!

Mientras estaba realizando mi Ejemplito 16F876A: Desde el PC a una EEPROM I2C y viseversa a través de mi PIC noté algunas cosas raras al enviar datos a la EEPROM ...

supuse que eran despistes míos al escribir el comando de escritura que enviaba al PIC, aumenté un poco el retardo que entre la escritura de un byte y  el siguiente y me pareció que estaba arreglado ...

pero al leer este hilo he vuelto ha hacer pruebas mas en detalle y ...

en efecto, de vez en cuando escribe lo que le da la gana, y con mi programa es mas usual que el byte que falla sea el primero.

En fin, creo que tendré que investigar mas a fondo qué leches le pasa a esto de las EEPROM.

 
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #6 en: 15 de Febrero de 2006, 14:29:00 »
redpic: podrias decirme para cotejar si los valores que enviabas a la eeprom estaban escritos en decimal o en hexadecimal?

vzener me comenta que lo soluciono colocando los valores de escritura en hexa

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: cosa rara con la eeprom
« Respuesta #7 en: 15 de Febrero de 2006, 14:48:00 »
En Hex. La dirección se la envio como una cadena de caracteres ascci y al recibirla la convierto en el valor hex correspondiente. El byte a escribir es directamente el caracter recibido, en ascci, por la rs232.

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: cosa rara con la eeprom
« Respuesta #8 en: 15 de Febrero de 2006, 16:24:00 »
Buenass yo lo solucione declarando las variables como estaban en los ejemplos del CCS y pasandolo por la funcion gethex1() y gethex() de la ibreria input.c aunque la modifique para simplemente introducir valores correctos...vamos en los ejemplitos estan puestas!


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #9 en: 15 de Febrero de 2006, 16:44:00 »
tengo el css 3.22 y no puedo abrir la ayuda(estoy meado por los perros!)

alguna idea???

es por que quiero ver la sintaxis de gethex

desde ya gracias

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: cosa rara con la eeprom
« Respuesta #10 en: 15 de Febrero de 2006, 16:46:00 »
Hombre si no quieres ver la sintaxis de la funciones que te he emncionado directamente en el CCS pasate por el post de ejemplitos en c, creo recordar en la pagina 12(actualmente es la ultima) donde veras mis modificaciones para el uso correcto de los valores a introducir en la eeprom, ya sea interna o externaGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #11 en: 15 de Febrero de 2006, 16:47:00 »
ok la miro y cualquier duda ....

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: cosa rara con la eeprom
« Respuesta #12 en: 15 de Febrero de 2006, 16:49:00 »
Aqui estaremos!jejeGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
RE: cosa rara con la eeprom
« Respuesta #13 en: 15 de Febrero de 2006, 17:05:00 »
estimado Vzener:

disculpa las molestias que te ocasiono ,pero necesito que si podes veas como en mi ejemplo puedo hacer la conversion de float a hex en la grabacion y lectura de la eeprom.

te pido esto porque estoy, luego de un despido de una empresa en la que trabajaba como visitador medico,tratando de salir a flote con el diseño de estos equipos.

sucede que este equipo ya esta instalado pero tienen el problema con ese tema y quisiera resolverselos.

desde ya gracias!

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: cosa rara con la eeprom
« Respuesta #14 en: 15 de Febrero de 2006, 17:15:00 »
No te preocupe no son molestias!vamos haber es raro lo de la eeprom pero parece ser que tanto al amigo RedPic como ati y ami nos sucede, que grabamos y cuando la leemos pues....no da el valor siempre correcto, eso despues de comerme la cabeza como tu lo que hice fue, antes de meterme de lleno en realizar yo una propia libreria, es mirar en los ejemplos que trae incluido el CCS, donde vi que usaban la libreria input.c con las funciones que te he mencionado, dichas funciones trabajan bien, simplemente las adapte para que solamente se permitieran en la lectura los datos correctos referente a 256k que es la memoria eeprom interna del 16F648A y la memoria externa 24LC256, y la verdad que despues de hacerlo tal como lo hice en los dos ejemplos que postee pues funcionaron de maravilla, bueno esto simplemente te lo digo para que sepas donde encontre la informacion y en que me base para realizarla y adaptarla a mis programas.

Con respecto a tu programa, veo que simplemente necesitas una posicion de memoria eeprom interna del pic y que la variable que almacenas es tipo float, es decir puede contener un numero decimal, mi pregunta es, ¿cuales son los rangos de la variable almacenar? es decir su valor minimo y su valor maximo, te digo esto porque en caso que dicha variable sea siempre tipo decimal(es decir nunca sea un numero entero) pues podemos grabarla en el pic mediante las funciones que te he mencionado (getchex() y gethex1()) y para visualizarlo pues leriamos y antes de mostrar dividiriamos por 100, asi mostrariamos la variable en decimalGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte


 

anything