Hola Amigos!
Sigo "jugando" con mi matriz de LEDs de 8x8, intentando aprender todo lo posible antes de construir modelos mas grandes.
Una de mis preocupaciones se relaciona con los tiempos de lectura de la EEPROM.
Tal como hago las cosas, es bastante lenta.
Les cuento un poco mas: uso un PIC16F628A, que no dispone de I2C por hard, asi que recurro a las rutinas del CCS por software. Tengo un set de caracteres ASCII guardados en la EEPROM, a razon de 8 bytes por cada caracter (si, son 8x8=64bits), almacenados en posiciones contiguas.
Antes de mostrar un caracter en la matriz, lo "busco" en la EEPROM y lo guardo en una tabla de 1x8 bytes de tamaño. Luego, envio cada uno de esos bytes al registro de desplazamiento, uno por fila. Repito el "refresco" de la pantalla unas 100 o 200 veces, antes de pasar al caracter siguiente. Con el micro a 4 MHz, eso permite que cada caracter este mas o menos un segundo en pantalla antes de pasar al siguiente. Y la verdad, funciona muy bien.
Ahora, al intentar dar el gran paso (una matriz de por ejemplo 16x128 o algo asi) intente algunas pruebas para no hacer algunos miles de agujeros (como dice Marcos) de gusto. Y no me gusto lo que encontre.
Modifique el programa para que lea de la EEPROM 20 veces el caracter ANTES de dibujarlo. Esto me daria el mismo "trabajo" (o consumiria el mismo tiempo) que si utilizara una matriz 20 veces mas grande. Tambien envio al registro de desplazamiento 20 veces la misma informacion (el 74HC164N debe creer que estoy loco) para que los tiempos sean los mismos que si el cartel fuese 20 veces mas grande.
No hay problemas con la escritura en el registro de desplazamiento. Pero las 20 lecturas de la EEPROM se demoran bastante. Soy incapaz de medirlo, aunque con el osciloscopio debiera poder medirlo. De todos modos, entre caracter y caracter se produce una demora apreciable a simple vista, de unos 100 o 200ms. Y queda muy feo!
La cuestion es la siguiente: ¿que me combiene hacer?
1) Utilizar un micro de 20Mhz? (si es que el problema es la velocidad del PIC y no de la EEPROM)
2) Utilizar un micro que tenga implementado I2C en Hard?
3) Comunicarme con la EEPROM mediante algun codigo mas rapido que el que viene en CCS (cosa que soy incapaz de escribir, creo
)
¿Ideas?
Gracias por adelantado.
Ariel.