Ich suche nach einer Möglichkeit, einen VGA-Bildschirm mit einem PIC zu steuern. Externe Komponenten sind in Ordnung, also ist ein VGA-Chip mit I2C oder SPI oder so auch in Ordnung.
Anforderungen:
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 zur Textanzeige vergleichen, jetzt jedoch mit VGA.
Wenn es für Ihre Anwendung nicht übertrieben ist, können Sie Ihrem PIC eine ISA-Schnittstelle hinzufügen und irgendwo eine alte Grafikkarte aufheben.
Supercat weist jedoch darauf hin, dass es keinen PC gibt, um das Video-BIOS auszuführen, also würde dies wahrscheinlich nicht funktionieren.
Ich habe auf Hackaday einen Beitrag gefunden , der etwas Ähnliches mit einem AVR gemacht hat, der als Inspiration dienen könnte.
Es ist wahrscheinlich, dass die Schaltung, die zum Hinzufügen eines VGA-Displays zu einem PIC erforderlich ist, die Kosten und die Komplexität der Verwendung eines anderen Chips übersteigt, der ein Display bereitstellen und auch alles tun könnte, was der PIC tun würde, oder sonst 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 es Ihr Ziel ist, sich ein VGA-Subsystem zu bauen, damit Sie lernen können, wie solche Dinge funktionieren, erfordert eine VGA-Schnittstelle bei 640 x 480 die Fähigkeit, etwa 32 Millionen Pixel/Sekunde auszutakten. Das wird die Fähigkeiten eines "unassisted" PIC ein gutes Stück übersteigen; 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 in Beschlag nimmt, aber der PIC hätte wahrscheinlich keine Zeit für irgendetwas anders; Jede Abtastzeile würde erfordern, dass sie eine 160-Anweisungsfolge wie folgt ausführt:
movf POSTINC0,w,c
movwf PORTC,c
Starten Sie genau im richtigen Zyklus und laufen Sie ohne Unterbrechung [Hardware würde blind Zeichendaten von PORTC in dem Moment holen, in dem sie dort sein sollten, sie durch ein zeichenförmiges ROM leiten und in ein Schieberegister laden].
Wenn Sie so etwas getan haben, ist es für einen 32-MHz-PIC möglicherweise möglich, 80 x 25-Text mit etwas wie einem schnellen (25 ns) 32 K x 8-ROM zu generieren, um Zeichenformen zu speichern und sie zu serialisieren, einem 3-Bit-Zähler, um die Pixel jedes Zeichens auszutakten , 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 80 × 25-Matrix von Kacheln bereitstellen, die jeweils eine von 256 Formen haben könnten; Jede Form wäre 8 x 16 Pixel und jede Kombination von 256 Farben [der Einfachheit halber stellen Sie sich vor, die Farben wären wahrscheinlich RRRGGGBB oder so ähnlich]. Wenn man Schwierigkeiten hat, ein ausreichend schnelles 32Kx8-ROM zu finden, könnte man stattdessen ein schnelles 32Kx8-RAM verwenden und einen Mechanismus zum Einspeisen von Daten beim Systemstart bereitstellen.
David Tweed
Benutzer17592
Olin Lathrop
Benutzer17592
Chris Stratton
Benutzer17592
AndrejaKo
Benutzer17592
Chris Stratton
Benutzer17592
AndrejaKo
Benutzer17592
trosley
Benutzer17592
1024 * 768 / (6*8) = 16384
, also 16,4 KB, da ich eine 5x7-Schriftart verwenden würde. Sie brauchen kein Byte pro Pixel, oder? Auch die 1024x768 war ein Maximum, weniger ist auch in Ordnung.Chris Stratton
trosley
Benutzer4574