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

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

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 936
Re: Generador de imagenes de video con PIC
« Respuesta #105 en: 19 de Julio de 2008, 14:46:47 »
El único simulador que conozco que emula además un televisor es miSim DE, creado en java y gratuito, aunque muy limitado, además tienes que adaptar las salidas usadas en tu programa a las que exige el simulador.

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 #106 en: 19 de Julio de 2008, 15:11:09 »
Muchas gracias! Ya me voy a poner a experimentar un poco, a ver si salen una q otra idea q tengo dando vueltas por la cabeza.
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 #107 en: 19 de Julio de 2008, 15:14:00 »
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

Excelente trabajo. Realmente excelente. Que capacidad tienes para trabajar :)
Por lo pronto , del "desarmadero de placas" de casa he recogido una Trident TD9685 del año 1997 que tiene un AD724-JR, SMD pero con paso de 0.05 pulgadas (la mitad de un DIP), 16 pines).

Estoy por sacar algunas fotos para ir documentando todo el proceso, y luego....a desoldarlo. Y a buscar la datasheet!

Ya les contaré.
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 Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Generador de imagenes de video con PIC
« Respuesta #108 en: 19 de Julio de 2008, 18:48:24 »
Hola gente !

Sigo lo más cerca que puedo el hilo y está súper !

Pollo realmente coincido con Ariel que sos un monstruo trabajando. Admiro mucho a las personas que se apasionan por una causa y luchan por sacarla a la luz cómo lo estás haciendo vós, Gera, Claudio y Ariel obviamente. (la mente perversa que ha embarcado a todos en ésto  :D )

Respecto a los codificadores RGB, en mi caso, he trabajado con el MC1377 y es una muy buena elección.
También he visto el CXA1645, pero no mucho.

Lo que veo a medida que avanza el hilo, es que van a largar directamente con color.
Eso significa que el PIC que entregue la señal al codificador, deberá generar los tres colores por separado.
El Rojo, el Verde y el Azul.
Para no complicar el trabajo inicial con el filtrado de los colores al generar el programa, se podría generar una imagen B/N única y atacar proporcionalmente la entrada RGB del codificador, para tener una señal monocromática en un TV color y después que éso esté logrado, encarar la generación de los tres colores por separado.

Es una idea.

Las proporciones a mantener en la entrada del encoder debieran ser

Y (luminancia) = 0,3 Rojo + 0,59 Verde + 0,11 Azul


Esto debe respetarse para lograr obtener un raster ó cuadro de color blanco perfecto en pantalla.
Es decir, debemos hacer divisores resistivos a la entrada de cada color del encoder, para que de los 5 Volts que entregan los PIC, vayan un 30% al Rojo, un 59% al Verde y un 11% al Azul para así lograr un Blanco.

Saludos !

Mario

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #109 en: 19 de Julio de 2008, 18:56:25 »
Hola Mario!

Gracias por tratarme de perverso. Igual, un par de ex-esposas se te adelantaron con el calificativo  :mrgreen:

Respecto de lo que comentas sobre las proporciones de R, G y B, es un buen dato.
Si no me equivoco, cuando tengamos todo bien definido, podemos armar la placa con el chip que menciona SavageChiken, y enviar R=G=B=punto, es decir, cuando debe dibujarse un punto, ponemos en alto las tres salidas correspondientes a R, G y B y listo.

(corregime si estoy diciendo disparates)

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 aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #110 en: 19 de Julio de 2008, 18:57:46 »
Otra cosa:

Los MC1377 que has manejado.....¿son "rapiñados" de algun aparato comercial, o se consiguen en las casas del ramo?
Por que si son conseguibles, podriamos usar todos el mismo, para no tener 10 hardwares distintos.

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 Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Generador de imagenes de video con PIC
« Respuesta #111 en: 19 de Julio de 2008, 19:05:01 »
Gracias por tratarme de perverso. Igual, un par de ex-esposas se te adelantaron con el calificativo  :mrgreen:

 :D  :D  :D

Si no me equivoco, cuando tengamos todo bien definido, podemos armar la placa con el chip que menciona SavageChiken, y enviar R=G=B=punto, es decir, cuando debe dibujarse un punto, ponemos en alto las tres salidas correspondientes a R, G y B y listo.

R + G + B (en las proporciones mencionadas)= PUNTO BLANCO

.... es decir, cuando debe dibujarse un punto, ponemos en alto las tres salidas correspondientes a R, G y B y listo.

Exacto.

Los MC1377 que has manejado.....¿son "rapiñados" de algun aparato comercial, o se consiguen en las casas del ramo?
Por que si son conseguibles, podriamos usar todos el mismo, para no tener 10 hardwares distintos.

