Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Generar una señal de video NTSC usando un PIC


       



#1  Generar una señal de video NTSC usando un PIC
pic-man

Registrado: 04 Ene 2007
Mensajes: 229
Ubicación: México
citar
Hola a todos. Estoy trabajando en un proyecto para generar video NTSC usando un PIC 16F88 a 12MHz. Estos dias he estado leyendo alguna documentación sobre señales de video pero la información que he encontrado no me ha quedado muy clara.

Hasta ahora el único avance que he tenido ha sido un programa de prueba (similar al de el PIC Video Howto de Rickard Gunee) para desplegar barras de colores (negro, gris y blanco) que realicé basandome en el diagrama de sincronización horizontal que se muestra a continuación

Mi implementación tiene algunos cambios con respecto a ese diagrama, el valor de voltaje del front y back porch es 0.33V (el mismo del color negro) y el valor de sincronización es 0V en vez de -0.4V como aparece en el diagrama. El resultado fue este:

Los tiempos de las líneas horizontales son bastante cercanos a los del estándar NTSC, aproximadamente 12us de sincronización y 52us de señal de video.

El gran problema que estoy teniendo es que no he sido capaz de realizar una sincronización vertical. Las imágenes de video se van dibujando en la pantalla una línea a la vez, primero las impares y después las pares. Según he entendido al terminar de dibujar todas las líneas impares se debe realizar la sincronización vertical para comenzar a dibujar las líneas pares, despues se vuelve a realizar la sincronización vertical y vuelven a dibujarse las impares. Hasta ahora no he sido capaz de realizar eso, lo único que logro es dibujar líneas verticales a partir de la rutina que controla la sincronización horizontal.

Hay muchos proyectos que generan video con pic, el tetris y pong de Rickard Gunee, el PIC Breakout, el &microSCOPE, PIC-Pong y PIC-Tock de Eric Smith, entre otros, pero yo quisiera saber si alguien podría darme información sobre los tiempos de sincronización horizontal y vertical (aunque la horizontal creo que ya la tengo dominada) del estándar NTSC, además si hay algún iluminado en el tema no estaría mal una explicación para el resto de nosotros.

Bueno, aqui dejo esto, si a alguien le interesa el tema tal vez podamos colaborar y realizar entre todos una buena librería para generar video usando un PIC.

Por último adjunto el código de prueba y el diagrama de conexión que uso entre el pic y la entrada de video

La resistencia de 450 en realidad puede ser de 470 y la de 900 puede ser de 1K, la de 75 ohms representa la entrada de video RCA del televisor.



Este mensaje contiene archivos adjuntos, para verlos debes estar registrado.

#2  
tiopepe123
Colaborador
Registrado: 14 May 2006
Mensajes: 2802
Ubicación: Barcelona (Espanya)
citar
Cuando hablas de ntsc es que quieres generar color, creo que con el pic andas muy justo, en pal no daba tiempo.

Si la señal es en blanco y negro no necesitas generar la señal de burt lo que se te simplifica mucho.

Si quieres colo lo mas comodo es utilizar la entrada RGB posterior de tu TV o sea el euroconector o Scard.


Para el tema de las tensiones recuerda que tienes tres estados o sea nivel alto, bajo y alta impedancia lo que te permite tener 3 tensiones facilmente.


Si buscas un poco encontraras un tutorial es pdf en español aunque es para pal que es lo que yo conozco.
Ya diseñe hace unos años un patron con un pic16f876 en colo via RGB.

#3  
pic-man

Registrado: 04 Ene 2007
Mensajes: 229
Ubicación: México
citar
gracias tiopepe por tu respuesta pero no estoy buscando generar una señal a color, se que con el pic no me alcanza (y menos a esa velocidad), quiero generar una señal blanco y negro que cumpla con la norma ntsc, lo que sería el estándar RS-170 (RS-170A es para color).

No sabía que en B/W no hacía falta el burst del backporch, yo no lo había hecho, solo había hecho el backporch, con razón si funcionaba.

Bueno, de nuevo gracias, seguiré buscando porque creeme que ya he buscado y leido bastantes manuales pero aún no me queda claro como hacer la sincronización vertical. Si alguien tiene alguna idea o sabe algo de esto agradecería su ayuda.

#4  
Meta

Registrado: 20 Ene 2008
Mensajes: 799
Ubicación: 16F84A
citar
Si puede ser, también es bueno saber de PAL que es el que uso aquí en España, bueno, aunque en mi país también puedes usar el NTSC pero el predeterminado es el PAL, en concreto el PAL-D que es una mejora del PAL normal, para que lo tengan en cuenta.

He visto por ahí que el que quiera color usan los dsPIC de 16 bits y dicen que con 32 bits es la leche. Con el 16 Bits han conseguido algo con 16 colores.

Hace un tiempo quería hacer algo pero no tengo ni idea, a ver si entre todos hacemos algo.

http://www.forosdeelectronica.com/about21994.html&highlight=tetris+pic

En español.
http://www.taringa.net/posts/info/996552/Mod-8--Arma-tu-propia-consola-1-

http://server-die.alc.upv.es/asignaturas/TEII/2006-07/Web_C05/02.html

http://www.pablin.com.ar/electron/circuito/mc/picpong/index.htm

EDIT:
http://www.ucontrol.com.ar/wiki/index.php/PIC_PAL_Video_Library

http://www.pablin.com.ar/electron/circuito/mc/tetris/index.htm

http://wk3.iespana.es/tetris.htm


