Autor Tema: MEMORIA NO VOLATIL  (Leído 3814 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado er_clemen

  • PIC10
  • *
  • Mensajes: 42
MEMORIA NO VOLATIL
« en: 30 de Julio de 2003, 19:56:00 »
Me gustaria que me aclararan un poquito un tema:

Para guardar el valor de determinadas variables en un programa (p.e. el valor de una variable contador), sin que este valor se pierda si se va el suministro electrico, entiendo que debo almacenar estas variables en una memoria no volatil, creo la EPROM.

El PIC16f84 dispone de memoria EPROM interna, sin embargo el manual (en inglés) del Pic Basic Pro, no deja claro como se accede a ella e insinua algo asi como que hay que añadir una EPROM externa.

¿Alguien podría aclararme esto?

MUCHAS GRACIAS.

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: MEMORIA NO VOLATIL
« Respuesta #1 en: 31 de Julio de 2003, 07:26:00 »
Hola er_clemen,

A ver si te puedo ayudar.
El PIC 16f84, además de la RAM y la memoria FLASH de programa, tiene 64 Bytes de memoria EEPROM que es no-volatil, como tu dices, esta zona de memoria es idónea para almacenar constantes o las variables de un contador. Si necesitaras mucha capacidad de almacenamiento, y con esta epprom interna no te basta, entonces podrías usar una epprom externa en serie, (I2C, por ejemplo)

Puedes acceder a la memoria EPPROM del PIC, escribir y leer, tanto en asm como en PIC Basic. Yo el PIC Basic no lo controlo mucho (...por no decir nada...), pero creo que las rutinas para grabar en la EPPROM del PIC deben invocarse con la sentencia "EEPROM"... y luego hay otra que graba valores en tiempo de ejecución, "WRITE". Te aconsejo que mires estas sentencias en el manual, o bien que te ayuden los chicos "basic" del foro... yo pedaleo con el ensamblador...

Un saludo!
Elena

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: MEMORIA NO VOLATIL
« Respuesta #2 en: 03 de Agosto de 2003, 19:46:00 »
La EEPROM interna del F84 se lee en PBP con

READ midireccion, midatoleido

siendo midireccion y midatoleido variables de tipo byte

Para escribir, como ha dicho Elena con

WRITE midireccion, midatoescrito

Para escribir direcciones rapidamente debes parar al micro durante 10 milisegundos para que la eeprom termine de escribirse correctamente.

<<No hay mas informacion>>

Saludos
Ricky

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: MEMORIA NO VOLATIL
« Respuesta #3 en: 04 de Agosto de 2003, 09:58:00 »
Creo que cometes un error, RGL.
PBP tengo entendido no necesita que hagas la pausa de 10 mseg para grabar, pues la instruccion se ocupa ya de hacerla.
Como ejemplo yo grabo dos bytes uno tras otro , para guardar una word, y jamas lo necesite.

Utilizo el siguiente codigo, y funciona OK.

write TempHigh, MaxTemp.byte0     "guarda el valor de maxima temperatura
write TempHigh + 1, MaxTemp.byte1    "de calibracion del instrumento

La referencia del la direccion de TempHigh la hago de la siguiente forma, al inicio del programa:

TempHigh CON 10
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: MEMORIA NO VOLATIL
« Respuesta #4 en: 05 de Agosto de 2003, 21:25:00 »
No he analizado el codigo en ensamblador que genera este comando, pero si lo hace asi seria una chapuza y grande, pues existen diferentes dispositivos 24LC512 (por ejemplo) entre otros que tienen un tiempo de grabacion de 5 ms, con lo cual estamos perdiendo un precioso tiempo a lo tonto

Seria bueno aclarar el tema

Saludos
Ricky

Desconectado jorgeansuini

  • PIC18
  • ****
  • Mensajes: 340
RE: MEMORIA NO VOLATIL
« Respuesta #5 en: 05 de Agosto de 2003, 21:35:00 »
Buenas:
Por lo que entiendo,estamos hablando de diferentes memoria, una es la eepron interna del micro, que necesita unos 10mseg para grabarse y el pbp es quien maneja esos tiempos ,la otra eepron externa, a su vez se la graba con una instruccion distinta de pbp y vuelve a ajustar los tiempos.
Saludos
Jorge

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: MEMORIA NO VOLATIL
« Respuesta #6 en: 06 de Agosto de 2003, 08:46:00 »
RGL:
No hay que programar tiempos de espera para leer la EEPROM interna, lo hace solo el PBP, tal como asevera Jorge.
En cuanto a la EEPROM externa, se lee con I2CREAD y se escribe con I2CWRITE, donde el PBP aconseja 10 mseg de espera y tambien referirse a la documentacion del dispositivo que utilizes.
En mi caso de utilizarlo conservaria los 10 mseg , aun utilizando un dispositivo de menor tiempo, porque aqui en latinoamerica tenemos que ver si mañana conseguimos el mismo y tiene que funcionar cualquiera.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: MEMORIA NO VOLATIL
« Respuesta #7 en: 06 de Agosto de 2003, 19:42:00 »
Bien muchachos me pasé de frenada  con la memoria externa, pues aunque es eeprom es externa y se controla de diferente modo.

En el manual dice:
" Each WRITE is self-timed and takes about 10 mseg to execute on a PICmicro".

No hay nada como consultar el manual.
Disculpas por el error.

Saludos
Ricky