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!