Hola gente: Sigo con el tema de la emulación y también ando algo escaso de tiempo, pero no deja de molestarme la mosca en la cara
El tema es como dice Savage, el 18f452 en el momento de mostrar los pixels no puede hacer otra cosa, si bien la ram sale al video como en una glcd, tenemos que ver como cargarle los datos en dicha ram. Hay unas 62 líneas antes y otras 62 líneas después en las que el micro no tiene más que invertir el pulso de sincronismo, cargar el tmr0 y cambiar algunas banderitas.
Ahora ¿como hacemos para que el micro central no envíe datos cuando el micro está ocupado?
se me ocurre que algún pin libre se puede utilizar como indicador de busy, por lo que se pueden tocar un poquito las librerías de GLCD para que espere a que este pin indique que puede continuar la comunicación.
La otra es hacer el emulador con dos micros, el primero que reciba los datos y organice la memoria interna de acuerdo a estos datos o directivas que reciba, el segundo micro se encarga exclusivamente de sacar el video y los pulsos de sincronismo, y de recibir los datos ya masticados por el primero.
Esta segunda opción es la más prolija hacia el exterior, pero la menos económica. Y creo que ya nos estaría saliendo mas caro el collar que el perro.
Otra idea es como dijo el amigo Savage utilizar alguna ram externa y un par de micros mas simples, igual que en la anterior, uno que gestione los datos como un buffer de la ram, y otro que haga el video y lea esta ram ya organizada.
La cuarta ya se me escapa de las manos, por ahora y es pasarse a una gama mas alta, pero no sé los precios y creo que a muchos no les va a entusiasmar tener que trabajar con algún DSpic. Aunque como son diseñados para este tipo de señales creo que lo lógico es utilizar uno de estos.
Por ahora sigo con el programa original y ya le mejoré otra cosita, un retardo que estaba hecho con bucle ahora está con el TMR1 y el sincronismo sigue el TMR0.
Todo esto para optimizar tiempos.