Fueron comprados aquí, además son fácilmente conseguibles en cualquier lado y no son caros. ( Hasta aquí en mi ciudad hay ...imagináte ! )

Saludos !
Mario

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #112 en: 19 de Julio de 2008, 19:10:08 »
Fueron comprados aquí, además son fácilmente conseguibles en cualquier lado y no son caros. ( Hasta aquí en mi ciudad hay ...imagináte ! )

La placa de video acaba de salvar su vida a ultimo momento. La iba a "carnear" hace un rato y me entretuve con otra cosa (el generador de caracteres en CCS para GLCD).

Mejor así, puede servir entera para otro proyecto.

Creo, entonces, que ese seria el chip que deberiamos buscar. Voy a por la datasheet.

Gracias!

Edito: Datasheet del MC1377 de Motorola
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: 936
Re: Generador de imagenes de video con PIC
« Respuesta #113 en: 19 de Julio de 2008, 20:46:18 »
Hola Gente. Gracias por las palabras de aliento, la verdad es que estoy con mil cosas a la ves y no le puedo dedicar el tiempo que quisiera, ya que estoy con el trabajo, el término del tercer semestre de la universidad (pruebas y exámenes), y una mudanza "at portas", embalando todos los cachureos que tengo.

Cada ves que tomo este tema no puedo dejar de pensar que estos mismos retos y desafíos debieron haber enfrentado tipos como Sir Clive Sinclair, creador del mítico Spectrum o Steve Jobs de Apple, y que si ellos lograron lo que lograron,también nosotros podemos sacar adelante este proyecto.

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

Desconectado Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Generador de imagenes de video con PIC
« Respuesta #114 en: 20 de Julio de 2008, 13:05:17 »
Hola amigos,
Revisando el código para el generador encontré este comando
   goto    $-2
Que hace el comando?

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Generador de imagenes de video con PIC
« Respuesta #115 en: 20 de Julio de 2008, 14:49:06 »
Da un salto a dos posiciones atras.. o a 2 instrucciones atras.


SALUDOS!

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #116 en: 21 de Julio de 2008, 17:47:00 »
Esto está sacado de Wikipedia. No es demasiado tecnico, pero puede servir para tomar alguna idea. Lo "encontre" buscando otra cosa, y me parcio buena idea ponerlo aqui.

Operación técnica del video en el ZX81
Los medios técnicos usados para implementar la generación del video para la pantalla de TV, aunque brillantes, no fueron del todo estándar. El sistema funcionaba como sigue:

El ZX81 contiene, dependiendo del tipo de RAM, cuatro chips: una RAM, una ROM, un CPU y un ASIC, llamado en ese entonces ULA – (Uncommitted Logic Array). Unas resistencias fueron colocadas en serie con las líneas de datos. El CPU y la memoria ROM estaban a un lado de las resistencias de datos, y la memoria RAM en el otro. Las direcciones 0-8191 estaban asignadas a la ROM, en los últimos 512 bytes estaban contenidas las imágenes de mapa de bits del juego de caracteres, y las direcciones 16384-32767 estaban asignadas para la memoria RAM.

El video de la pantalla era manejado por interrupciones, de tal manera que el proceso normal del computador pudiera continuar durante o cerca del intervalo de blanqueo vertical. Las interrupciones pasaban el control a las rutinas que generaban el video durante el resto del tiempo disponible, entonces, la propia CPU era utilizada como un contador para controlar la salida de los datos de video, desde la memoria hacia la pantalla de TV.

El procesador procuraría saltar, en la memoria RAM, a la dirección 32768 + el principio de los datos de video. Entonces se activaban simultáneamente, la línea A15 del bus de direcciones, y una raramente usada línea de control del procesador Z80, que indicaba "ciclo de instrucción de memoria 1". El ULA detectaría esto como un intento de ejecutar una instrucción desde la memoria RAM que representa el video y capturaría los datos recuperados del bus de datos. Entonces comprobaría el bit 6 del dato, si fuera cero, el ULA colocaría en el bus de datos, para consumo del Z80, una instrucción NOP (No OPeración) que para este procesador se representa con un byte con todos los bits en cero. El CPU continuaría "ejecutando" el RAM del video de esta manera, como si fuera código de máquina del Z80, hasta que se encontrara un byte con bit 6 = 1. Este byte no sería convertido a cero por el ULA y se ejecutaría normalmente por el CPU.

