bueno, otro avance. Me tire a hacer primero el experimiento con una television PAL, hacer el sincro para TV, esta es muy vieja por lo tanto hasta que me di cuenta que la señal de sincro en 0V debia ser mas de 4 us tarde un rato. Estas teles suelen usar hasta 12 us de señal para sincronizar. En ningun post ni en ninguna pagina de TV esta claro como es el sincro de vertical, todas lo tiran asi como que son una manojo de pulsos o que tienen una duracion total de 400 o 500 us y listo. Me lei todo lo que se me cruzo, pero todo!!! y encima habia notas que diferian unas de otras con los dados.
en pocas palabras lo que logre fue lo siguiente. 12US de 0V y 52 us de señal para el video en horizontal.
Ahora en vertical la cosa es distinta, la señal es asi. son 6 pulsos en logico 1 de 30 us serparados por 2us en 0V o logico 0, 5 pulsos en 0V de 30 us separados por pulsos logico 1 de 2 us y finalmente y aca es donde hace la diferencia. 5 pulos de 30 us en logico 1 separados por 2 us en logico 0 para la linea impar y en la par cambia solo el ultimo pulso que es de 60 us de logico 1. solo eso cambia.
En la explicación de como funciona una tele y su entrelazado me rompi la cabeza tratando de entender como hacia para que la tele entendiera el desplazamiento de un pulso, después de leer absolutamente de todo en múltiples sitios encontré un gráfico muy claro en donde mostraba los pulsos verticales y ahí saque la cuenta.
en una de las tantas notas que encontré aclaraba que la señal de vertical se debe superponer a la de horizontal, que ambas deben funcionar en conjunto y no una después de la otra, por eso mis primeros intentos fueron fallidos.
El primer codigo lo hice todo de corrido sin interrupciones, ya que tengo la idea de usar un pic para el sincro y otro para el video. Me puse a hacerlo y no funciono, ahora les pongo las fotos de los intentos fallidos.
Finalmente lo hice con una interrupción, gracias al programita que me baje el otro dia para calcular tmr0 de una forma facil encontre que
con un cristal de 4mhz un prescaler de 2 y un valor de tmr0 de 230 obtengo una interrupcion cada 52us, lo cual me facilito el trabajo
asi deberia funcionar y pueden ver como son los pulsos de sincronismo y mas abajo como operan para hacer el entrelazado
aca el codigo que me funciono finalmente.
define osc 4
I var byte
on interrupt goto retardo
A var word
B var word
symbol TOIF = intcon.2
symbol GIE = intcon.7
symbol HSYNC = porta.0
symbol VSYNC = porta.2
option_reg = %0000000
intcon = %10100000
disable
low hsync
low vsync
inicio:
goto inicio
retardo:
a = a+1
"contador"if a = 304 then goto vertical
if a = 608 then goto vertical2
low vsync
low hsync
pauseus 12
"front porch de 12 us"call retardo1
return
retardo1:
tmr0 = 230
espera:
if toif = 1 then reseteo
reseteo:
toif = 0
return
resume
vertical:
"inicio de sincro vertical IMPAR, 6 pulsos logico 1 de 30 us" low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto sincro2
sincro2:
"inicio de 5 pulsos de 30 us en logico 0"high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
goto sincro3
sincro3:
"inicio de 5 pulsos de 30 us en logico 1"low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto inicio
vertical2:
"inicio de sincro vertical PAR, 6 pulsos logico 1 de 30 us" a = 0
"pone el contador en cero para volver a iniciar"low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto sincro4
sincro4:
"inicio de 5 pulsos de 30 us en logico 0"high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
goto sincro5
sincro5:
"inicio de 4 pulsos de 30 us y un pulso de 60 us en logico 1"low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 60
low hsync
goto inicio
goto inicio
end
Con este codigo el funcionamiento horizontal no se detiene nunca y a medida que se va cumpliendo se va interrumpiendo, asi que le da lugar para que el vertical opere. No entiendo nada de asm pero vi en varios lugares yanquis que agregaban contadores para armar el tren de pulsos yo lo hice con una variable.
primeras pruebas, con el codigo sin interrupcion y con un front proch de 4 us un desastre total.
al mismo codigo le aumento el pulso de sincro, porque en algun lado habia leido que las tv muy viejas requerian mas tiempo y logre esto y ahi me di cuenta.
ahi me sente a reever todo y e hice el codigo que esta posteado y el resultado fue muy estable.
en el oscilocopio el tren de pulsos
El problema ahora es que no tengo la mas minima idea como hacer video, es decir primer punto de mi duda:
¿¿¿¿¿¿ que comando uso en basic para sacar la informacion por un port??? No tengo idea que usar o como hacerlo
lo que hice fue agregarle un pequeño pulso en bajada cada tanto y logre hacer rayas.
hasta aca llegue solito, ahora necesito una mano para seguir. ¿me pueden ayudar?