Autor Tema: Borrado aleatorio de valores en la EEprom del PIC  (Leído 145 veces)

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

Desconectado PicMinor

  • PIC16
  • ***
  • Mensajes: 157
Borrado aleatorio de valores en la EEprom del PIC
« en: 05 de Noviembre de 2019, 08:57:36 »
Saludos al foro!

En un circuito en el que tengo un PIC18F2580 grabo unos valores de ajuste en la eeprom para el proceso. En algunos circuitos, (no muchos afortunadamente) he comprobado que aparecen borrados (0xFF) algún valor de los que he grabado previamente.

Durante el proceso de funcionamiento no se graban datos en la EEprom, sólo se hacen lecturas.

Ya me tiene mosqueado este problema y no veo de dónde puede venir. ¿Alguien tiene alguna sugerencia?

Gracias por anticipado.

Desconectado remi04

  • PIC18
  • ****
  • Mensajes: 256
Re:Borrado aleatorio de valores en la EEprom del PIC
« Respuesta #1 en: 05 de Noviembre de 2019, 10:13:16 »
Lo mas habitual que suele matar datos en la eeprom y tambien incluso en la flash es ruido electromagnético.

  Especialmente si en la placa hay actuadores tipos relés, motores, etc.  También si la fuente que alimenta la placa es de tipo switching los cuales como no sean buenos emiten mucho ruido eléctrico y electromagnético.

  Si es así, para actuar sobre relés te recomiendo usar driver tipo ULN2803A que tiene sus entradas totalmente aisladas y aparte las salidas hacia motores o cosas inductivas que tengas ponles una ferrita al cable y si puedes, trenza el cable.

  También, diseñar la placa con un buen plano de tierra en la cara trasera donde está el micro ayuda un montón, y también rodear al micro de otro plano de tierra.

  Mira también en los fuses de ese micro si hay alguno que habilite la protección contra escritura de datos en la eeprom interna y como el programa dices que no escribe nada pues déjaselo activado.

 Saludos.

Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 256
Re:Borrado aleatorio de valores en la EEprom del PIC
« Respuesta #2 en: 05 de Noviembre de 2019, 22:17:55 »
Hola, en lo personal, jamás he tenido problemas de ese tipo.
Ahora pregunto, cómo realizas la grabación?
Envías un dato y esperas un tiempo?
O esperas la interrupción por fin de grabación?
Hay un bit de registro que configura la habilitación de escritura conocida cómo WREN.
Por otro lado, hay que corroborar que tú programa no esté realizando alguna grabación imprevista.
« Última modificación: 05 de Noviembre de 2019, 22:21:22 por Robert76 »

Desconectado PicMinor

  • PIC16
  • ***
  • Mensajes: 157
Re:Borrado aleatorio de valores en la EEprom del PIC
« Respuesta #3 en: 06 de Noviembre de 2019, 04:47:07 »
Gracias por las respuestas!

No puedo activar el fuse de protección de datos porque sí que hay que escribir en la eeprom en otra fase del proceso, aunque donde he detectado el problema no se escribe nada.

En cuanto al ruido es mínimo ya que se trata de un circuito alimentado a batería y con abundantes condensadores de desacoplo.

Lo más llamativo es que los datos "dañados" son únicamente los que leo desde el programa, al grabar el micro escribo casi toda la eeprom con los valores de los parámetros y el resto lo relleno con ceros. Pues cuando aparece un micro corrupto los únicos datos que se han borrado son los parámetros que leo, por supuesto no se borran todos, sólo uno y no siempre el mismo. Lo que también pasa, pero no sé si será casualidad, es que los datos que se borran están en direcciones relativas acabadas en 0 (00,10,20, etc) También escribo datos en las posiciones 04,14,24, etc y en las 08,18,28,etc y en esas posiciones nunca (hasta ahora) ha aparecido el problema.

La verdad es que me tiene totalmente desconcertado.
« Última modificación: 06 de Noviembre de 2019, 04:49:26 por PicMinor »

Desconectado Robert76

  • PIC18
  • ****
  • Mensajes: 256
Re:Borrado aleatorio de valores en la EEprom del PIC
« Respuesta #4 en: 06 de Noviembre de 2019, 08:06:26 »
Prueba con otro micro.

Desconectado remi04

  • PIC18
  • ****
  • Mensajes: 256
Re:Borrado aleatorio de valores en la EEprom del PIC
« Respuesta #5 en: 06 de Noviembre de 2019, 19:58:24 »
Usa el bit WREN  (bit 2 del registro EECON1)

  Cuando tengas que grabar lo pones a cero, pero cuando termines ponlo a 1.

  Con ello inhibes la posibilidad de escritura cuando no toca.

 Tienes que ponerlo a 1 también al dar alimentación ya que por defecto este bit se inicia a cero.

  Prueba así. A ver.... 

   Si no ya, métodos contundentes como implementar una triple redundancia si te sobra espacio suficiente como para triplicar tus datos en páginas distintas y luego hacer rutinas de comprobación y restauración automática de datos corruptos.

  Sería como un Raid de discos duros.


 

anything