Manera adecuada de manejar las fuentes en la memoria

0

Estoy haciendo un terminal muy simple. Consiste en ATMEGA328, que emite texto en una pantalla LCD representada por las fuentes leídas desde la EEPROM (24LC).

Cada carácter de la fuente consta de 9 bytes (cada bit representa "color"). Todos los personajes se almacenan uno tras otro. Aquí hay un ejemplo de la letra 'B':

Estoycalculandolaubicacióndelamemoriadecadacarácterparaevitarusarunatabladereferenciascruzadasdelasiguientemanera:

ASCII_VALUE_OF_THE_CHARACTER*9=character_memory_location;

Hastaahoratodobien,peroelproblemaes:nopuedocargartodaslasfuentesenunamatrizdecaracteres,porqueelATMEGA328tienesolo2kBdeSRAM.

DecidíleerlaEEPROMdirectamentecadavezquenecesitodibujarunacadena,peroesomellevaamisegundoproblema:leerlaEEPROMhastalamuerte.

Lahojadedatosdice"Más de 1 millón de ciclos de borrado / escritura", pero eso no parece ser mucho en absoluto, considerando que solo el renderizar el texto de mi publicación tomaría 1,432 ciclos de lectura y mataría la memoria en ningún momento. Tiempo, así que creo que me estoy dirigiendo hacia la dirección equivocada.

Podría usar algunos 'hacks' y precargar o almacenar en caché los caracteres utilizados con mayor frecuencia en la SRAM o usar algún tipo de algoritmo de compresión simple, o agregar múltiples EEPROM para equilibrar la carga, pero preferiría una solución limpia adecuada.

¿Cuál sería la solución adecuada para resolver este problema para que el hardware funcione el mayor tiempo posible? Gracias!

    
pregunta Kristian

1 respuesta

2

Los ciclos de borrado / escritura no son lo mismo que los ciclos de lectura. Para EEPROM, puedes leer muchas, muchas, más veces de las que puedes escribir. De hecho, para todos los propósitos, puede hacer un número ilimitado de lecturas. Así que debería estar bien almacenando todo en la EEPROM y leyéndolo cada vez que sea necesario.

    
respondido por el Jack B

Lea otras preguntas en las etiquetas