Que tal gente del foro, tengo un problema con los datos de la eeprom interna del pic18f2550 y es que se me borran de un momento a otro cuando enciendo mi circuito.
Les cuento cuando programo mi pic inicio guardando un valor en eeprom
Uso esa interrupción ya que mi PIC guarda en la eeprom solo cuando es apagado el sistema de lo contrario si guardara a cada rato, acabo con la cantidad de programacion bueno en fin... para eso utilizo un circuito básico que dure un tiempo para que guarde antes de apagar, y funciona ya que lo he probado, en en el otro gráfico esta el pic, el transistor básicamente es el que detecta el corte de energía, bueno ahora si les cuento mi circuito es un odometro y debe conservar los datos de kilometraje, es decir apago el auto después de un recorrido al encender los datos están, pero aveces no, aveces lo enciendo y el recorrido en pantalla aparece en ceros, como si se reseteara la eeprom, y no debería ser así por que debería volver al valor que contiene conteo si se reseteara, Disminuí de 10k a 2k la resistencia del MCLR ya por ahí leí que se hace para que no se reseteara el pic, pero no funciono.
El programa utiliza la int_ext, para contar los pulsos del sensor que trae el auto, int_ext_1, para guardar en eeprom cuando se apaga el sistema, un lcd para mostrar los datos. Voltaje de alimentacion 12VDC, coloque buenos filtros en mi fuente puesto que se trata de un auto que contiene una alternador y todo eso, tambien coloque en la fuente la fuente un diodo supresor de picos el p6kexx.
Gracias
la eeprom se lee cuando inicia el sistema:
Les cuento cuando programo mi pic inicio guardando un valor en eeprom
Código:
#INT_EXT1
void ext1_isr()
{
disable_interrupts(INT_EXT);
distancia=conteo;
write_int32_eeprom(0,distancia);
clear_interrupt(INT_EXT1);
clear_interrupt(INT_EXT);
enable_interrupts(INT_EXT);
}
conteo=2500000;
El programa utiliza la int_ext, para contar los pulsos del sensor que trae el auto, int_ext_1, para guardar en eeprom cuando se apaga el sistema, un lcd para mostrar los datos. Voltaje de alimentacion 12VDC, coloque buenos filtros en mi fuente puesto que se trata de un auto que contiene una alternador y todo eso, tambien coloque en la fuente la fuente un diodo supresor de picos el p6kexx.
Gracias
la eeprom se lee cuando inicia el sistema:
Código:
if (read_int32_eeprom(0)<12345678900)
{
conteo=(read_int32_eeprom(0));
metros=conteo*0.1; // formula nada mas
lcd_gotoxy(1,2); //segunda linea lcd 2 x 16 muestra el recorrido
printf(lcd_putc,"Kms : %03.1f ",metros);
Lcd_putc( "\b");
}