Autor Tema: Preguntas sobre eeproom  (Leído 1318 veces)

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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Preguntas sobre eeproom
« en: 30 de Octubre de 2015, 08:31:21 »
Me gustaria saber si este programa es fiable a la hora de comprobar el numero de veces que
se puede escribir en una eproom Se trata de poner todo bit a 0 (por si trata con logica negada) y luego todos a 1
Se supone que si esta bien la lectura debe coincidir con lo que se escribio

Código: [Seleccionar]
void erro(int1 lectura);
unsigned int32 contador=0;
unsigned int16 posicion,dat16;
unsigned int8 fallos=0;

void main(){

posicion=100;
lcd_init();
 

while(1){
write_eeprom(posicion,0x00);//poner todos los bit a 0
dat16=read_eeprom (posicion);
if (dat16!=0)  { erro(0);  }//comprobar que todos estan a 0
write_eeprom(posicion,0xff);//poner todos los bit a 1
dat16=read_eeprom (posicion);
if (dat16!=255) { erro(1); }//comprobar que todos estan a 1
contador++;
lcd_gotoxy(1,1);
printf(lcd_putc,"%Lu lecturas correctas %u fallos",contador,fallos);
} }

void erro(int1 lectura){
 lcd_gotoxy(1,2);
 printf(lcd_putc,"Fallo la puesta a %x de la posicion %Lu",lectura,posicion);
 fallos++;
 }

El problema de hacerlo con un simulador como Proteus8 es que aqui todo es estatico nunca se quema nada a realizadomiles de "write" y nunca falla nada
Otra es que Proteus quiero saber si se puede acceder a los pines alimentacion de los componentes
O al menos simular un corte de energia total La intencion es que un 16f877 guarde en este momento datos primordiales en su eeproomTengo algun esquema de fuentes de alimentacion que se vasa en que cuando recive un 0 se encarga de dar corriente alcircuito mediante un condensador Supongo que sera parecido a las luces de emergencia exit-salir de ciertos edificioscuando hay un apagon, solo que en este caso se trata de baterias El "handica" esta en que en estos casos las luces pueden tardar no tiene consecuencia que se pase 3 segundos sin actuar Pero en mi caso es necesario el instantaneo



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Preguntas sobre eeproom
« Respuesta #1 en: 30 de Octubre de 2015, 08:42:30 »
Lo unico que vas a lograr ahi es quemar la posicion de memoria de la EEPROM.

Tu "grabado" estaria ejecutandose siempre. Y si queres hacer algo cuando se corte la energia, deberias de tener un sistema exterior que levante una interrupcion y habilite ( en caso que el main no dure mucho ) o grabe en la misma interrupcion. Ademas un circuito que evite que la energia se la pueda llevar otro dispositivo como lo es un LCD y su backligth, entre otros.

Por que grabar 2 veces ?, por que grabar 1 dato cualquiera?
Directamente podrias hacerte una funcion de escritura de la EEPROM. Que escriba el dato, lo lea y de existir un error vaya a otra funcion. Sino asi vas a quemar la posicion de memoria 0x00 por nada, ya que estarias grabado 2 veces por cada ciclo while. Y cuando no funcione mas la posicion de memoria 0x00, entonces vas a suponer que todo no funciona.

Código: C
  1. void Escribir_eeprom(int8 dato,int8 posicion) {
  2.   write_eeprom(posicion,dato);
  3.   if( dato != read_eeprom(posicion) ) Error_escritura();
  4. }
  5.  
  6. void Error_escritura(){
  7.    // Aca entraria si existe un error
  8. }

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:Preguntas sobre eeproom
« Respuesta #2 en: 30 de Octubre de 2015, 15:20:18 »
Si queres medir la cantidad de veces que una celda puede ser sobre escrita, funcionaría ....

Saludos !

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:Preguntas sobre eeproom
« Respuesta #3 en: 30 de Octubre de 2015, 18:08:29 »
Citar
Ademas un circuito que evite que la energia se la pueda llevar otro dispositivo como lo es un LCD y su backligth, entre otros.
Si la corriente solo deberia centrarse solo en el pic. Caso tipo parecido en un motor de explosion donde el sistema arranque evita encender las luces para que toda la potencia de la bateria valla a la bujias que es lo unico importante en el momentopero estoy en las mismas tendria que mirar otro Este simulador no me permite acceder a los pines de alimentacion de ningun componente


 

anything