PAL Testbildgenerator

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Testbild

von Casandro

Der Testbildgenerator gibt ein FuBK-Testbild mit frei wählbaren Text aus. In Zukunft können weitere Testbilder erzeugt werden.

Ein weiterer Aspekt ist, dass es dazu benutzt werden kann, zu erforschen, wie man auch dynamische PAL-Bilder mit ähnlicher Hardware erzeugen kann.

Hardware

Schaltplan

Ein ATmega32 (16MHz) mit einem einfachen R2R D/A-Wandler an Port A.

Prinzip der Software

In Register r0 bis r31 werden die Werte 0 bis 31 geladen. Nun kann man mit einfachen OUT-Befehlen innerhalb eines Taktzykluses einen 5-Bit Wert auf den Wandler geben. Bei 16 MHz ergibt sich hierbei eine Abtastrate von 16 MHz, was völlig ausreichend für Signale bis ca. 5 MHz ist.

Um Platz zu sparen finden sich in Phasen in denen sich der Wert nicht ändert, Aufrufe auf Warteroutinen.

Weiter wird die Zeile in mehrere Teile geteilt. Zum einen der Farbburst, welcher in 2 Varianten für beide Polaritäten vor liegt, zum anderen der Rest der Zeile.

Bei Zeilen, die keine Farbe enthalten, wird die Zeile nur einmal gespeichert. Farbzeilen werden jeweils in 4 Varianten gespeichert für die unterschiedlichen Phasenlagen die auftreten können.

Eine Tabelle speichert, welche Zeilen in einem Vollbild vorkommen. Am Anfang jeder Zeile wird der Eintrag aus der Tabelle gelesen, die letzten 2 Bits der durchlaufenden Zeilennummer hinzugefügt. Mit der entstehenden Zahl wird in einer anderen Tabelle die Startadresse der Zeile gelesen und dort hin gesprungen.

In Zukunft wäre es denkbar, die Ausgabe der Zeile mit Hilfe einer ISR aufzurufen um besonders in den Austastlücken Zeit für ein Hauptprogramm zu haben. Auch ist der Platz auf dem Controller sehr begrenzt. Ein ATMega644 hätte doppelt so viel Speicher und wäre mit 20 MHz auch noch ein ganzes Stück schneller.

Codegenerierung

macheinfach.sh macht einfach alles. Dazu benötigt es den Freepascal Compiler, sowie AVRA.

Die Pascalprogramme erzeugen die Signale für die Zeilen, und erstellen die Tabellen.

Anpassung des Textes

Der Text wird per SPI generiert. Der Code dazu ist in chargen.inc, die Zeichentabelle ist in charrom.inc

In generator.asm befindet sich eine Konstante, welche den ersten Text enthält.

Über die serielle Schnittstelle 9600 bps 8 Bit kann man Zeichen an das Gerät schicken.

Downloads

Ausblick

  • Wechsel auf AtMega 644, sowie AtMega 8 jeweils komplexer oder einfacher
  • Zeichengenerator auf höher aufgelöste Schrift umstellen (z.Bsp. 16x8 oder 32x8 interlace)
  • Bildgenerierung in ISR damit Platz für Hauptprogramm bleibt
  • Mehr Bildmodi, z.Bsp. Farbbalkengenerator, Textdarstellung, Kreis?

Siehe auch