Autor Tema: Video compuesto para TV con pic16f84 (NO se puede en este lenguaje, leer post!!)  (Leído 18699 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.
« Última modificación: 12 de Septiembre de 2014, 09:27:09 por jorgenuviola »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: video vga con pic
« Respuesta #1 en: 14 de Julio de 2014, 19:00:44 »
Creo recordar que solo está en lenguaje máquina, pero en Basic o cualquier otro lenguaje también se puede hacer, es cuestión de aumentar la velocidad del microcontrolador.
Saludos desde Granada, España.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: video vga con pic
« Respuesta #2 en: 14 de Julio de 2014, 23:19:23 »
Creo recordar que solo está en lenguaje máquina, pero en Basic o cualquier otro lenguaje también se puede hacer, es cuestión de aumentar la velocidad del microcontrolador.


es decir que con 20 mhz no alcanzaria?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: video vga con pic
« Respuesta #3 en: 15 de Julio de 2014, 20:16:24 »
No sabria decirte, mis conocimientos de señal de TV son generales. Si no recuerdo mal la revista mcontrol tenia un proyecto terminado, es cuestión de localizar el número y leer los detalles técnicos.
Saludos desde Granada, España.

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: video vga con pic
« Respuesta #4 en: 16 de Julio de 2014, 00:16:20 »
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.

Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.

Saludos.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: video vga con pic
« Respuesta #5 en: 16 de Julio de 2014, 00:43:33 »
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.

Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.

Saludos.


claro, lo que no me doy una idea es como hacerlo en programacion, vengo pensando hace semanas como hacerlo en basic y por eso tire la pregunta, por ahi alguien se habia tirado a hacerlo y me podia orientar en la programacion.
si comprendo como funciona, la señal horizontal para controlar el barrido y los tres colores. Queria llevarlo a la programcion.

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: video vga con pic
« Respuesta #6 en: 16 de Julio de 2014, 00:55:02 »
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.

Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.

Saludos.


claro, lo que no me doy una idea es como hacerlo en programacion, vengo pensando hace semanas como hacerlo en basic y por eso tire la pregunta, por ahi alguien se habia tirado a hacerlo y me podia orientar en la programacion.
si comprendo como funciona, la señal horizontal para controlar el barrido y los tres colores. Queria llevarlo a la programcion.

Aja !!... ¿y?....¿que es lo que pensaste?.... no nos contas nada al respecto. ¿Que resolucion queres usar?. ¿Que tiempos has calculado?. ¿En que orden estan? ...¿segundos, milisegundo, microsegundos?. ¿Podes manejar esos tiempos desde Basic?.

Saludos

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: video vga con pic
« Respuesta #7 en: 10 de Agosto de 2014, 21:08:11 »
Citar

Aja !!... ¿y?....¿que es lo que pensaste?.... no nos contas nada al respecto. ¿Que resolucion queres usar?. ¿Que tiempos has calculado?. ¿En que orden estan? ...¿segundos, milisegundo, microsegundos?. ¿Podes manejar esos tiempos desde Basic?.

Saludos




bueno el tema era ver como hacerlo, me lei todo el post de como hicieron el video compuesto  en blanco y negro usando un pic para la señal de sincro, mi meta es manejar un monitor.
Todavia estoy en la etapa de las señales de horizontal y vertical, no llegue a la resolucion aun, si interprete que puedo hacer 525 lineas.

Esto es lo que hasta ahora fui haciendo. Tengo varios micros 16f84a 16f628 16f877 16f876 16f886 y yb 18f (pero ya tiene uso en otra cosa)

Por ahora es todo experimento con un 16f84, supongamos que lo haga con un 628 definitivamente para hacerlo trabajar en 20mhz

Para lograr los 31,75 microsengundos uso una interrupción


Timer = 4/fos(velocidad del cristal) * (256 – valor timer) * prescaler

Prescaler 64   TMRO 125  crystal 10 mhz =  31,74

Con esto logro el pulso horizontal.

para el vertical uso una simple suma de ciclos, contando 530 siglos de trabajo emitiendo el pulso y volviendo a cero.

a ver que piensan de mi idea.



define osc 10
I var byte
on interrupt goto retardo
A var word
symbol TOIF = intcon.2
symbol GIE = intcon.7
symbol VSYNC = porta.0
symbol HSYNC = porta.2
option_reg = %0000101
intcon = %10100000
disable
low vsync
inicio:
high vsync
call retardo
low vsync
goto inicio
retardo:
a = a+1
if a = 530 then goto horizontal
low hsync  (por ahora no esta determinado  el back porch en ms y es algo que debere pensar bien para no detener todo el programa, por ahi en un pic mas grande puedo usar el segundo timer en lugar de contar y calculando los ciclos de trabajo del pic puedo establecer la demora necesaria para el tiempo correcto)
pauseus 4 (esto es bruto, se que debe ser 3.77 supongo que debere hacer una segunda interrupcion, se que es dificil manejarlas en basic y muy facil en asm pero me propongo logralo)

call retardo1
return
horizontal:
high hsync
a = 0
goto retardo
retardo1:
tmr0 = 125
espera:
if toif = 1 then reseteo
reseteo:
toif = 0
return
resume
end


el resultado que logre (no se porque no puedo ver el proteus el osciloscopio digital completo y veo uno mas simple)

horizontal



vertical



ahora que termine con los finales de este cuatri en la facu pensaba en ponerme a hacer la plaquita con el pic  y las resistencias y probarlo a ver si funciona en un monitor, al menos si genera bien la sincronizacion y medirlo con el ocsiloscopio afuera.

« Última modificación: 10 de Agosto de 2014, 21:28:17 por jorgenuviola »

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: video vga con pic
« Respuesta #8 en: 07 de Septiembre de 2014, 21:25:47 »
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?
« Última modificación: 07 de Septiembre de 2014, 22:12:25 por jorgenuviola »

Desconectado siniestro

  • PIC10
  • *
  • Mensajes: 44
Re: video vga con pic
« Respuesta #9 en: 08 de Septiembre de 2014, 11:40:17 »
No se si llegué tarde a tratar de ayudarte, te voy a mencionar algo sobre las señales de sincronismo (se algo de repartacion de TV), dependiendo la norma a la que quieras trabajar (dependiendo del pais), tambien el Televisor tendra su norma de trabajo (regularmente la misma del pais, aunque hay algunos que detectan eso y cambian segun el caso).  Te hablare de la norma NTSC que es la que usamos en Guatemala por el momento:

tiene 525 lineas horizontales por cada imagen de video
usa un refresco de 60 imagenes por segundo.

Como las imagenes de television en pantallas de rayos catodicos se hacen con un haz de electrones que se mueve sobre la pantalla modificando su intensidad y por lo tanto el brillo(en el caso del blanco y negro porque a color son tres haces), por lo tanto para calcular la frecuencia horizontal sabemos que el haz se mueve en forma horizontal 525 veces para cada imagen y como son 60 imagenes por segundo, pero aqui viene algo de la teoria de television, 60 imagenes son necesarias para dar la sensacion de movimiento al ojo, pero mandar las 60 imagenes representaba un problema porque el ancho de banda de trasmicion se volveria muy amplio, entonces decidieron usar solo 30 imagenes por segundo pero las muestran partidas en segmentos, cada imagen se presentan dos veces, primero una parte y luego la otra y ahi nace el entrelazado de imagenes, entonces la frecuencia horizontal debe ser

525*30=15,750 Hz  o lo mismo que 15.75 Hz a nivel de la television en realidad es un numero cercano a ese (generalmente 15,734) por lo tanto cada pulso duraria:

1Seg/15,734Hz=0.000063 ó  6.3uS

En el caso de la señal de sincronismo vertical son 1/60=0.1666...  ó  16.66 mS

Todo esto es para mover el Haz sobre la pantalla, ahora viene el control de la intensidad, tendrias que dividir tu pantalla segun la resolucion que quieras, que seria  n*y pixeles
y de acuerdo a esto deberias ir calculando y saber en que tiempo exacto aumentar el brillo o disminuirlo.   Mi ultimo dato es que cuando el haz llega a la esquina inferior derecha, el haz debe pasar a ser inexistente o lo que en TV se conoce como "negro mas negro que el negro" para que el retorno del haz a la esquina superior izquierda quede "borrado de la pantalla y no afecte la imagen"
Saber de todo un poco, sin ser experto en nada (una filosofia extraña)

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: video vga con pic
« Respuesta #10 en: 08 de Septiembre de 2014, 11:50:58 »
No se si llegué tarde a tratar de ayudarte, te voy a mencionar algo sobre las señales de sincronismo (se algo de repartacion de TV), dependiendo la norma a la que quieras trabajar (dependiendo del pais), tambien el Televisor tendra su norma de trabajo (regularmente la misma del pais, aunque hay algunos que detectan eso y cambian segun el caso).  Te hablare de la norma NTSC que es la que usamos en Guatemala por el momento:

tiene 525 lineas horizontales por cada imagen de video
usa un refresco de 60 imagenes por segundo.

Como las imagenes de television en pantallas de rayos catodicos se hacen con un haz de electrones que se mueve sobre la pantalla modificando su intensidad y por lo tanto el brillo(en el caso del blanco y negro porque a color son tres haces), por lo tanto para calcular la frecuencia horizontal sabemos que el haz se mueve en forma horizontal 525 veces para cada imagen y como son 60 imagenes por segundo, pero aqui viene algo de la teoria de television, 60 imagenes son necesarias para dar la sensacion de movimiento al ojo, pero mandar las 60 imagenes representaba un problema porque el ancho de banda de trasmicion se volveria muy amplio, entonces decidieron usar solo 30 imagenes por segundo pero las muestran partidas en segmentos, cada imagen se presentan dos veces, primero una parte y luego la otra y ahi nace el entrelazado de imagenes, entonces la frecuencia horizontal debe ser

525*30=15,750 Hz  o lo mismo que 15.75 Hz a nivel de la television en realidad es un numero cercano a ese (generalmente 15,734) por lo tanto cada pulso duraria:

1Seg/15,734Hz=0.000063 ó  6.3uS

En el caso de la señal de sincronismo vertical son 1/60=0.1666...  ó  16.66 mS

Todo esto es para mover el Haz sobre la pantalla, ahora viene el control de la intensidad, tendrias que dividir tu pantalla segun la resolucion que quieras, que seria  n*y pixeles
y de acuerdo a esto deberias ir calculando y saber en que tiempo exacto aumentar el brillo o disminuirlo.   Mi ultimo dato es que cuando el haz llega a la esquina inferior derecha, el haz debe pasar a ser inexistente o lo que en TV se conoce como "negro mas negro que el negro" para que el retorno del haz a la esquina superior izquierda quede "borrado de la pantalla y no afecte la imagen"



gracias siniestro fue muy util tu aporte, anoche me quede pensando si por ejemplo me hago en una hoja cuadriculada todos los lapsos de 52us y aprovechando el contador que tiene el programa que hice aprovecharlo para encender el puerto de video en el numero de pixel que yo quiera. Tu informacion me confirma que estoy cerca de lo pretendido, ahora viene el otro tema  ¿lo que encenderia seria un pixel no? entonces ¿debo ingeniar algo para fabricar una imagen no?

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: video vga con pic
« Respuesta #11 en: 08 de Septiembre de 2014, 13:26:24 »
Jorge, como te explique por MP, lo que estas haciendo es generar una imagen de video compuesto, que dista mucho de ser una señal VGA de un monitor.

En cuanto a mostrar una imagen en el TV con video compuesto, lo que yo hice en el OSD es usar el módulo SPI para sacar datos del micro y "superponerla" a la señal de video. Como el barrido horizontal ronda los 64us (no recuerdo bien el numero exacto) si queres, por ejemplo 256 pixeles horizontales, el tiempo de cada pixel sería 0.25useg. O sea, configuras el SPI para saque datos datos a 4MHz. El SPI sacará 525 datos al barrer la pantalla completa y cada dato estará compuesto por 256 bits (por ejemplo) o sea 32 datos de 8bits.

Una forma de sacar imagenes es crear un buffer en memoria de 256x512 bits = 128Kbyte (es mucho no?) y el SPI se encargará de sacar los datos comenzando cuando estes en el pulso de sincro horizontal (unos useg despues de ese pulso).

Tene en cuenta los niveles de tension que maneja la señal de video compuesto que si mal no recuerdo es de 1Vpp, por lo que el micro debe meter la info por medio de un divisor resistivo...

Estas muy cerca de mostrar una imagen en un TV, si queres, mostranos el circuito que estas armando y seguimos viendo como podes hacer para terminar.

Te comento que de BASIC no sé nada, por lo que no puedo ayudarte con el código específico, si con la metodología para mostrar la imagen.

Tu objetivo final es hacer un proyecto de video VGA? porque ojo que son 2 cosas totalmente distintas...

Saludos!

EDITO, veo el cambio de título! ahora sí. En video compuesto vas re bien. En video VGA creo que es muy pero muy dificil con un 16f84.
-
Leonardo Garberoglio

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: señal video compuesto para TV pal y señal de video vga con pic16f84
« Respuesta #12 en: 08 de Septiembre de 2014, 13:33:13 »
mil gracias por responderme!!!  inicialmente iba a un proyecto vga, luego pase a lo mas basico para poder obtener algun resultado y me cope con el video compuesto. El 16f877 tiene SPI voy a leer la hoja de datos del micro a ver como lo puedo manejar.

Se me ocurria usar una eeprom externa para guardar toda la parte grafica, pero todavia estoy leyendo de como generar un hex o un bin para la memoria, programador eeprom tengo un g540 usb.  tengo borrador UV tambien.  Tambien encontre aca en el foro un programa muy copado que se llama letras para generar bit a bit un grafico y pasarlo a ascII.

hoy a la noche pruebo hacer video y les prometo las fotos de lo que haga sea un desastre o funcione.

la idea es con el pic emular un 1889 o un ad725. Compre un par de AD725 cuando aun se podia por ebay. Pero no es mi idea en este momento, es mas un reto personal lograr hacer funcionar esto como proyecto porque abre puertas a futuros proyectos mucho mas complejos.
« Última modificación: 08 de Septiembre de 2014, 13:36:44 por jorgenuviola »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: señal video compuesto para TV pal y señal de video vga con pic16f84
« Respuesta #13 en: 08 de Septiembre de 2014, 14:33:13 »
mil gracias por responderme!!!  inicialmente iba a un proyecto vga, luego pase a lo mas basico para poder obtener algun resultado y me cope con el video compuesto. El 16f877 tiene SPI voy a leer la hoja de datos del micro a ver como lo puedo manejar.

Se me ocurria usar una eeprom externa para guardar toda la parte grafica, pero todavia estoy leyendo de como generar un hex o un bin para la memoria, programador eeprom tengo un g540 usb.  tengo borrador UV tambien.  Tambien encontre aca en el foro un programa muy copado que se llama letras para generar bit a bit un grafico y pasarlo a ascII.

hoy a la noche pruebo hacer video y les prometo las fotos de lo que haga sea un desastre o funcione.

la idea es con el pic emular un 1889 o un ad725. Compre un par de AD725 cuando aun se podia por ebay. Pero no es mi idea en este momento, es mas un reto personal lograr hacer funcionar esto como proyecto porque abre puertas a futuros proyectos mucho mas complejos.

Si no me equivoco el 16F877 ha sido reemplazado por el 887, si ya tenes un 877 dale para adelante, sino, te recomiendo el 887.

Lo de la eeprom externa tenes que revisar las velocidades. Yo en el OSD para tener buena resolucion gráfica usaba el SPI para sacar datos a 6MHz mas o menos y para que el micro pueda hacer otras cosas use el DMA (el micro que uso para el OSD es un ARM M3 a 120MHz). La linea 16F no creo que tenga DMA entonces tenes que ver bien los tiempos. Si sacas datos a 6MHz vas a tener que tener una memoria que pueda ser leida bastante más rapido que esa velocidad.
No he visto mucho tu programa, pero la idea sería que arranque dibujando una línea vertical. Para eso cuando llega el pulso de sincronismo horizontal, esperás 15useg (por ejemplo) y pones un 0 como dato en el puerto y enseguida lo pones en 1 otra vez (el 0 es blanco si mal no recuerdo), eso lo repetis en cada barrido horizontal.

El paso siguiente creo que sería pasar al SPI, en ese caso lo que podrías hacer es configurar el SPI a 4 o 5MHz, te creas un array de 32 bytes y a cada bit de cada byte le asignas un 0 si queres encender el punto o un 1 si queres que no muestre nada. Luego cuando llega el pulso de sincro horizontal, esperas (creo que 10useg) hasta que el haz esté en el comienzo de la pantalla y conun lazo for vas sacando byte a byte por el SPI. Para ello, pones el dato en el registro de salida del SPI y luego te quedas en un bucle esperando la bandera de buffer vacío. De ese modo, el lazo for se encargará de sacarte por el SPI (pin MOSI) una línea completa. Cuando termina la línea, tenés un par de uSeg para actualizar tus 32 bytes con los pixeles a mostrar en la siguiente línea...

Esa es un poco la idea, esta un poco desordenada, pero seguro que la entenderás, sino, pregunta!
Es un tema muy interesante, yo hasta noviembre no voy a poder tocar nada de ese proyecto que aun esta a terminar. La idea era poder implementar colores... ya veremos!

saludos
-
Leonardo Garberoglio

Desconectado siniestro

  • PIC10
  • *
  • Mensajes: 44
Re: señal video compuesto para TV pal y señal de video vga con pic16f84
« Respuesta #14 en: 09 de Septiembre de 2014, 01:09:49 »
Citar
¿lo que encenderia seria un pixel no? entonces ¿debo ingeniar algo para fabricar una imagen no?
Exacto, seria un pixel, en el caso de imagenes en Blanco y negro existe un umbral para el maximo negro y el blanco mas puro,
esto lo extraje de Wikipedia:

Citar
La codificación de la imagen se realiza entre 0 V para el negro y 0,7 V para el blanco. Para los sincronismos se incorporan pulsos de -0,3 V, lo que da una amplitud total de la forma de onda de vídeo de 1 V. Los sincronismos verticales están constituidos por una serie de pulsos de -0,3 V que proporcionan información sobre el tipo de campo e igualan los tiempos de cada uno de ellos.

Todo valor entre 0 y 0.7 Voltios serian las escalas de grises desde el blanco hata el negro.  Dibujar en pantalla, no se que tan potente sea el PBP, recuerdo haber dibujado en pantalla y hecho mis "librerias graficas" pero en programacion pero en mi computadora, en C++, recien me inicio en el mundo de los PIC y no tengo mucho de programarlos, pero inicie con PBP.    Una idea que se me ocurre es crear una matriz  de ancho y alto de las dimesiones del numero de  tus "pixeles" y llenarla por ejemplo con ceros y unos, y leer la matriz y segun la posicion poner un factor de multiplicacion de microsecundos asi podrias crear imagenes matriciales, incluslo dibujar textos en la matriz, pero esto seria para imagenes en blanco y negro, en escala de grises en lugar de guardar un bit, seria un byte y podria ser un valor digital y convertirlo a su salida al analogo correspondiente, son ideas locas mias no se si todo esto sea posible..
Saber de todo un poco, sin ser experto en nada (una filosofia extraña)


 

anything