Autor Tema: Declaración de variables en memoria de programa [C18]  (Leído 3154 veces)

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

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Declaración de variables en memoria de programa [C18]
« en: 16 de Junio de 2009, 08:46:17 »
Hola,

A ver si me podeis ayudar con un programa escrito en C (MPLAB C18). Quiero utilitzar unas variables para guardar valores aunque se desconecte el pic de la alimentación. He estado probando, por ejemplo, configurar el estado de un puerto donde tengo conectados leds. Le entro el estado que quiero por el VB, lo guardo en una variable y lo paso al puerto y se encienden los leds que tocan, pero al desconectar la alimentación, cuando lo vuelvo a encender no se ha guardado ese valor. Yo lo declaro como un unsigned char, y he probado con la directiva #pragma irom cero que es, pero no se como hacerlo. Parece ser que las variables que se declaran con el C18 las pone en memoria RAM?

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Declaración de variables en memoria de programa [C18]
« Respuesta #1 en: 16 de Junio de 2009, 11:38:39 »
Colocando el parámetro rom al declarar la variable, esta se guarda en la memoria de programa:

rom unsigned char x;
No contesto mensajes privados, las consultas en el foro

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Declaración de variables en memoria de programa [C18]
« Respuesta #2 en: 16 de Junio de 2009, 15:25:46 »
Muchas gracias por la respuesta Suky! Mañana lo probaré! Entonces si no pones rom el compilador te guarda la variable en memoria de datos por defecto?

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Declaración de variables en memoria de programa [C18]
« Respuesta #3 en: 27 de Junio de 2009, 15:32:34 »
Subo de nuevo el post porque probé de poner la etiqueta rom delante de la variable pero al asignar un valor no se guarda ni hace nada, en cambio si no pongo la etiqueta si que cambia el estado del puerto, pero al desconectar la alimentación no se guarda ese valor, y necesito guardarlo! Esto quiere decir que no puedo modificar el valor de una variable declarada en memoria de programa? Alguna sugerencia?

Gracias!
 

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Declaración de variables en memoria de programa [C18]
« Respuesta #4 en: 27 de Junio de 2009, 19:27:39 »
Hola, las variables declaradas en ROM mantienen el valor desde el momento que las compilas y no se pueden modificar, si vos necesitas que un dato persista en un corte de energia necesitas un medio no volatil, puede ser una EEPROM externa o si el micro tiene Flash y esta puede ser programada sin necesitar un hardware especial tambien lo podrias implementar.

Saludos !

Desconectado josep

  • PIC10
  • *
  • Mensajes: 17
Re: Declaración de variables en memoria de programa [C18]
« Respuesta #5 en: 28 de Junio de 2009, 04:57:17 »
Estoy utilizando el PIC18F97J60, que tiene memoria flash. Ahora estaba probando con funciones que pasan datos de memoria de datos a programa y al reves pero tampoco consigo que funcione.

Saludos!


 

anything