Autor Tema: Generador de imagenes de video con PIC  (Leído 123443 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Generador de imagenes de video con PIC
« Respuesta #90 en: 16 de Julio de 2008, 00:34:30 »
Busnisimo SavageChicken!!! Te felicito! el codigo quedo de 10 explicado! (a prueba de tontos como yo jaja).

Les voy a pedir disculpas por estar como parasito en este proyecto, lo q pasa es q me interesa mucho y quiero comprender al 100% para poder colaborar. Si no les molesta, les voy a pedir q me expliquen una cosita:
Especificamente ¿Qué hace y para qué sirve el generador de sincronismos? Hasta donde yo entiendo, le da direccion al haz de electrones que chocan contra el fosforo de la pantalla. Pero no contiene informacion sobre qué es lo que vamos a dibujar en la pantalla... me equivoco?
Quiero terminar de entender como vamos a hacer para dibujar una imagen en la TV.

Gracias, y saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Generador de imagenes de video con PIC
« Respuesta #91 en: 16 de Julio de 2008, 01:05:45 »
Hola Flaco, Gracias por los cumplidos.

Hola Gera.
Ta como estas suponiendo, el generador de sincronismos por si solo, lo único que hace es crear una imagen negra y estable, pero no enciende ningún punto de la pantalla, pero por decirlo de alguna manera, crea la base para dibujar en la pantalla.
Hay dos formas de agregarle la imagen, una sería usar otro circuito al que le avisemos que estamos en el momento de dibujar la pantalla y que este último se encarge de añadir la imagen, y mezclar las dos señales.
La otra es añadirle a este generador de sincronismos una rutina que se encarge de dibujar la imagen, eso es lo que pretendo hacer ahora   ;-)

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Generador de imagenes de video con PIC
« Respuesta #92 en: 16 de Julio de 2008, 12:36:56 »
Perfecto, muchas gracias por la explicacion! ;)
Por lo tanto, lo que queda seria añadir la imagen a este sincronismo. Como piensan hacerlo? Yo creo que lo ideal es ir leyendo un buffer.

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #93 en: 16 de Julio de 2008, 13:16:34 »
Hola Flaco, Gracias por los cumplidos.

Hola Gera.
Ta como estas suponiendo, el generador de sincronismos por si solo, lo único que hace es crear una imagen negra y estable, pero no enciende ningún punto de la pantalla, pero por decirlo de alguna manera, crea la base para dibujar en la pantalla.
Hay dos formas de agregarle la imagen, una sería usar otro circuito al que le avisemos que estamos en el momento de dibujar la pantalla y que este último se encarge de añadir la imagen, y mezclar las dos señales.
La otra es añadirle a este generador de sincronismos una rutina que se encarge de dibujar la imagen, eso es lo que pretendo hacer ahora   ;-)

Salud  8)

Exacto!
Intenta generar algunas barras verticales (que es lo mas facil), de diferentes anchos, a ver que tal se ve, y cual es el ancho minimo que podemos lograr!!!
Que bueno!

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Generador de imagenes de video con PIC
« Respuesta #94 en: 16 de Julio de 2008, 15:48:40 »
Hola Ariel.

   Para ir trabajando sobre algo concreto, creo que sería bueno definir alguna memoria RAM intermedia, en donde el PIC principal deje la imagen que se debe mostrar y desde donde el PIC de video lea la información para luego presentarla.
