Es probable que la circuitería necesaria para añadir una pantalla VGA a un PIC supere el coste y la complejidad de utilizar un chip diferente que pueda proporcionar una pantalla y también hacer lo que el PIC iba a hacer, o bien utilizar algo como una Raspberry Pi para proporcionar la pantalla y hacer que se comunique con el PIC a través de una UART o algo similar (creo que la Raspberry PI tiene al menos una UART entre sus pines de E/S).
Si tu objetivo es construirte un subsistema VGA para aprender cómo funcionan estas cosas, una interfaz VGA a 640x480 requiere la capacidad de registrar unos 32 millones de píxeles/segundo. Eso va a estar un poco más allá de las capacidades de un PIC "sin asistencia"; probablemente no tendrías que añadir mucho hardware a un PIC para permitirle emitir texto si no te importa que la pantalla acapare el procesador durante la mayor parte de cada cuadro, pero el PIC probablemente no tendría tiempo para cualquier cosa si no; cada línea de exploración requeriría que se ejecutara una secuencia de 160 instrucciones algo así como
movf POSTINC0,w,c
movwf PORTC,c
a partir de el ciclo justo y funcionando sin interrupción [el hardware tomaba ciegamente los datos de los caracteres del PORTC en el momento en que se suponía que debían estar allí, los hacía pasar por una ROM de caracteres y los cargaba en un registro de desplazamiento].
Si hicieras algo así, podría ser posible que un PIC de 32MHz generara texto de 80x25 usando algo como una ROM rápida (25ns) de 32Kx8 para mantener las formas de los caracteres y serializarlas, un contador de 3 bits para sincronizar los píxeles de cada carácter, y algunas puertas diversas; 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 80x25 azulejos que podrían ser cada uno de 256 formas; cada forma sería de 8x16 píxeles, y cualquier combinación de 256 colores [para simplificar, figura los colores probablemente sería 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 en su lugar, y proporcionar un mecanismo para alimentar los datos en el arranque del sistema.
0 votos
¿Qué intenta hacer? Un PIC no tiene ningún hardware de vídeo, ni hay ningún hardware de vídeo estándar de facto utilizado con los PIC. Cualquier software será específico para una configuración de hardware particular.
0 votos
En mi proyecto, voy a tener un buffer de texto. Quiero que ese texto aparezca en la pantalla. Quiero tener la opción de salida VGA en lugar de una pantalla LCD, para cuando quiera conectar el dispositivo a un beamer o así. Sé que es posible , pero eso es con ASM, y yo quiero una biblioteca C/Jalv2. Pero como respuesta a tu pregunta: Quiero poner un buffer de texto en la pantalla.
1 votos
El PIC adecuado podría ser capaz de producir señales VGA con una codificación cuidadosa, pero no será fácil. ¿Qué hardware pretende proporcionar entre el PIC y la salida VGA?
0 votos
En realidad no pensé en eso, así que no hay restricciones dentro de lo razonable. También está bien si hay un chip VGA disponible. ¿Lo hay? (además, he editado el post para que quede claro)
2 votos
¿Un búfer de texto de qué dimensiones? ¿Puede dedicar la mayor parte de la potencia del procesador a dar servicio a la pantalla? No conozco ningún "chip VGA" autónomo, pero podrías hacer un esclavo de pantalla serial o SPI autónomo con un pequeño FGPA o un segundo microcontrolador, ya sea uno con una velocidad de reloj muy alta y/o DMA (alguna de las partes ARM cortex quizás) o uno diseñado para tareas Impares como un propulsor de paralaje. Si te parece bien que los colores sean limitados, tu interfaz eléctrica puede ser sólo unas pocas resistencias.
0 votos
Cambiaría las dimensiones a lo que la solución puede manejar, pero necesito al menos 60 caracteres horizontales y 16 verticales. Puedo dedicar la mayor parte de la potencia del controlador a dar servicio a la pantalla. Esta pregunta es para construir un esclavo I2C. No entiendo muy bien lo que quieres decir con FGPA?
0 votos
¡+1 para Parallax Propeller! Un microcontrolador muy bonito y muy potente, pero el proceso de desarrollo es un poco extraño. En el lado negativo, es alrededor de $ 7 y requiere EEPROM externa y el cristal para VGA. Puede hacer bastantes colores usando solo resistencias para el DAC.
0 votos
Lo siento, olvidé mencionar que un color es suficiente. Editado el post y lo siento por cualquier confusión causada. @ChrisStratton ¿por qué iba a utilizar un propulsor de paralaje en lugar de un PIC?
2 votos
Uno, simplemente descargar la muy ocupada tarea de repintar constantemente la pantalla para dejar su procesador primario libre para contemplar lo que debería estar en la pantalla. Y dos, porque es más rápido, tiene múltiples núcleos y la gente ha hecho pantallas de vídeo con él. Una FPGA daría aún más flexibilidad, pero tiene una alta curva de aprendizaje y es sustancialmente más cara, incluyendo los componentes de apoyo.
0 votos
Bien, puedes presentar eso como respuesta. ¿Tienes un enlace a algo que funcione con el parallax en una pantalla VGA? Por favor, compártelo. Lo aceptaré a menos que haya mejores respuestas (usando un PIC por ejemplo, que sería más barato).
2 votos
@Camil Staps Echa un vistazo al código del Tablero de demostración de la hélice por ejemplo. Hace teclado y ratón PS/2, muestra en salida compuesta y VGA, toma muestras de un micrófono y las reproduce, todo al mismo tiempo. Otro lugar donde buscar es el Intercambio de objetos . Hay muchos objetos VGA disponibles de forma gratuita. También hay demos VGA que vienen con el IDE también.
0 votos
Ooh, ese Intercambio de Objetos es algo muy bonito, ¡gracias por el enlace! Ahora sólo esperando el paralaje como una respuesta / una respuesta basada en PIC / otra respuesta.
0 votos
Por mucho que me guste el chip Propeller (tengo una de sus placas de desarrollo profesional, cuando estaban en oferta por 100 dólares), si quieres usar el Propeller como periférico para descargar el procesador principal, entonces el Propeller no funcionará muy bien sin la misma memoria adicional. El Propeller sólo tiene 32K de RAM global, y realmente necesitas un frame buffer completo: 1024x768 = 768K bytes para que el video pueda ser refrescado continuamente.
0 votos
¿Cómo se llega a los 768Kbytes? Yo diría que
1024 * 768 / (6*8) = 16384
, así que 16,4Kbytes, ya que usaría una fuente de 5x7. No se necesita un byte por píxel, ¿verdad? Además, el 1024x768 era un máximo, menos está bien también.0 votos
@tcrosley - en realidad no creo que esta aplicación requiera un frame buffer en absoluto. En su lugar, se puede utilizar un buffer de caracteres (64*16=1K), y hacer rasterización sobre la marcha a los píxeles mientras se escanea la pantalla. Esto sería comparable a ejecutar una pantalla de PC en modo de texto en lugar de modo de gráficos de mapa de bits. Añade un poco de lógica de control del cursor y configúralo para que interactúe con la parte interactiva a través de un puerto serie o de los registros del buzón/fifos...
0 votos
@ChrisStratton Tienes mucha razón, se me había olvidado que sólo quiere hacer pruebas. Entonces el Propeller parece una buena solución. Los chips son sólo 8 dólares por unidad en cantidades individuales y se pueden conseguir en un paquete DIP.
0 votos
DarioG en los foros de Microchip.com hizo un generador de vídeo a partir de un DSPIC y publicó el proyecto para que otros lo utilizaran. microchip.com/forums/m880978.aspx