Bueno, llego la hora de empezar a probar este nuevo bichito...
Es recomendable leer este excelente trabajo de Otto Joel Paz Luna como tesis de grado en la Universidad de las americas en méxico:
http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/paz_l_oj/En particular el capítulo 2 y 3 donde se habla de las señales de video.
Veamos algunos coceptos básicos. Una IMAGEN de video se pinta o refresca a 50Hz (60Hz en brasil y EEUU), está formada 525 lineas en el sistema NTSC o 625 lineas en el sistema PAL. Para formar una imagen en pantalla son necesarios 2 barridos completos de la pantalla, ya que la imagen se forma entrelazada, primero se pintan 312.5 líneas y luego 312.5 lineas más para formar la imagen completa (por lo menos mi camarita que es PAL así lo hace). Si la frecuencia de refrezco es de 50Hz y tenemos 312.5 líneas por cada refrezco, entonces tenemos 15625 líneas por segundo. Por lo tanto el tiempo que nos lleva barrer una línea completa (tiempo de barrido horizontal) es de 64uSeg.
Cuando el haz de electrones (en los viejos televisores de TRC) llega al final de un CUADRO (termina de pintar una imagen) debe retroceder y se debe generar una señal de barrido vertical. Aparte existe una zona de blanqueo del vertical y otras cuestiones que, insisto, podrán leer con mucho detalle y en español en el capítulo 2 del trabajo que les mencioné... no me voy a poner a copiar lo que otro ya explicó y decir que lo hice yo...
Lo importante a saber es que antes, durante y despues del pulso de sincronismo vertica, hay pulsos de sincronizmo horizontál que no llevan informacion de imagen. Una parte de esa porcion puede ser utilizada para enviar informacion. En mi caso, al querer usar este OSD para un UAV, se puede aprovechar el enlace de video (el cual generalmente es comercial por la dificultad de diseñar en circuitos para 1.2 GHz) para enviar telemetría a tierra.
Tambien hay que tener en cuenta esos pulsos para contabilizarlos al momento de intentar generar nuestra señal de video en el momento justo para que se muestre en la posicion deseada en la pantalla.
Bien, demasiada teoría por ahora, vallamos a los bifes.
Como les comente la idea es utilizar el LM1881 (gracias texas!!!!) para extraer las señales de sincronismo.
Entoces, siguiendo las recomendaciones de la hoja de datos monte esto en el protoboard:
En la foto pueden ver, mi super fuente de alimentacion (dentro de la fuente de PC), el receptor de video de mi equipo FPV, el protoboard con el LM, 1 resistencia y 3 capacitores y el analizador lógico.
Bien, he muestreado la señal de sincronismo vertical y horizontal a la salida del LM y obtengo lo siguiente:
Bien, aquí pueden ver dos pulsos de sincronismo vertical, espaciados exactamente 20mseg (50Hz) y pueden ver muchos pulsos de sincronismo horizontal. Tambien pueden notar que alrededor de los pulsos de sincronismo vertical hay mas densidad de pulsos de sincr. horizontal.
Bueno, hagamos zoom a esa zona y veamos que tenemos:
en esta imagen vemos antes del pulso vertical tenemos 6 pulsos llamados pulsos de ecualizacion. Esos pulsos se generan al doble de la frecuencia de campo y en la hoja de datos los cuenta como 3 campos. Luego, vienen 6 pulsos más (3 campos) llamados serrated vertical pulse, luego bienen 6 pulsos de ecualizacion (3 campos más) y finalmente comienzan los campos de imagen. cabe destacar que de los campos 10 a 21 (o 12, no estoy seguro) no hay informacion de imagen, solo los pulsos de sincronismo horizontal.
En resumen, nosotros deberíamos entrar con el pulso vertical a un Input Capture de nuestro uC, cuando detectamos el falling edge es que estamos en el campo 4. Tambien debemos entrar con los pulsos horizontales en otra Input Capture y a partir del campo 4 contamos 18 falling edge y estaríamos en el comienzo de la primer línea del televisor, arriba a la izquierda. Como el barrido horizontal dura 64uSeg, tenemos ese tiempo para ubicar nuestro texto horizontalmente... Luego, llevando el conteo de pulsos horizontales sabremos en que linea vertical estamos. La resolucion que podamos conseguir dependerá de la velocidad del micro que usemos. Notar que si queremos, por ejemplo, 64 columnas o pixel horizontales tendremos 1useg para sacar la info de pixel....
Bien, entendido esto, viene la segunda parte, la de insercion de informacion en la señal de video.
Veremos eso en la próxima...
Saludos!