El ZX81 utilizó su propio juego de caracteres no estándar. Los códigos 0-63 eran caracteres imprimibles y los códigos 128-191 era los mismos caracteres en video inverso. El único byte válido con bit 6 = 1 que se podía escribir en la memoria de video era el 118, que representaba la instrucción HALT en el Z80 y hacía que el procesador se detuviera. Este byte fue utilizado como el carácter NEWLINE.

Exceptuando la instrucción HALT, si se hubiera colocado cualquier otro byte con bit 6 = 1 en la RAM de video del ZX81, la máquina se hubiera estrellado casi inmediatamente, ya que se estarían ejecutando instrucciones al azar, sin sentido y sin control.

Una interrupción no enmascarable sería usada entonces para sacar al procesador del estado de HALT, una vez que fuera el momento de mostrar la siguiente línea de la trama.

La conversión de los caracteres en los pixels para la pantalla estaba basada también en el empleo de capacidades específicas del procesador Z80. El Z80 tiene un registro R, que originalmente fue pensado como un contador para hacer el refrescamiento de la memoria RAM dinámica. Durante un ciclo en el cual los datos no eran recuperados, la señal de control RFSH estaría activa y el contenido del contador R salía a la porción más baja del bus de direcciones. El registro de vector de interrupción I, se usaba de una manera diferente de la esperada. Una característica no documentada del Z80 ponía el contenido del registro I, en la porción superior del bus de direcciones durante este ciclo de refrescamiento.

El ZX81 tenía el mapa de bits del juego de caracteres al final de los 8K de la ROM del BASIC. La ROM estaba conectada al lado opuesto de las resistencias en serie del bus de dirección de tal manera que ciertos bits de dirección podían sobrescribirse bajo control de la ULA. El registro I podía ser cargado para apuntar a la base de la tabla del mapa de bits del juego de caracteres en la ROM y el registro contador (de refrescamiento) R también se podía usar para contar cual línea en el mapa de bits de 8x8 de un carácter debía ser exhibida.

El intérprete del BASIC en sí mismo era un completamente propietario, a diferencia de la mayoría de los microcomputadores del momento, excepto el Apple, que usaron una serie de variantes similares pero incompatibles del BASIC de Microsoft. Esto significaba que no había necesidad de cumplir con el código ASCII o cualquier otro estándar existente.

Incluso la instrucción más simple del Z80 toma cuatro ciclos para ejecutarse. Durante el primer ciclo, el procesador procuraría "ejecutar" el texto del video como dato. El ULA capturaría y guardaría el dato y forzaría, en el bus de datos, la instrucción NOP, (No OPeración) que era representada con un byte con todos los bits a cero. Durante el tercer ciclo, el procesador intentaría un ciclo de refrescamiento para la memoria RAM dinámica. El ULA utilizaría el ciclo de refrescamiento para sustituir el contenido de las líneas de dirección A3-8 del bus de dirección con los bits 0-5 del carácter almacenado. Los bits altos estarían viniendo del registro del vector de interrupciones (que estaba apuntando al juego de caracteres en la ROM), los tres bits más bajos indicarían cual fila del carácter individual era actualmente explorada. El bit 7 del byte original del carácter, sería usado internamente por el ULA para controlar el video inverso del carácter. De esta manera, un byte de pixels para la pantalla sería forzado en el bus donde entonces podía ser alimentado a un registro de desplazamiento manejado por el mismo cristal usado para generar el reloj del CPU y de allí ser enviado al aparato de Televisión.

La sincronización del video sería generada usando el mismo bit individual de I/O (E/S) que se usaba para generar la salida para la interface de la grabadora de cassettes de 250 bit/s.

Desafortunadamente, si la pantalla estaba activada, el uso de la CPU para generar el video retardaba el procesamiento para las demás cosas en un 75%.

El I/O en sí mismo también utilizó algunas características indocumentadas del Z80. Nominalmente, una dirección de puerto de I/O en el Z80 es de ocho bits. Si un registro de 8 bits es usado como la dirección (por ejemplo la instrucción IN A, [L]) lo que salía realmente por el bus de dirección de 16 bits del Z80 no era el registro L sino el par de registros HL de 16 bits, con L como los ocho bits más bajos. El ZX81 explotó esto usando los ocho bits superiores del bus de dirección para manejar las líneas de exploración para la matriz 8x5 del teclado. Los bits devueltos se podían entonces leer por un solo puerto de la entrada.

Los ocho bits más bajos de la dirección de I/O eran usados como selectores de chips para dispositivos individuales de I/O dentro de la ULA. En la configuración estándar, a menos que la impresora térmica externa opcional estuviera enchufada en el conectador de borde del bus de 40 pines, las únicas entradas/salidas presentes eran: un bit para la entrada del cassette, un bit para la salida del cassette y también usado para la sincronización de video, una palabra de cinco bits para la entrada del teclado y los registros de control requeridos para permitir activar la ULA en sí misma para la generación video. Esto significó que no todos los ocho bits fueron usados, permitiendo algún espacio limitado para extensión externa.