Ultima edición por Meta el Mie Jul 23, 2008 10:55 pm, editado 3 veces

#5  
pic-man

Registrado: 04 Ene 2007
Mensajes: 229
Ubicación: México
citar
En esos enlaces todos usan el código de Rickard Gunee, su explicación es muy sencilla pero aún así no logro comprenderla del todo.

#6  
Meta

Registrado: 20 Ene 2008
Mensajes: 799
Ubicación: 16F84A
citar
pic-man escribió:
su explicación es muy sencilla pero aún así no logro comprenderla del todo.


Yo tampoco, lo lograremos con la práctica, por no entenderlo lo he dejado, pero como veo a más personas animadas, me han animado y haré ese proyecto aunque sea en color. Eso si, en realidad es el 16F84, pero como el 16F88 tiene más RAM y Flash, mejor que mejor.

Este hombre si lo entiende.


#7  
pic-man

Registrado: 04 Ene 2007
Mensajes: 229
Ubicación: México
citar
Sigo sin lograr la resolución vertical pero aqui les dejo un avance del proyecto:




El video generado esta desentrelazado y tiene una resolución vertical de 260 lineas, aunque claro la imágen que se despliega (space invaders yeah!) ocupa gran parte de la pantalla por lo que no se ve una super resolución, pero con 260 líneas disponibles (tal vez menos, habrá que hacer más pruebas) se pueden hacer cosas interesantes, o al menos eso espero.

El efecto de scroll aunque queda bien no es intencional, eso se debe a que aún no logro hacer la sincronización vertical, simplemente dibujé línea a línea la pantalla, espero encontrar la solución para la sincronización vertical pronto y que con eso quede fija la imágen en la pantalla.

Aqui dejo esto, espero que alguien se anime y consigamos la sincronización vertical Laughing

#8  
Meta

Registrado: 20 Ene 2008
Mensajes: 799
Ubicación: 16F84A
citar
Muy interesante.











1- ¿Hacerlo con el 16F88 no es lo mismo que un 16F84? Lo digo porque todo el mundo usa ese (16F84), aún así el 16F88 tiene más RAM que ayuda mucho.

2- ¿Te cuesta mucho programar un dibujo en pantalla como el que hiciste?

3- ¿Es complicado el tema de hacer algo con señal de vídeo?

Si tienes más ejemplos lo pones, cada vez que te veo hacer algo, más gana me dan de hacer algo. A ver si vienen más personas que les interesen estos temas.

#9  
pic-man

Registrado: 04 Ene 2007
Mensajes: 229
Ubicación: México
citar
El 16F84 sin duda debe ser el más común de los pics de gama media, yo no programo en el porque me sale más caro que otros pics como el 16f628 o el 16f88. Son pics parecidos, tienen el mismo conjunto de instrucciones (dos más o dos menos, algo asi), pero además el 16f628 tiene un oscilador interno de 4MHz y el 16f88 uno de 8MHz (además de otros añadidos como el convertidor analógico digital, más memoria y cosas asi). Un código escrito para el 16F84 puede funcionar con algunos cambios en un 16F88, pero hay que saber que cambiar y eso en un código sin comentarios muchas veces no es sencillo.

Hacer el dibujo que hice no es complicado, simplemente modifiqué el primer código que puse para dibujar las 260 líneas, usé 9 líneas distintas, una todo negro y otras 7 que son las que forman la imágen, lo demás fue simplemente repetir. El código al final no es nada eficiente y es demasiado largo para lo que hace pero en realidad solo quería hacer una prueba para ver la resolución vertical.

El tema de video a mi me parece un poco complicado, ya ves llevo 3 días investigando y aún no logro la sincronización vertical.

En cuanto tenga más ejemplos o avance un poco con el proyecto iré publicandolos, por lo pronto aqui dejo el código fuente del ejemplo del video que se me olvidó subirlo en el post anterior.

Por cierto, el segundo video que pusiste lo vi ayer o antier, es bastante impresionante y la verdad es que cuando termine mi proyecto creo que lo voy a montar en una pequeña televisión como la de ese alemán.



Este mensaje contiene archivos adjuntos, para verlos debes estar registrado.

#10  
Meta

Registrado: 20 Ene 2008
Mensajes: 799
Ubicación: 16F84A
citar
Muchas gracias por las respuestas.

Voy a mirar el código, a ver si lo puedo adaptar al 16F84A ya que es el único que tengo por ahora.

Voy a intentar poner una imagen como tu a ver si me sale en estos días, ya que actualmente estoy haciendo otro proyecto para presentarlo en una revista oficial de España.

Eso si, seguiré investigando mientras pueda sobre el tema de señales de TV, aunque estoy para el sistema PAL, pero bueno.

Me he dado cuenta que el NTSC y el PAL son *.hex a parte ya que el 16F84A no cabe.

¿Con 4Kb que tiene el 16F88 crees que cabe el NTSC y PAL a la vez? Eso si, habrá que seleccionar uno o otra en el código de entrada con un simple btfss.

Otra cosa que me olvidaba, ¿con qué frecuencia utilizas el oscilador? Porque por lo que he visto por ahí, el tetris funciona con 16MHz.

 Responder





 Temas de interés 
No hay mensajes nuevos ¿Como generar electricidad por induccion?
No hay mensajes nuevos Generar ruido blanco
No hay mensajes nuevos Generar audio con PIC
No hay mensajes nuevos Como generar un ejecutable .EXE en TURBO C
No hay mensajes nuevos Generar senales que afecten amplificadores de audio

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||