Ich suche nach einer Möglichkeit, einen VGA-Bildschirm mit einem PIC zu steuern. Externe Komponenten sind in Ordnung, daher ist auch ein VGA-Chip mit I2C oder SPI oder etwas in Ordnung.
Bedarf:
- Auflösung: max 1024x768, kein Minimum
- Sprache: C (C18-Compiler) oder Jalv2
- Nur Text, keine Grafik notwendig (aber es wäre okay, wenn es das auch hätte)
- Eine Farbe ist ausreichend, daher fällt die DA-Konvertierung nicht in den Rahmen dieser Frage
In meinem Projekt habe ich einen Textpuffer, den ich auf einem Bildschirm haben möchte. Sie können es mit der Verwendung eines LCD-Displays für die Textanzeige vergleichen, jetzt jedoch mit VGA.
Antworten:
Wenn es für Ihre Anwendung nicht übertrieben ist, können Sie Ihrem PIC eine ISA-Schnittstelle hinzufügen und irgendwo eine alte Grafikkarte abholen.
Supercat weist jedoch darauf hin, dass es keinen PC gibt, auf dem das Video-BIOS ausgeführt werden kann. Daher würde dies wahrscheinlich nicht funktionieren.
Ich habe auf Hackaday einen Beitrag gefunden , der etwas Ähnliches mit einem AVR macht, der gut zur Inspiration sein könnte.
quelle
Es ist wahrscheinlich, dass die zum Hinzufügen eines VGA-Displays zu einem PIC erforderliche Schaltung die Kosten und die Komplexität der Verwendung eines anderen Chips übersteigt, der ein Display bereitstellen und auch das tun könnte, was der PIC tun würde, oder etwas wie eine Himbeere Pi, um das Display bereitzustellen und es über einen UART oder ähnliches mit dem PIC kommunizieren zu lassen (ich denke, der Raspberry PI hat mindestens einen UART unter seinen E / A-Pins).
Wenn Sie sich ein VGA-Subsystem erstellen möchten, damit Sie lernen, wie solche Dinge funktionieren, erfordert eine VGA-Schnittstelle mit 640 x 480 die Fähigkeit, etwa 32 Millionen Pixel / Sekunde zu takten. Das wird ein gutes Stück über die Fähigkeiten eines "nicht unterstützten" PIC hinausgehen. Sie müssten einem PIC wahrscheinlich nicht viel Hardware hinzufügen, damit er Text ausgeben kann, wenn es Ihnen nichts ausmacht, wenn das Display den Prozessor während des größten Teils jedes Frames überlastet, aber der PIC hat wahrscheinlich keine Zeit für irgendetwas sonst; Jede Scanlinie würde erfordern, dass sie eine Sequenz mit 160 Befehlen ausführt, etwa wie folgt:
ab genau den richtigen Zyklus und ohne Unterbrechung ausgeführt [Hardware zur Zeit blind Schnappen Zeichendaten aus PORTC wäre es sollte dort sein, fütterte es durch eine Zeichenform ROM, und es in ein Schieberegister geladen werden ].
Wenn Sie so etwas getan haben, kann ein 32-MHz-PIC möglicherweise 80x25-Text mit einem schnellen (25 ns) 32Kx8-ROM generieren, um Zeichenformen zu speichern und zu serialisieren, einem 3-Bit-Zähler, um die Pixel jedes Zeichens zu takten und ein paar verschiedene Tore; Man könnte wahrscheinlich eines der PWM-Module des PIC verwenden, um die horizontale Synchronisation zu handhaben. Dieser Ansatz würde eine 80x25-Matrix von Kacheln liefern, die jeweils eine von 256 Formen haben könnten; Jede Form wäre 8x16 Pixel groß und jede Kombination von 256 Farben [der Einfachheit halber wäre die Farbe wahrscheinlich RRRGGGBB oder so ähnlich]. Wenn man Probleme hat, ein ausreichend schnelles 32Kx8-ROM zu finden, kann man stattdessen ein schnelles 32Kx8-RAM verwenden und beim Systemstart einen Mechanismus zum Einspeisen von Daten bereitstellen.
quelle