TV-out
Bei TV-Out soll es darum gehen, wie man mit einem Mikrocontroller ein Bild auf einem Fernseher erzeugen kann.
Anschluss
Ein Fernseher hat oft mehrere Eingänge, die wichtigsten sind der Scartanschluss, die Cinchbuchse ("FBAS"), die Hosidenbuchse ("S-Video") und der Antenneneingang.
Scart
Am Scartanschluss sind ggf. der FBAS-Eingang, ein S-Video-Eingang, oder auch der RGB-Eingang zu finden; bei Videorecordern ist der RGB-Eingang allerdings nur sehr selten belegt.
Cinchbuchse
Eine meist gelbe Buchse, an der ebenfalls das FBAS-Signal angeschlossen werden kann. Die beiden anderen Buchsen sind für Ton zuständig: Rot für den rechten, Weiss/Schwarz für den linken Kanal.
Hosidenbuchse
An der vierpoligen Hosidenbuchse werden Helligkeit und Farbe getrennt übertragen.
Antenneneingang
Damit man viele Sender über ein einziges Kabel übertragen kann, werden diese auf verschiedene Frequenzen moduliert. Das will man aber nicht selbst machen. Wer diesen Eingang benutzen will oder muss, der sollte einen fertigen HF-Modulator benutzen. Im Prinzip ist das ein "Mini-Fernsehsender", der in der Regel in einem bestimmten Bereich auf einen Kanal eigener Wahl eingestellt werden kann (z. B. 39..42). Man findet solche Modulatoren in Katalogen in der Nähe von Kameramodulen (z. B. als "UHF-Modulator") ab etwa 10 EUR.
Wer sich diese 10 EUR sparen will, kann auch versuchen, den Modulator in einem alten Videorekorder zu lokalisieren und auszubauen. Das ist meist gar nicht so schwer, denn da es sich um ein HF-erzeugendes Teil handelt, ist es zur Abschirmung oft in einem "silbernen Kästchen" mit etwa der Größe von ein bis zwei Streichholzschachteln irgendwo in der Nähe der Buchse verbaut, an der der Videorekorder normalerweise mit dem TV-Gerät verbunden wird. Bitte nicht verwechseln mit der Buchse, über die der Videorekorder sein Signal von der (Haus-) Antenne erhält, möglicherweise sitzt dort auch ein abgeschirmtes Kästchen, das wäre dann aber der für TV-Empfang zuständige Tuner. Natürlich muss man dann noch herausfinden, woher der Modulator sein TV-Signal bekommt, welche Versorgungsspannung(en) er braucht, und wenn die Abstimmung auf einen bestimmten Kanal nicht via Poti oder einem anderen, "offensichtlichen" Einsteller erfolgt, muss man auch noch herausfinden, wie dies zu bewerkstelligen ist ... (also vielleicht doch lieber im Katalog nachsehen?)
Fernsehnormen
Die wichtigsten Fernsehnormen sind PAL, NTSC und SECAM. In Europa wird hauptsächlich PAL verwendet, mit Ausnahme von Frankreich und Osteuropa, wo SECAM zum Einsatz kommt. In den USA wird NTSC verwendet. Wenn man auf einem PAL-Fernseher ein NTSC-Bild darstellt, dann ist das Bild etwas kleiner und schwarz-weiß.
Bilderzeugung
Das Bildsignal wird (F)BAS (Farb-Bild-Austast- und Synchronsignal) genannt (englisch: CVBS) und enthält nicht nur das eigentliche Bild, sondern auch Steuerinformationen.
Beim klassischen Röhrenfernseher wird das Bild durch einen Elektronenstrahl erzeugt. Das Bild wird zeilenweise von oben nach unten aufgebaut, die einzelnen Zeilen werden von links nach rechts dargestellt. Wenn der Strahl am Ende einer Zeile angekommen ist, dann muss er für die nächste Zeile wieder an den linken Rand. Diesen Vorgang nennt man den horizontalen Strahlrücklauf; in dieser Zeit ist kein Bild zu sehen. Nach der letzten Zeile muss der Strahl wieder nach oben; dies nennt man den vertikalen Strahlrücklauf.
Das PAL-Fernsehbild hat 625 Zeilen, wovon etwa 570 sichtbar sind. Es werden 50 Halbbilder pro Sekunde dargestellt, also insgesamt 25*625=15625 Zeilen pro Sekunde. Eine Zeile dauert demnach 1s/15625Zeilen = 64 µs/Zeile. Davon sind aber nur 52 µs sichtbar, die andere 12 µs werden für den horizontalen Strahlrücklauf benötigt. Der vertikale Strahlrücklauf dauert 1,5 ms (entspricht 25 Zeilen).
Einen guten Überblick geben Datenblätter zu TV-Impulsgeneratoren, wie sie früher von mehreren Herstellern angeboten wurden. Leider sind sie im Web kaum zu finden:
- Siemens S178A
- Plessey/Ferranti ZNA134
- Plessey/Ferranti ZNA234E
- Philips SAA1101 oder auch SAA1043/1044
Eine ausführliche Darstellung der Thematik findet sich z. B. bei der Vorlesung Medientechnik II der Uni Siegen. (Zugriff ist über www.archive.org möglich. Die PDF-Dateien des Vorlesungsskripts (19 MB in 8 Teilen) sind auf dem gleichen Weg erhältlich. Stand 2/2008).
Die Bilderzeugung ist ziemlich rechen- und zeitintensiv, deswegen sollte der Mikrocontroller seine anderen Aufgaben im unsichtbaren Bildbereich erledigen.
Schwarzweiß
Bei Schwarzweiß- bzw. Graustufenbildern gibt es keine feste Horizontalauflösung. Wenn man z. B. 4 Million Pixel pro Sekunde erzeugen kann, dann ergibt das eben eine Horizontalauflösung von 4000000/15625 * (52 µs / 64 µs) = 208 Pixel.
Weblinks:
- Serielles Terminal von Ingmar Meins (AT90S8535, PAL)
- MAHPONG-Spiel von Marcus Hasenstab (AT90S8515, PAL)
- TV Bild mit AVR und AVR) Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung von Benedikt K. (Atmega8, PAL)
- Simple VGA/Video Adapter von Ibragimov Maxim Rafikovich (Atmega8, Atmega16..., PAL oder VGA)
- PIC B&W Video von Richart Gunee. Inkl. PONG und TETRIS Spiel (PIC16C84, PAL)
- TV Oscilloscope, AVR Video Generator und Video Generation with Atmel AVR microcontrollers von Bruce Land.
- AVR Videotext und ARM PAL Video von Ulrich Radig.
- STIGLitz: Efficiently Generating Video with an 8 bit MCU using Software Thread Integration (ATmega128, NTSC)
- tvText is a library, that allows you to generate text display on a PAL TV using an ATmega168 running at 20MHz and two resistors to form a 2-bit DAC.
- arduino-tvout - A composite video output library for AVR/Arduino. Output is NTSC or PAL at a resolution of 128x96 by default.
- [http://www.mikrocontroller.net/topic/53139 TV VIDEO BILD BAS Frequenzzähler DVM Atmega8 Assembler
] von Bernhard S.
Farbe
Es gibt mindestens drei Arten, wie man Farbbilder (RGB-Signale) auf einem TV-Monitor darstellen kann:
per RGB-Eingang
Der RGB-Eingang am Scart-Eingang ist die einfachste Art. Aber nicht bei jedem Scarteingang ist RGB auch belegt und man kann das Bild nicht mit dem Videorekorder aufzeichnen.
Weblinks:
- Einfache Grafikkarte mit 256x252 und 256 Farben für AVR von Benedikt K. (Atmega8515 @ 16 MHz, PAL). Es werden die drei RGB-Signale und das Composite Sync Signal erzeugt, d.h. ggf. ist noch ein NTSC/PAL-Encoder notwendig.
- PAL/RGB 32x24 Zeichen mit 2x4bit Farben von Eddy-B (ATMega32 @ 16 MHz, PAL). Auch hier werden 3 RGB-Signale und ein Composite Sync Signal erzeugt.
- The AVGA project - open source AVR based color video game development platform for single chip game console.
per Hardware-IC
Man kann fertige ICs benutzen, die RGB nach FBAS wandeln können, z. B. den AD724, allerdings sind diese ICs meist relativ teuer (20 Euro).
Weblinks:
- Psychedelic Snake Spiel von Carlo Soracco und Keith Sinclair. Zur RGB nach NTSC Umwandlung wird der IC AD724 RGB to NTSC/PAL Encoder von Analog Devices benutzt. (Atmega163, NTSC)
- The Uzebox is a retro-minimalist homebrew game console. Functions such as video sync generation, tile rendering and music mixing is done realtime by a background task so games can easily be developed in C. The final design contains only two chips: an ATmega644 and an AD725 RGB-to-NTSC(/PAL) converter.
per Software
Die Erzeugung des gesamten Videosignals per Software ist sehr zeitkritisch. Will man das vernünftig machen, dann sollte die CPU genügend Leistung haben.
Weblinks:
- AVR PAL colour bar generator von Serasidis Vasilis (AT90s2313 , PAL)
- SX Games von Richart Gunee (SX28, PAL). Hier gibt es auch viele weiterführende Links!
- Phasor, like Craft, is a demo running on a custom minimalistic ATmega88-based demo platform. But it generates a composite video signal (PAL) instead of a VGA signal.
- PAL Testbildgenerator Ein ATMega32 mit 16MHz erzeugt ein statisches Testbild
- PM5544-Generator mit ATmega88
per CPLD
Eine weitere Möglichkeit besteht darin, das FBAS-Signal mittels eines preiswerten programmierbaren Logikchips (CPLD) zu erzeugen. Da der Farbträger mittels DDS aus dem Systemtakt gewonnen wird, ist zur Vermeidung von Interferenzstörungen eine Tiefpassfilterung der erzeugten Signale notwendig.
Weblinks:
per OnScreenDisplay IC
Alternativ kann man einen OSD IC benutzen. Diese verfügen meist über einen integrierten Zeichensatz, den man teilweise auch ändern kann. Meist sind diese S/W, einige Exoten sind mit Farbe, dafür dann meistens ohne eigenen Zeichensatz. Diese findet man meist in alten TVs oder Videorecordern.