Como yo no me manejo nada de nada con memorias (siempre usé la memoria interna del PIC), me gustaría que se propongan las mejores opciones y nos decidamos por una de ellas.

   Para tener una idea de los requerimientos tenemos que hacer cálculos.

   Si solo vamos a mostrar imágenes en blanco y negro y nos vamos a limitar a la resolución del LCD, estamos hablando de 128x64 = 8192 bits = 1 KByte
   Si pretendemos subir la resolución a la de una spectrum 48K pero quedarnos en blanco y negro: 256x192 = 49152 bits = 6 KBytes
   Si lo llevamos a una resolución de Commodore 64 estamos hablando de 320x200 y continuando en BW: 320x200 = 64000 bits (poco menos de 8 KBytes)

   Si ahora queremos color, hablamos de multiplicar estos valores por 2 para 4 colores, por 3 para 8 y por 4 para 16 colores (que este último era típicamente la cantidad de colores de una máquina de las mencionadas).
   Esto significaría por ejemplo 24 KBytes para 256x192 a 16 colores, o incluso 32 Kbytes para 320x200 también a 16 colores.

   Hablemos ahora de los tiempos requeridos para el acceso a las memorias.
   Por las limitaciones que tenemos creo que lo mejor sería que el chip principal efectúe una descarga de la pantalla completa en la memoria (creo que sería más económico solo modificar los bits que estamos cambiando), 30 veces por segundo (es decir entre cuadro y cuadro) eso le da el tiempo del sincronismo vertical que dura como 12 lineas en total, que equivalen a 762 us, seguramente podrían ser más, ya que si solo tenemos 192 líneas (o 200) y la tele tiene 525, habrán líneas vacías que también pueden usarse como tiempo para volcar datos a la memoria. Pero en el peor caso, tendríamos que volcar 32 KBytes en 762 us. ¿es eso posible con los dispositivos que manejamos?

   El pic de video, deberá leer línea a línea para luego mostrar esto en la línea correspondiente, pero solo tiene el tiempo del sincronismo horizontal para hacerlo, esto es menos de 11 us y a 320x200 en color ¡¡¡estamos hablando de leer 160 Bytes de información en 11 us!!! Sinceramente lo veo imposible. Y eso que no estamos incluyendo el proceso de generar color con el PIC, que eso es otro cantar.
   Claro, si nos limitamos a 128x64 en BW cada línea tendría 16 Bytes de información, ( y leer 16 Bytes en 11 us, ya lo veo complejo), pero podríamos quizá leerlo y procesarlo inmediatamente, entonces durante los casi 43 us que dura la parte útil de la señal de video iríamos leyendo la RAM y presentando los pixeles (esto lo veo más factible).

   Bueno, les dejo las inquietudes y espero sugerencias para que nos orientemos a la mejor solución.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #95 en: 16 de Julio de 2008, 15:59:45 »
Hola amigo!
EXCELENTE analisis!

Tengo que mirar bien el tema de la memoria. Juanfe nos ha mandado una que tiene la capacidad (en realidad es de 1MB) pero no he visto el tema de los tiempos. Son las DS1245AB (en paquete DIP).

Respecto a la velocidad requerida para enviar los bits a la pantalla, el PIC18F que pensamos usar en la maquina de videojuegos funciona a 40MHz, o sea que en un uS procesa 10 instrucciones...160 bytes en 11us significarian 160 bytes en 110 instrucciones. No conozco NADA de ASM, pero me sigue pareciendo dificil alcanzar esas "cotas".

¿no se poria poner algun circuito intermedio, en el que descargariamos los bits en los tiempos entre lineas, y que se encargue de reenviarlos cuando haga falta? Una especie de ....registro de desplazamiento TTL o algo asi. Por supuesto, dudo que lo haya.

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Generador de imagenes de video con PIC
« Respuesta #96 en: 16 de Julio de 2008, 16:14:49 »
Permitanme insistir con la prouesta q plantee en la pagina anterior: Utilizar un ucontrolador intermedio que interprete instrucciones simples del pic18 y que traduzca estas a señales de video, para luego almacenarlas en un buffer, y despues el generador de sincronismos solo tiene q leer dicho buffer. De este modo no consumimos ciclos vitales del pic18, ni del generador de sincronismos.

Adjunto la imagen de como quedaria, saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Generador de imagenes de video con PIC
« Respuesta #97 en: 16 de Julio de 2008, 16:51:41 »
Ariel, yo andaba(y sigo) enloquecido con las pantallas de Playstation Portable(PSP) Sharp. Son muy sencillas de controlar. Lo más complicado es la velocidad de la transmición de los datos, que es de 10Mhz(si mal no recuerdo minimo 8Mhz), pero tiene una resolución digna y 16 millones de colores.

