TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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.
-
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
-
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!
-
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:
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.
-
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:
-
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
-
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 !
-
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.
-
Hola a todos, tengo una duda??
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??
-
La memoria ram es infinitamente leíble y escribible.
-
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?
-
Y crea un arreglo para guardar los string!!
Esto ya lo has implementado, estoy seguro ;-)
Saludos!
-
gracias..
-
Y crea un arreglo para guardar los string!!
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.