Generador AVR VGA
Este simple circuito constituye el hardware para [Andrew’s] Generador de VGA basado en AVR. Se las arregló para que ATmega1284 emitiera una señal VGA estable. Cualquiera que haya estudiado el estándar VGA sabrá que se trata de un logro eficaz. Eso es porque VGA ya era hora, y eso le presentó un problema casi de inmediato.
El chip funciona a una velocidad máxima de 20 MHz. [Andrew] logró escribir un código que realizaba la sincronización horizontal y vertical con esta velocidad. Pero no quedaban suficientes ciclos de reloj para lidiar con el almacenamiento en búfer de tramas. Su solución fue overclockear el chip a 25 MHz. Suponemos que eligió esto porque tenía un cristal a mano porque creemos que sería más fácil usar un cristal de 25.174 MHz, que es una de las velocidades que se enumeran en la especificación.
El rojo, el verde y el azul obtienen cada uno su propio rango de dos bits seleccionado con un conjunto de resistencias para un total de 64 colores. Como puede ver en el video después del descanso, el video de 128 × 96 píxeles funciona. [Andrew] planea expandir el alcance del proyecto desde aquí para hacerlo más versátil que simplemente mostrar imágenes estándar. El código (escrito en ensamblado) está disponible en su repositorio de GitHub.
casa dice:
Esto da mucho miedo. Tengo que recomendar un chip de hélice si quieres hacer una salida vga, pero hay mucha elegancia en este método. Me pregunto si funcionaría bien con el 25.174.
Haka Viro dice:
Impresionante, pero con la salida HDMI Pi, hace que los chips AVR como estos parezcan dinosaurios.
Sven dice:
El pi es enorme y muy caro en comparación con un AVR.
Digamos que quieres hacer un dongle desechable para que quepa en la parte posterior de algunas pantallas para mordaza, no usarías rpis para eso, ¿verdad?
Alex Rossie dice:
RPi tiene serios problemas con la sobreexploración que requiere años para ajustarlo. ¿Por qué es esto? ¿Cómo funcionan todos mis otros dispositivos HDMI? Sólo curioso.
Mike Field dice:
Porque está creado para su uso con televisores que de forma predeterminada (por alguna estúpida razón) tienen algún tipo de renderizado al 10% activado.
Por lo general, cuando lo apaga, también obtiene una imagen más visible de sus otras fuentes.
luego dice:
La sobreexploración de la era analógica se debe a muchas razones. Los primeros televisores usaban tubos de radar redondos y redundantes, pero el estándar de video aún especificaba una imagen rectangular. En estos televisores, las esquinas rectangulares simplemente se cortaron dentro del tubo, lo que resultó en una imagen redonda, por lo que las esquinas se sobreexploraron.
En los decorados más modernos con tubos rectangulares o semi-rectangulares, el sobreimpulso todavía era común. Una de las principales razones por las que la mayoría de los conjuntos de consumidores tenían suministros de electricidad de mierda. La imagen florecería dependiendo del brillo promedio de la pantalla. Si en uno de estos conjuntos desagradables lo pones con un escaneo secundario 0, entonces mostraría una pantalla completamente blanca, la imagen se encogería debido al debilitamiento de la electrotensión y luego obtendría bordes negros alrededor de su imagen. Es por eso que un video analógico tenía un área segura de programa. Básicamente, los productores de contenido tenían que asumir que aproximadamente el 10% de la imagen alrededor de los bordes no era adecuada para mostrar elementos como texto o superposiciones de gráficos. de lo contrario, se arriesgarían a que se cortara parte del texto o la superposición del sobreescaneo. Este programa de área segura aún continúa en el mundo digital actual. Algunas pantallas LCD modernas todavía son demasiado escaneables con una pequeña cantidad, por lo general, menos del 5%. También visto a menudo en las cadenas de televisión, los logotipos no estarán del todo en la esquina, como era de esperar. Esto es para personas que todavía pueden estar usando televisores analógicos antiguos con convertidores digitales. Estos convertidores generalmente listos para usar solo mostrarán la parte central 4: 3 del video 16: 9. Los logotipos están ligeramente apartados de las esquinas, por lo que aún se mostrarán en estos televisores antiguos que cortan el video 16: 9.
Otra razón para escanear en exceso después de que cierta información, como los subtítulos cerrados, se enviaran "digitalmente" como patrones en la imagen en sí usando la línea 21 y otras líneas con números inferiores, era necesario que la imagen se escaneara en exceso para no ver estos patrones flagrantes. Si alguna vez ha visto un televisor analógico con un escaneo excesivo apagado, uno con una fuente de alimentación realmente mala o un video analógico capturado digitalmente que se muestra en un televisor moderno con poco o ningún escaneo excesivo, aquí están todos esos puntos blancos parpadeantes en la parte superior de la imagen. Un circuito en el televisor detectaría y descifraría estos patrones para cosas como subtítulos, establecería automáticamente la hora y, en algunos televisores de alta calidad, podría mostrar el nombre del programa que se está transmitiendo actualmente.
testrando dice:
Eso no es un problema con la Raspberry Pi. Se trata de Raspbian, el entretenimiento de Debian que ofrece la fundación.
Max dice:
¿Por qué no usar XMEGA? Admiten hasta 32 MHz de forma nativa (y requieren ajustes mínimos al migrar avers normales) ...
testrando dice:
¿Por qué no utilizar una CPU x86?
Alex Rossie dice:
Buen trabajo, hice mucho trabajo VGA con FPGA, afortunadamente después de comenzar, usualmente oro después de obtener los relojes adecuados. Su millaje puede variar, válido para televisores digitales más que nunca. ¡Lo que funciona en uno puede que ni siquiera funcione en otro modelo!
Stoopido dice:
Hice eso durante mi año escolar ... Me encontré con muchos problemas. Pero usé un chip 16F877A funcionando a 4 MHz y la única salida real que obtuve fue un controlador. Apagado / encendido básico de la salida ... Traté de iniciarlo a 20 Mhz, pero no pude encenderlo. Aunque fallé en el proyecto, obtuve el 100% porque reconozco los límites. del chip en el resumen ... El profesor estaba realmente impresionado de que pudiera hacer tanto como hice con él ...
gardema dice:
Bien hecho 🙂 Parece que tienes profesores buenos (y educados).
Ryan Voots dice:
También útil para hacer esto, Quinn Dunki lo hizo con Atmega324, corriendo a 10 MHz en lugar de overclocking. Reduzca a la mitad la resolución para que pueda salirse con la suya en un mejor momento y algunas otras cosas también.
Jacobo dice:
¿No es un proyecto AVR un arduino? ¿Me engañaron mis ojos?
Labio Wagner dice:
Sí, eso es asombroso. Hace 15 años, el 80% de los desarrolladores de Atmel AVR lo hacía en lenguaje C, mientras que el resto del 20% (como yo) lo hacía en lenguaje ensamblador, el más bonito y limpio de todos. Con la avalancha de Arduinos, ahora el 95% de los "programadores" reales (si pudiéramos llamarlos) usan este tipo de persona "lavavajillas ayer, desarrollador hoy" para conectar el hardware y los programas al estilo de "interpretación". Me pregunto qué pasará en 10 años sobre el verdadero conocimiento del microcontrolador y el hardware. Recientemente, en una reunión del vecindario, una esposa estaba muy feliz de que su esposo se hubiera convertido en programador de computadoras, bueno, ya que he estado en electrónica y programación desde la época de los chips 4004/8008 de 1960, era natural para mí acercarme a la chico y comenzar una conversación. Luego de felicitarlo por el nuevo lugar en su vida profesional, mi primera pregunta fue “¿cuánto tiempo llevas en la programación de computadoras?”, La respuesta fue divertida: “Desde el fin de semana pasado” ... Fue impactante, pero sigo con mi preguntas: "¿Qué plataformas y lenguajes de programación?", por supuesto que la respuesta solo podría ser "Arduino" .... bueno, sí, eso es un comienzo.
Arlet dice:
Aquí hay otro: http://www.lucidscience.com/pro-vga%20video%20generator-1.aspx
elias dice:
Hay muchos otros ejemplos. Uno de los más bellos es este demo de Linus Aknesson: http://www.linusakesson.net/scene/craft/
Incluso abusa del SPI para producir gráficos de alta resolución.
Peterbjornx dice:
Lo hizo en Uno una vez, usó los temporizadores para sincronizar y SPI para un píxel, logró obtener resoluciones bastante altas (2 píxeles reales para un píxel suave y 4 líneas para una línea suave) también
Perro espacial dice:
bonita presentación, implementación de accesorios para compartir el código.
No puedo esperar a ver al personaje trabajando para actualizar images.t