TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ? en 30 de Junio de 2010, 00:16:19

Título: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: ? en 30 de Junio de 2010, 00:16:19
hola a todos
en estos momentos me encuentro desarrollando un metro contador de energia, para ello estoy usando un PIC16F876A, un cuarzo de 20MHz y el compilador CCS v3.249, todo iba bien hasta que se me acabo la memoria RAM del pic, es decir cuando le declaro una variable nueva del tipo que sea me pone el siguiente error
Not enough RAM for all variables

a mi entender es que se acabo la RAM interna del PIC, ahora bien en el hardware uso una memoria eeprom 24c04, para almacenar algunas variables como el consumo, el voltaje pico y todas esas cosas, para luego poder descargarlas a un pc via serie, por suerte no llego a usarla completamente, es decir de los 4K de la eeprom solo estoy usando algunos registros...
mi pregunta es la siguiente
se puede usar la eeprom 24c04 como una extencion de la ram interna del PIC??...
es decir, se podria usar la eeprom para declarar las variables que me faltan y usarlas desde alla ???

esta es la primera ves que me ocurre esto en un programa, y no se que hacer, no tengo la mas minima idea, se me ocurrio esta de usar la eeprom porque la tengo a mano y no la uso del todo, pero no se si se podra, es por eso que solicito ayuda, si alguno de ustedes me pudiera aconsejar o sabe donde encontrar informacion se lo agradeceria mucho...
de ante mano muchas gracias por su tiempo y suerte para todos 
 
Título: Re: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: RICHI777 en 30 de Junio de 2010, 13:17:10
Hola, en teoria se puede. Deberias reservar una variable temporaria y podrias usarla para leer/escribir desde y hacia la EEPROM. Igual podrias optimizar el uso de la RAM con uniones. Te paso un link donde se muestra algunas tecnicas, aunque estan orientadas a otra arquitectura conceptualemnte te pueden servir.

http://sistemasembebidos.com.ar/foro/index.php?topic=787.0

Saludos !
Título: Re: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: flacoclau en 30 de Junio de 2010, 14:11:26
Hola ?: Si bien lo puedes implementar, usando la memoria como RAM se te vá a dañar en un corto tiempo, ya que en la hoja de datos en el primer párrafo dice lo siguiente:

1 MILLION ERASE/WRITE CYCLES

Osea en un millón de bucles de tu programa donde el micro sobreescriba una variable en dicha memoria, en esa posición ya no te va a servir más.
Título: Re: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: RICHI777 en 30 de Junio de 2010, 14:37:01
Hola, tenies razon, pero con un simple esquema de wear leveling podes extender la vida útil de la misma.

Saludos !
Título: Re: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: flacoclau en 30 de Junio de 2010, 16:12:02
En realidad hay que saber cuántas veces por segundo se va a sobreescribir dicha o dichas variables en la memoria, y así se sabrá cuanto tiempo va a durar la misma. Se debería manejar con cuidado en el programa para elegir las variables menos utilizadas para almacenarlas allí ya que se quiere usar este sector como RAM.
 Según tengo entendido el sistema que mencionas va corriendo la posición de memoria en la Flash para no reescribir siempre en el mismo lugar. Pero vuelvo a la pregunta inicial: ¿Cuántas veces se debe escribir una variable por segundo en esta flash?
 Suponiendo que haya una sola variable, que ocupe un solo byte, que se deba actualizar cada 1 milisegundo por ejemplo y que la 24c04 tenga 4K libres. esto nos dá 4000 posiciones x 10^6 = 4 x 10^9 escrituras. todo esto dividido por 1000 escrituras por segundo: 4 millones de segundos = 1111 horas = 46,3 días.
Osea en un mes y medio ya no te va a funcionar el artefacto según mi entender. Si me equivoco por favor espero me corrijas.
Saludos!!
Título: Re: Se puede usar la eeprom 24c04 como una extencion de la RAM interna de un PIC ???
Publicado por: RICHI777 en 30 de Junio de 2010, 21:14:03
Hola, tenes razon, es primiordial saber cuantas veces por segundo se va a actualizar esa variable, igual no es posible actualizar cada 1ms porque el tiempo de grabacion de esa E2PROM es de 10 ms. Yo me inclino a hacer un analisis de la memoria y salvar RAM por ese lado.

Saludos !