TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: EdoNork en 07 de Diciembre de 2009, 12:06:39

Título: Variables almacenadas en EEPROM
Publicado por: EdoNork en 07 de Diciembre de 2009, 12:06:39
Hola a todos:

En mi proyecto, tengo unas pocas variables (5 ó 6) almacenadas en la EEPROM del PIC. Estas variables serán prácticamente constantes que no variarán más que en la puesta al punto del sistema en las que el usuario introducirá los valores iniciales y se olvidará de ellas, así que esas posiciones de memoria se escribiran pocas veces a lo largo de la vida del PIC.

Estas variables serán utilizadas dentro del bucle infinito del programa en el PIC y serán leídas constantemente.

Mi pregunta es: ¿merece la pena crear una variable en RAM y cargarla con el valor correspondiente de la EEPROM para no leer ésta constantemente o puedo tirar de EEPROM?

Por lo que he leído las EEPROM no "sufren" con la lectura, pero lo pregunto por si acaso.

Un saludo.
Título: Re: Variables almacenadas en EEPROM
Publicado por: MLO__ en 07 de Diciembre de 2009, 15:40:01
Hola.

Pues creo que consume mas recursos en ROM el usar la función de lectura de la EEPROM que crear en RAM las constantes para usar la función de lectura una sola vez.

Saludos
Título: Re: Variables almacenadas en EEPROM
Publicado por: Suky en 07 de Diciembre de 2009, 15:48:43
Yo crearía una variable RAM, mayor velocidad en el proceso. Además si o si vas a utilizar una variable RAM para trabajar con el dato, así que no te ahorras de nada  :tongue:


Saludos!
Título: Re: Variables almacenadas en EEPROM
Publicado por: migsantiago en 07 de Diciembre de 2009, 16:24:37
Hola

El usar la EEPROM para constantes que cambian y deben mantenerse después de prender y apagar el pic es una buena idea.

El leer esa constante desde la EEPROM no toma mucho tiempo:

Código: [Seleccionar]
     BCF     STATUS, RP0  ; Bank0
      MOVLW   CONFIG_ADDR  ; Any location in Data EEPROM memory space
      MOVWF   EEADR        ; Address to read
      BSF     STATUS, RP0  ; Bank1
      BSF     EECON1, RD   ; EE Read
      BCF     STATUS, RP0  ; Bank0
      MOVF    EEDATA, W    ; W = EEDATA

Por lo que no creo que haya problema si la lees a cada rato desde la eeprom. Podrías hacer una copia de ella en una variable en ram pero solo ahorrarías unos pares de líneas en ASM.
Título: Re: Variables almacenadas en EEPROM
Publicado por: MGLSOFT en 07 de Diciembre de 2009, 17:05:06
Al leer desde EEPROM hay tiempos mas grandes que desde Ram.
Ademas si la variable es cambiado su valor desde el programa y quieres grabarla, antes la comparas con el valor guardado y si son iguales, evitas perder el tiempo grabando nuevamente el mismo dato.
Ademas la cantidad de grabaciones en EEPROM no es infinito, por lo tanto hay que cuidarla. :mrgreen:
Título: Re: Variables almacenadas en EEPROM
Publicado por: ASTROCAR en 07 de Diciembre de 2009, 20:55:18
buenas noches, ahora en cuanto al tema muy importante la pregunta de guardar o manipular datos de variables en la eeprom yo como con consejo y por la experiencia solo uso la eeprom si los datos que guardo en ella quiero que iempre esten presente en el proyecto asi el pic no este en funcionamiento pero si en tu caso los valores que mensionas lo introducen al principio que corras el pic no veo la necesidad de guardarlos en la eeprom usalos en la ram y asi no limitas la escritura de la eeprom.

Saludos y es mi opinion.
Atten. Alexander Santana.
Venezuela-Barcelona
Título: Re: Variables almacenadas en EEPROM
Publicado por: RICHI777 en 07 de Diciembre de 2009, 23:23:08
Hola, les comento mi experiencia, si el micro tiene RAM suficiente, dentro de la rutina de inicializacion cargo los valores desde EEPROM hacia RAM. Pero en estos momentos estoy trabajando con un micro de muy poca RAM con lo cual no puedo darme esos lujos, lo que hice es implementar funciones que tratar de buscar en la zona de EEPROM de configuracion y me devuelven un puntero a los datos si existen o NULL en caso contrario. En mi caso hice esto porque tengo mucho mas ROM que RAM.

Saludos !
Título: Re: Variables almacenadas en EEPROM
Publicado por: EdoNork en 08 de Diciembre de 2009, 09:32:39
Hola a todos.

Lo primero: gracias.

Crearé la variable y copiaré de la EEPROM a la RAM, aunque solo sea por velocidad de proceso.

Gracias de nuevo, me habéis sido de mucha ayuda.

Un saludo.
Título: Re: Variables almacenadas en EEPROM
Publicado por: Medusa en 09 de Diciembre de 2009, 11:25:02
Hola a todos, tengo una duda??

Citar
Special Microcontroller Features:    
• 100,000 erase/write cycle Enhanced FLASH program memory typical    
• 1,000,000 erase/write cycle Data EEPROM    
memory    
• FLASH/Data EEPROM Retention: > 40 years    
Segun el datasheet del pic18f452 la Memoria FLASH puede ser escrito hasta 100,000 veces sin problemas y la memoria EEprom 1,000,000 pero no dice nada de la memoria RAM o esta se considera como flash??
Título: Re: Variables almacenadas en EEPROM
Publicado por: migsantiago en 09 de Diciembre de 2009, 11:33:15
La memoria ram es infinitamente leíble y escribible.
Título: Re: Variables almacenadas en EEPROM
Publicado por: Medusa en 09 de Diciembre de 2009, 13:32:28
Estoy haciendo una aplicacion con un pic18f452 en la el pic captura la trama de un GPS y lo almacena junto con otros datos (entrads analogicos) en su eeprom interna para luego transmito a la PC usando el UART, esto se realiza cada 2 minutos, si me proyecto en el tiempo al cabo de 2 anos de uso continuno el pic quedara con la eeprom interna obsoleta, entonces mejor seria guardar estos datos en la memoria RAM del pic, esto es correcto?, de ser asi podrian darme un ejemplo de como grabar y leer una cadena de caracteres en la memoria ram?
Título: Re: Variables almacenadas en EEPROM
Publicado por: Suky en 09 de Diciembre de 2009, 13:43:17
Y crea un arreglo para guardar los string!!

Código: C
  1. char Buffer[50];

Esto ya lo has implementado, estoy seguro  ;-)

Saludos!
Título: Re: Variables almacenadas en EEPROM
Publicado por: Medusa en 09 de Diciembre de 2009, 13:46:50
gracias..
Título: Re: Variables almacenadas en EEPROM
Publicado por: ASTROCAR en 09 de Diciembre de 2009, 20:44:12
Y crea un arreglo para guardar los string!!

Código: C
  1. char Buffer[50];

Esto ya lo has implementado, estoy seguro  ;-)

Saludos!
Exacto donde guardas la variables de tu proyecto.

Saludos y estamos en contacto lo malo es que por cualquier reset del pic ya pierdes los valores de esas variables ya que la ram es una memoria que al cortarle la corriente o hacerle un reset pierde su valores en la cual se estan manejando en ese momento.

Atten. Alexander Santana.
Venezuela-Barcelona.