Autor Tema: EEPROM Tiempo de vida  (Leído 3935 veces)

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

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
EEPROM Tiempo de vida
« en: 17 de Febrero de 2020, 18:44:00 »
Que tal, amigos. Una consulta, tengo una aplicación en ASM donde requiero estar guardando 40 variables de manera continua en la eeprom interna del micro. Pero me causa un poco de temor el numero de ciclos de escritura lectura. Entonces quiero que me recomienden que hacer, ya que el hardware esta incorporado solo con un micro 18f46k22. No puedo agregar nada externo.

Mis premisas son:

- Escribir la EEPROM cada 15 Minutos? Como es un sistema que puede trabajar las 24 horas continuas esto creo me ayudaria mas a que sea estable.

- O, la segunda opcion seria cada minuto para tener el mejor numero actualizado en caso de que se desconecte el sistema.

Practicamente es un contador de pulsos con un sensor inductivo y tiene un timer que programe en segundos.


Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:EEPROM Tiempo de vida
« Respuesta #1 en: 17 de Febrero de 2020, 19:12:45 »
¿De cuanto es la eeprom y cuantos bytes grabarás?

   Se suelen garantizar hasta 1.000.000 de ciclos de escritura por cada byte.

 Partiendo de la base de que las eeprom deberían ser usadas para cosas muy concretas y con información que no esté en continuo refresco, a las malas:

  Si tienes por ejemplo 256 bytes y solo grabas 10 de ellos lo que puedes hacer es grabar en forma secuencial toda la eeprom entera, es decir.

  Primera grabación en posiciones de 0 a 9
  Segunda grabación en posiciones de 10 a 19
 Y así sucesivamente. Luego empiezas otra vez de cero sobreescribiendo.

  El programa debe saber en todo momento donde ha grabado lo último al momento de leer.  Es muy fácil de implementar.

 Así aumentas la vida útil por que repartes la escritura a lo largo de toda la eeprom. De otra manera podrías quemar una parte de ella y estar el resto intacta y desperdiciada.


Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:EEPROM Tiempo de vida
« Respuesta #2 en: 17 de Febrero de 2020, 19:24:03 »


Actualiza cada variable en la eeprom solo cuando cambie su valor, y si sigue siendo excesivo, implementa la actualización cada cierto tiempo como tenías pensado.

Lo ideal sería usar una tarjeta micro SD para evitar esos problemas, o usar un micro con pin de batería para mantener la RAM si se cae la tensión principal, y hacer un vuelco a la eeprom.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:EEPROM Tiempo de vida
« Respuesta #3 en: 17 de Febrero de 2020, 20:21:41 »

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:EEPROM Tiempo de vida
« Respuesta #4 en: 17 de Febrero de 2020, 20:45:20 »
Coincido con planeta 9999, siempre trabajo las variables en RAM, pero cuándo la tensión de alimentación del sistema cae o disminuye a un valor crítico, derivo todas las variables que necesito sean remanentes a la EEPROM.
Obviamente, para lograr ésto, monitoreo la tensión principal, NO la tensión del microcontrolador.
 Utilizo el ADC, o bien un detector de umbral aplicado a una entrada digital.
« Última modificación: 17 de Febrero de 2020, 20:47:50 por Robert76 »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:EEPROM Tiempo de vida
« Respuesta #5 en: 18 de Febrero de 2020, 15:03:44 »
Que tal, amigos. Una consulta, tengo una aplicación en ASM donde requiero estar guardando 40 variables de manera continua en la eeprom interna del micro. Pero me causa un poco de temor el numero de ciclos de escritura lectura. Entonces quiero que me recomienden que hacer, ya que el hardware esta incorporado solo con un micro 18f46k22. No puedo agregar nada externo.

Mis premisas son:

- Escribir la EEPROM cada 15 Minutos? Como es un sistema que puede trabajar las 24 horas continuas esto creo me ayudaria mas a que sea estable.

- O, la segunda opcion seria cada minuto para tener el mejor numero actualizado en caso de que se desconecte el sistema.

Practicamente es un contador de pulsos con un sensor inductivo y tiene un timer que programe en segundos.

Que tal pinolillo16,

Siguiendo la sugerencia de remi04 y leyendo el datasheet. El numero máximo de ciclos borrado/escritura (la lectura en las eeporm no las afecta para nada, un dato grabado en la eeprom puede leerse infinito numero de veces) por byte es de 100,000.
El microcontrolador tiene 1KB de eeprom, lo que significa que puedes guardar 25 grupos de 40 bytes, esto porque 1024bytes/40bytes = 25.6, pero obviamente no puedes grabar un segmento solamente, por lo que te quedan 25 grupos de 40bytes.
Lo que sucede entonces es que grabas tus primeros 40 bytes o datos desde la dirección 0x000 hasta la 0x027 (Grupo 1)
Luego el siguiente minuto coges los 40 datos (bytes) y los guardas a partir de la dirección 0x28 hasta la 0x04F (Grupo 2)
y así sucesivamente. Como te darás cuenta en realidad solo usarás 1000 bytes de los 1024 disponibles.
Esto quiere decir que cuando llegues al último grupo, tendrás que regresar a guardar los datos una vez más en la dirección 0x000. Esto quiere decir que en realidad estaría borrando y escribiendo el mismo grupo de bytes cada 25 minutos.
Un día tiene 1440 minutos, entonces el número de ciclos de borrado/escritura por día, sería 1440/25 = 57.6 Digamos que son 57 veces diaras)
Por lo tanto si el endurance de la eemprom (número máximo de ciclos de borrado/escritura) es de 100,000; entonces si dividimos 100,000/57 = 1754.38 días. Es decir la memoria eeprom del micro se te va adañar en 1734 días, que son 4 años, 9 meses y días.
Eso es lo que pasaría de acuerdo a los datos proporcionados.
Puedes seguir el mismo procedimiento en caso de que hagas el guardado de datos cada 15 minutos.

Espero esto te sirva

elreypic.


 

anything