Recibi una pantalla que tenia daños en el LCD, y necesitaba una panel nuevo, el equipo era viejo y el modelo que usaba ya estaba descontinuado.
Decidi comprar una pantalla que se aproximara en caracteristicas lo mas parecido a la original, requeria un cambio el orden de todas las lineas de comunicacion, y funciono, pero al ver la imagen el texo se habia corrido hacia arriba, haciendo que el texto inicial apareciera abajo
Esto pasa debido a que los tiempos de Pre y Post sincronizmo de ambas pantallas es distinto, y el tiempo de esta nueva pantalla es menor, y por lo tanto la imagen se crea antes de lo necesario.
No se podia corregir directamente en el equipo, ya que implicaba modificar el firmware original de la pantalla para agregar diferencia de tiempo.
Esto lo logre correjir, utilizando un PIC12F629 de Microchip, y un retraso en la linea de vertical, el pic recibe el pulso de vertical original, y le genera un atraso de aproximadamente 800 us y regenera el pulso.
En un inicio lo intente con interrupciones y temporizadores, pero por fallo que aun no logre resolver que sucedia tenia saltos en la imagen ya que fallaba el por momentos el tiempo, pero como el pic no iba hacer nada mas que atrasar la linea del vertica, podria usar una funcion FOR, con instrucciones NOP para generar el atraso, se que podia haberlo hecho en ensamblador para mas eficiencia, pero el tiempo era algo a considerar, y me siento mas comodo programando en C.
Como pueden ver la funcion principal es sencilla
while (1){
if (!GPIObits.GP2){
j = 1;
}
if (j){
for(i = 0; i < 1220; i++){
asm("nop");
}
GPIObits.GP4 = 0 ;
for(i = 0; i < 8; i++){
asm("nop");
}
GPIObits.GP4 = 1 ;
j = 0;
}
}