Si lográs la velocidad de 10mhz, en un rato la sacás andando..

Saludos;)
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Generador de imagenes de video con PIC
« Respuesta #98 en: 16 de Julio de 2008, 20:38:30 »
Hola Gera.

Me gustaría que amplies más a que te refieres con el tema de controlador intermedio.

Por ejemplo que serían las instrucciones simples del pic para ese controlador, y como serían las señales de video que este último generaría, porque no alcanzo a entender en que ayudaría.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Generador de imagenes de video con PIC
« Respuesta #99 en: 16 de Julio de 2008, 20:55:17 »
Las placas convencionales de videojuegos (pacman, galaxy, por citar algunos ejemplos) utilizan el microprocesador para controlar el juego y transferir patrones de imágenes (las imágenes están generadas y guardadas en memorias ROM denominada memoria de objetos) a la memoria de vídeo.

Esta memoria de vídeo es leída por un circuito hardware que las saca como señal de vídeo.

Los microproceadores pierden mucho tiempo procesando las instrucciones y trasvasando datos para procesar la información y al final hacer algo fijo, que un circuito harware soluciona en mucho menos tiempo.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Generador de imagenes de video con PIC
« Respuesta #100 en: 17 de Julio de 2008, 01:20:41 »
 Hola gente: otro dato a tener en cuenta, si vamos a hacer 128x64 cuadraditos en B&N recuerden que hay varias líneas de barrido horizontal que van a repetir el patrón, según la altura de cada cuadrado o pixel en la pantalla.
 Podría ser que cada cuadrado mida de altura 7 u 8 líneas horizontales de barrido, o quizás menos ya que si es de 128x64 la relación es 2:1, mientras que una pantalla de tv normal tiene una relación de forma 4:3, por lo que nos estaría sobrando una altura de 1/3 de la pantalla.
si aparte tenemos un margen sin usar a la derecha y a la izquierda, la relación es mayor.

Vamos a hacer el planteo:

altura: 525 líneas de las cuales se pueden llegar a utilizar unas 500 líneas.
si ocupamos todo el ancho de la pantalla nos quedan de altura 500x(2/3)=333 aproximadamente
estas 333 líneas repartidas en 64 cuadrados de alto nos dá 333/64=5,2
por lo que nos estaría quedando que cada cuadrito tiene de alto unas 5 líneas o menos.
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Generador de imagenes de video con PIC
« Respuesta #101 en: 17 de Julio de 2008, 01:59:23 »
Hola Gera.

Me gustaría que amplies más a que te refieres con el tema de controlador intermedio.

Por ejemplo que serían las instrucciones simples del pic para ese controlador, y como serían las señales de video que este último generaría, porque no alcanzo a entender en que ayudaría.

Salud  8)


Doy un ejemplo a ver si me explico: Supongamos que queremos dibujar una linea, entonces la cpu podría generar una matriz de pixeles y enviarsela al controlador intermedio diciendole q dibuje eso.
El controlador intermedio tomaria esa informacion, y la procesaria, convirtiendo dicha matriz en los pulsos que tiene q enviarle el generador de sincronismos al TV.
Asi mismo, la cpu podria decirle al controlador intermedio que superponga otra linea, o que borre ciertos pixeles, o lo que sea...
En qué ayuda? Bueno, liberariamos tanto a la cpu como al generador de sincronismos, que bastante ocupados estan ya. Entonces la cpu se limitaria a enviar estas instrucciones simples al pic intermedio, y el generador de sincronismos se limitaria a leer un buffer y plasmarlo en el TV.

Esto es lo q tenia en mente. De todos modos, es solo una sugerencia, creo q es una buena forma de modularizar, pero esto no implica que sea una solucion eficaz...
Tambien me parecio muy interesante lo q planteo jfh900 mas arriba... habra q analizar todas las posibilidades.

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Generador de imagenes de video con PIC
« Respuesta #102 en: 18 de Julio de 2008, 22:35:21 »
Hola amigos el tema que están tratando es muy interesante :-/,  voy a seguir muy de cerca este proyecto.

