Autor Tema: eeprom inicializada en tiempo de programación del pic  (Leído 1667 veces)

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

Desconectado naho

  • PIC12
  • **
  • Mensajes: 62
eeprom inicializada en tiempo de programación del pic
« en: 19 de Diciembre de 2007, 20:12:56 »
Hola a todos:

Estoy simulando un termostato con un pic.
Guardo en eeprom el valor de la temperatura que deseo tener. Con un LM35 capturo la actual y en función de esta enciendo o apago el calentador.

Mi pregunta es la siguiente:

Hay algún modo de definir en el programa (CCS C) el valor de una variable en la eeprom (En tiempo de programación del pic)  en este caso la temperatura deseada.
De modo que la primera vez que se ejecute el programa la eeprom ya tengan un valor por defecto y no obligar a cargarla la primera vez que se use.

Muchas gracias.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: eeprom inicializada en tiempo de programación del pic
« Respuesta #1 en: 19 de Diciembre de 2007, 20:21:57 »
Si, se puede!

Usa #ROM para eso:

Código: [Seleccionar]
#include <16F877A.h>
#FUSES NOWDT        //No Watch Dog Timer
#FUSES LP           //Low power osc < 200 khz
#FUSES NOPUT        //No Power Up Timer
#FUSES NOPROTECT    //Code not protected from reading
#FUSES NODEBUG      //No Debug mode for ICD
#FUSES NOBROWNOUT   //No brownout reset
#FUSES NOLVP        //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD        //No EE protection
#FUSES WRT_50%      //Lower half of Program Memory is Write Protected
//
#use delay(clock=8000000)
//
void main(){
   #rom  0x2100={01,02,03,04,05,06,07}; //  Datos a guardar en la EEPROM
}

http://www.ucontrol.com.ar/wiki/index.php?title=Ejemplos_CCS_-_008_EEPROM_interna_1

Saludos!

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado naho

  • PIC12
  • **
  • Mensajes: 62
Re: eeprom inicializada en tiempo de programación del pic
« Respuesta #2 en: 19 de Diciembre de 2007, 20:40:08 »

Que velocidad!!!



Pero ahora tengo otro problema... Si meto ese código en el main(...  Si es usuario modifica la temperatura prefijada de la eeprom. cada vez que se apague y se encienda el termostato se volvería a pasar por el main y la programación inicial volvería ¿verdad?

¿se puede sacar ese código del main?
Me gustaría tener como si fuera una programación por defecto de fábrica. Pero a partir de ahí poder cambiarla yo y que la de fábrica ya no vuelva.

¿Es mucho pedir?  :mrgreen:  De todas formas, eso ya es rizar el rizo. Con el código que me has pasado voy que chuto.

Muchas gracias.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: eeprom inicializada en tiempo de programación del pic
« Respuesta #3 en: 19 de Diciembre de 2007, 20:43:31 »
eso es exactamente lo que hace la directiva #rom, es como algo qeu viene de fabrica, ya que se coloca en la cabecera de preferencia (al menos yo siempre lo use en la cabecera, despues del delay(clok=...))

y ya en el main lo puedes leer y hasta modificar

talvez aclarar algo del codigo que dejo aitopes
0x2100={...,...,...}
dice que desde la posicion cero de la eeprom comienza a asignar los datos correspondientes, claro que tb puedes usar cualquier direccion de tu preferenciao de acuerdo a necesidades, ej
0x2156={0x78} // guardo 0x78 en la posicion 56 de la eeprom

« Última modificación: 19 de Diciembre de 2007, 20:50:50 por Cryn »
.

Desconectado naho

  • PIC12
  • **
  • Mensajes: 62
Re: eeprom inicializada en tiempo de programación del pic
« Respuesta #4 en: 19 de Diciembre de 2007, 20:53:31 »

Sois unos artistas.

Muchísimas gracias a los 2.  :-)