VGA interactuando con PIC

6

Estoy buscando una manera de controlar una pantalla VGA con un PIC. Los componentes externos están bien, por lo que un chip VGA con I2C o SPI o algo está bien también.

Requisitos:

  • Resolución: 1024x768 máx., sin mínimo
  • Idioma: C (compilador C18) o Jalv2
  • Sólo texto, no se necesitan gráficos (pero estaría bien si también tuviera eso)
  • Un color es suficiente, por lo que la conversión a DA está fuera del alcance de esta pregunta

En mi proyecto tengo un búfer de texto que quiero tener en una pantalla. Puede compararlo con el uso de una pantalla LCD para la visualización de texto, pero ahora con VGA.

    
pregunta Keelan

2 respuestas

3

Si no es una exageración para su aplicación, puede agregar una interfaz ISA a su PIC y elegir una tarjeta de video vieja en alguna parte.

Sin embargo, supercat señala que no hay una PC para ejecutar el BIOS de video, por lo que probablemente esto no funcione.

Encontré un post en hackaday haciendo algo similar con un AVR eso podría ser bueno para la inspiración.

    
respondido por el Phil Frost
1

Es probable que el circuito requerido para agregar una pantalla VGA a un PIC exceda el costo y la complejidad de usar un chip diferente que podría proporcionar una pantalla y también hacer lo que fuera que iba a hacer el PIC, o bien usar algo como una Raspberry Pi para proporcionar la pantalla y hacer que se comunique con el PIC a través de un UART o algo similar (creo que la Raspberry PI tiene al menos una UART entre sus pines de E / S).

Si su objetivo es construirse un subsistema VGA para que pueda aprender cómo funcionan estas cosas, una interfaz VGA de 640x480 requiere la capacidad de registrar aproximadamente 32 millones de píxeles / segundo. Eso va a ser un poco más allá de las habilidades de un PIC "no asistido"; es probable que no tenga que agregar mucho hardware a un PIC para permitir que salga el texto si no le importara que la pantalla acapare el procesador durante la mayoría de cada cuadro, pero es probable que el PIC no tenga tiempo para < em> cualquier cosa else; cada línea de escaneo requeriría que ejecutara una secuencia de 160 instrucciones, algo así como:

movf  POSTINC0,w,c
movwf PORTC,c

comenzando en solo el ciclo correcto , y ejecutándose sin interrupción [el hardware tomaría a ciegas los datos de los caracteres de PORTC en el momento en que se suponía que debía estar allí, los alimenta a través de una ROM de forma de caracteres, y cargarlo en un registro de desplazamiento].

Si hicieras algo así, es posible que un PIC de 32MHz genere texto de 80x25 usando algo como una ROM rápida (25ns) de 32Kx8 para contener formas de caracteres y serializarlos, un contador de 3 bits para controlar los píxeles de cada personaje, y unas cuantas puertas misceláneas; probablemente se podría usar uno de los módulos PWM del PIC para manejar la sincronización horizontal. Este enfoque proporcionaría una matriz de azulejos de 80x25 que podría tener cualquiera de 256 formas; cada forma sería de 8x16 píxeles, y cualquier combinación de 256 colores [para simplificar, imagínese que los colores probablemente serían RRRGGGBB o algo así]. Si uno tuviera problemas para encontrar una ROM de 32Kx8 lo suficientemente rápida, podría utilizar una RAM de 32Kx8 rápida y proporcionar un mecanismo para ingresar datos en el arranque del sistema.

    
respondido por el supercat

Lea otras preguntas en las etiquetas