Generar una señal de video NTSC usando un PIC
| #1 Generar una señal de video NTSC usando un PIC |
|
pic-man
|
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 µSCOPE, 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. |
|||||||||||
|
|
||||||||||||
| #2 |
| #3 |
|
pic-man
|
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
|
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
|
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
|
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
|
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 |
|||||||||||
|
|
||||||||||||
| #8 |
|
Meta
|
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
|
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. |
|||||||||||
|
|
||||||||||||
| #10 |
|
Meta
|
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. |
|||||||||||
|
|
||||||||||||
|
| Temas de interés | |
|---|---|
| ¿Como generar electricidad por induccion? | |
| Generar ruido blanco | |
| Generar audio con PIC | |
| Como generar un ejecutable .EXE en TURBO C | |
| 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 || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad

