Autor Tema: Variables almacenadas en EEPROM  (Leído 2713 veces)

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

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Variables almacenadas en EEPROM
« 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.
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCad ¡AQUÍ!

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Variables almacenadas en EEPROM
« Respuesta #1 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
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Variables almacenadas en EEPROM
« Respuesta #2 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!
No contesto mensajes privados, las consultas en el foro

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Variables almacenadas en EEPROM
« Respuesta #3 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.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Variables almacenadas en EEPROM
« Respuesta #4 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:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Variables almacenadas en EEPROM
« Respuesta #5 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
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Variables almacenadas en EEPROM
« Respuesta #6 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 !

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Re: Variables almacenadas en EEPROM
« Respuesta #7 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.
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCad ¡AQUÍ!

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Variables almacenadas en EEPROM
« Respuesta #8 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??

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Variables almacenadas en EEPROM
« Respuesta #9 en: 09 de Diciembre de 2009, 11:33:15 »
La memoria ram es infinitamente leíble y escribible.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Variables almacenadas en EEPROM
« Respuesta #10 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?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Variables almacenadas en EEPROM
« Respuesta #11 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Variables almacenadas en EEPROM
« Respuesta #12 en: 09 de Diciembre de 2009, 13:46:50 »
gracias..

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Variables almacenadas en EEPROM
« Respuesta #13 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.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE


 

anything