Mi intención es manejar VGA, estoy trabajando en el circuito del proyecto MyCPU para reducir el tamaño de la tarjeta de video,  pero estoy perdido  :shock: :shock: en el diagrama es muy extenso. Ya les contare …

Un pequeño aporte, como dece jfh900, si están pre-generados todo lo patrones para visualizar se podría utilizar una memoria serial EEPROM fácil de manejar con un PIC, pero si se quiere que el uC maestro envié pixel a pixel a visualizar se debe utilizar una memoria RAM pero por factores de seguridad y velocidad se debería utilizar una transmisión de datos en paralelo.

Buscado por la red encontré esta Ram serial  DS1200 pero tiene solo  1k, con el fin de ampliar la memoria se podría unir varias de estas memorias o hacer:

uC –>paralelo-> RAM –>convertidor a serial ->control Visualización(PIC)

No sé que tan factible sea aplicar esto por el tiempo de conversión.

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Generador de imagenes de video con PIC
« Respuesta #103 en: 19 de Julio de 2008, 10:54:42 »
Hola gente.

He estado leyendo bastante sobre la generación de color, y la frase clave en todo esto es: RGB encoder.
Si nos decidimos a incorporarle color a nuestra maquinita necesitamos un chip especializado que se encarge de esa parte, ya que se debe modular una subportadora de color en cuadratura de fase, lograr esto (al menos para mi), excede con creces mis posibilidades y es un trabajo sumamente complejo.
Para darles una pincelada, la idea es la siguiente:

La señal de luminancia es la suma de las señales RGB (Rojo, Verde y Azul) esta señal siempre se incluye, aun cuando se trate de señal en blanco y negro, por otro lado se necesita enviar la diferencia entre la señal de luminancia y el color rojo y entre la señal de luminancia y el color azul, escrito en fórmulas sería algo así:

Luminancia (Y) = R+G+B
Azul menos Luminancia = B-Y
Rojo menos Luminancia = R-Y

Con estas tres señales luego podemos obtener las tres componentes RGB, todo esto sucede porque como ya existía la TV blanco y negro, y en ella se envía la señal de luminancia, para mantener la compatibilidad es necesario agregar la información faltante sin alterar lo existente hasta el momento.
Estas dos ultimas señales (B-Y, y R-Y) son incorporadas como expliqué en una subportadora modulada en dos ángulos distintos, una señal modula a la portadora en un ángulo de 0º y otra señal la modula a 90º, y luego se mezcla con la de luminancia (toda una ensalada) para obtener la señal de video compuesto.

El circuito para lograr esto es muy complejo y require de frecuencias muy precisas, fuera 100% de mis posibilidades.... Pero para que reinventar la rueda.
Existen los llamados RGB encoder, que hacen este trabajo.
Basta que uno les entrege la señal de sincronismo (cosa que ya hemos logrado con el PIC, y les de los niveles de RGB y decida si quiere trabajar en PAL o NTSC y se obtiene a la salida el video compuesto).

Una posibilidad de consegir estos circuitos es en alguna vieja placa de video (VGA) con salida a TV.
Los más conocidos y o comunes son los siguientes:

MB3514 de Fujitsu
MC1377 de Motorola
CXA1645 y CXA1645M de Sony
AD724 y AD725 de Analog Devices
KA2198BD de Samsung

Quizá se consigan estos o similares en las tiendas electrónicas de vuestras ciudades.

Todos los mencionados sirven para NTSC y PAL, algunos tambien manejan audio, creo que cualquiera serviría para nuestros propósitos, pero el único inconveniente es que el patillaje es distinto.
En mi caso de una antigua tarjeta VGA podría rescatar el CXA1645M

Espero sus comentarios... Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Generador de imagenes de video con PIC
« Respuesta #104 en: 19 de Julio de 2008, 14:40:10 »
Muy interesante SavageChicken! Indudablemente será muy util para cuando nos dispongamos a hacerlo en colores ;)

Por cierto, estan usando algun programa para simular el circuito con el pic y el televisor? porq quiero probar unas ideas, y no tengo ganas de ponerme a armar el circuito y conectarlo a la tele jejeje.

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein


 

anything