La RAM originalmente estaba limitada a 2K internos, las versiones de Timex instalaron la RAM en su totalidad, 2 Kx8 en un chip, mientras que el Sinclair ZX81s tenía una RAM estática 1 Kx8 o dos de 1 Kx4, o una RAM 16K externa. En la RAM externa, una línea RAMCS en el pin 40 del conectador era conectada a un nivel constante en el RAMpack para inhabilitar la RAM interna, esto debido al uso de M1 + A15 para indicar la recuperación de los bytes de los caracteres de video.

El RAMpack externo usaba ocho chips 4116, una primitiva RAM dinámica de 16 K x 1 bit en un DIP de 16 pines, con un pin de dato, 7 pines de direcciones multiplexadas, !RAS, !CAS, !WE y energía. Estos viejos chips requerían +12 V, +5 V y -5 V mientras que la fuente de alimentación interna de ZX81's era simplemente un chip 7805, un regulador lineal 5V unido a un pequeño disipador de calor de metal que llegaba a estar algo caliente debido a que el ZX81 fue alimentado por un adaptador de 9 V con un enchufe de 1/8 de pulgada. El RAMpack contenía un oscilador y algunos inductores para convertir los +5 V en los otros voltajes requeridos así como también circuitos para multiplexar las líneas de dirección. Todo esto añadía significativa complejidad interna al RAMpack.

Desafortunadamente el borde del conector del bus de 40 pines en sí mismo no tenía un recubrimiento de oro-plata, los contactos fueron cubiertos simplemente con soldadura. El sistema ZX81 actualizado era muy propenso a malas conexiones y a oxidación que lo hicieron mecánicamente muy frágil y propenso a estrellarse. Esto llegó a ser molesto pues tomaba ocho minutos recargar completamente los 16Kbyte RAM desde una cinta de cassette que a menudo no era fiable. Soluciones improvisadas hechas en casa para este problema iban desde físicamente fijar la computadora y el RAMpack a un substrato sólido, hasta poner todo el conjunto en una carcasa más grande con un apropiado teclado sobrante en lugar del original.

Otra mejora menos común hecha por algunos usuarios finales era conectar la RAM estática como "pseudo-ROM" en lugar de la ROM espejo en las direcciones 8192-16383. Al igual que la ROM, esta RAM necesitaría ser conectada en el mismo lado de las resistencias del bus de datos, de modo que pudiera ser utilizada para almacenar un juego de hasta 64 caracteres definido por el usuario. Una variante en este tema añadía un latch de un bit para guardar el más alto bit del carácter original, cuando M1 y A15 estuvieran activas simultáneamente, y usarlo para manejar uno de los bits de dirección, permitiendo que los mapas de bits de todos los 128 caracteres pudieran ser redefinidos.

Mientras que la RAM principal estaba en el lado incorrecto de los resistores del bus de los datos y de dirección para que esto trabajase, el RAM estático adicional era requerido para este enfoque. Cargar el registro I para apuntar al RAM principal no produciría el resultado deseado, en lugar de eso, mostraba basura como pixels.
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 Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Generador de imagenes de video con PIC
« Respuesta #117 en: 21 de Julio de 2008, 18:46:03 »
gracias PICmouse

Desconectado Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Generador de imagenes de video con PIC
« Respuesta #118 en: 23 de Julio de 2008, 19:26:29 »
En un libro tengo los esquemas para construir un computador con el 6502, no lo tenia a mano ya lo encontré y subo el esquema de la interface para vídeo esta sencillo, pero solo es para caracteres. también tengo otro pero utiliza un chip el CRT6845 o  MC6845, lo busque si lo vende jameco o digikey pero nada, tiene mejor resolución si alguien quiere el esquema ma avisa para subirlo.
Esquema por bloques


Circuito

Desconectado NarXEh

  • PIC10
  • *
  • Mensajes: 22
    • NärXEh's Blog
Re: Generador de imagenes de video con PIC
« Respuesta #119 en: 27 de Julio de 2008, 16:11:29 »
Buenas! :D

recien buscando en internet, encontre este link muy interesante... talves pueda ayudar en algo ( a pesar de que estube viendo el como se la rebuscaron para sacar todo adelante y los felicito  :) )

Aca les dejo el link

http://www.linusakesson.net/scene/craft/

espero que sirva de algo

saludos!

NärXEh  :)


 

anything