Forum: Mikrocontroller und Digitale Elektronik Composite/PAL mit AVR


von Günther (Gast)


Lesenswert?

Hallo,

erstmal vorweg, ich habe Google und die Forensuche benutzt.

Ich könnte man ein paar Denkanstöße oder Lösungsansätze für folgendes
Problem gebrauchen:
Ein Mega161 soll (neben ein paar anderen Aufgaben) ein Bild auf dem
Fernseher erzeugen. Es soll möglichst ein Composite-Signal werden. Zur
Not auch FBAS das ich dann zu Comp. mische. RGB ist eigentlich nicht
möglich. Zwar über ein extra IC der das RGB-Signal wieder umwandelt
aber ich wollte so wenig wie möglich Bauteile verwenden.
Das Bild soll in einem externen Flashspeicher angelegt werden Damit ein
einfacher austauschbar ist und nach Stromausfall auch noch vorhanden
ist.
Auflösung 320X240, Farbtiefe s/w oder 16 Graustufen. 16 Farben wären
noch besser. Je nachdem was technisch noch möglich ist.
Das erste Problem. Was für ein Bildformat kann/muß ich dafür nehmen?
Ich denke mal JPG geht nicht da die Bilddaten sicherlich unkompriemiert
vorliegen müssen. Auch wenn nicht wüsste ich nicht wie ich JPG einfach
dekomprimiere. Ich dachte an BMP oder GIF.
Die zweite Frage kann ich mir selbst beantworten wenn ich weiß was für
ein Format ich nehmen muß. Sie wäre gewesen, wie groß der Flash sein
muss.
3. Problem: Am Mega161 hätte ich nur noch etwa 10 I/O-Ports noch frei.
Was für ein Speicher wäre da am besten. Ich habe schon überlegt ein mit
I2C-Bus? 2 Leitungen sind immer übrig. Wie schnell muß der Speicher
sein? Reichen 120nS?

Für weitere Tipps, Schaltungs- und BASCOM-Beispiele wäre ich auch
dankbar. Aber ich denke mal das ich den Teil in Assembler programmieren
muß, oder?
Das Bild soll übrings nur max. 30 sec. erzeugt werden. Die anderen
Aufgaben können in dieser Zeit vernachlässigt werden.

Danke schonmal für eure Hilfe!

von Chriss (Gast)


Lesenswert?

Da thema war doch erst gerade?

In Elektor hatten die mal ein kleines Spiel programmiert, über nen
ATMEL. Glaub ich hab die Ausgabe irgendwo. Ich such mal.

Ach ja, Composite und FBAS Signal meint IMHO das Selbe.

Gruß
Chriss

von Günther (Gast)


Lesenswert?

Wo war es grade? Meinst du den Testbildgen.?
Das wäre nett wenn du die Elektor raussuchen würdest. Da ist sowas idr
gut beschrieben.
Mit FBAS meinte ich den 4-pol. SVideo-Ausgang. Mag aber auch sein das
ich da falsch liege. Zumindest meinte ich den ;)

von Rufus T. Firefly (Gast)


Lesenswert?

Chriss hat IMHO* recht, wenn für ihn Composite und FBAS dasselbe sind.

Beides besagt nur, daß die Synchronimpulse in das Videosignal
eingebettet sind und nicht getrennt übertragen werden - das ist im
Videobereich auch üblich so.

Der Knackpunkt hier dürfte die Erzeugung eines *Farb*signales (PAL)
sein, das wird so ohne weiteres nicht ohne zusätzliche Hardware drin
sein.

Eine gute Ausgangsgrundlage dürften die diversen Schaltpläne für
Videotestbildgeneratoren sein, die man zuhauf im Netz findet.

Was das eingangs erwähnte 3. Problem betrifft, so lässt sich das
leicht ausrechnen.
(Ich gehe hier der Einfachheit halber von einer 256-Graustufen-Bitmap
mit 1 Byte/Pixel aus).

Eine Videozeile incl. Austastlücke etc. ist 64 µs lang (bei 16.625 kHz
Zeilenfrequenz). Ziehen wir davon etwa 20% Overhead (eben Austastlücke
etc.) ab, so kommen wir auf ca. 50 µs nutzbare Zeilendauer.
Die ist durch die 320 Pixel horizontale Auflösung zu teilen, was etwa
156 ns/Pixel ergibt.

Dafür reichen zwar 120 ns-RAMs knapp aus, aber die daraus resultierende
Datenrate von 6.4 MByte/s wird ein AVR niemals in Software
zustandebekommen.

Fazit: Ohne spezielle Hardwareunterstützung ist da nichts zu löten.


*) genauer: IMNSVHO (not so very)

von Thomas Fischl (Gast)


Lesenswert?

Hallo,

@Chriss: du meinst wahrscheinlich den Artikel "TV-Tennis" aus Elektor
Juni 2003. Da wurde das Videosignal mit einem AT90S8515 und drei
Widerständen erzeugt.

Hier noch ein Link auf einen Artikel von ATMEL. Ist zwar NTSC, aber
vielleicht trotzdem ganz interessant:
http://www.atmel.com/dyn/resources/prod_documents/mega163_3_04.pdf

Thomas

von Günther (Gast)


Lesenswert?

Was für ein Signal erzeugt wird ist ja in erster Linie nicht so wichtig.
Chrom. und Lum. können ja zu Composite gemischt werden.
Mein Gedanke (der ja auch völlig falsch sein kann) ist aber das ein
Testgenerator anders arbeitet als ich mir das für meine Schaltung
vorstelle.
Simpel ausgedrück könnte der Generator ja für 64µS weiss erzeugen und
danach schwarz. Und es erscheint ein grauer Bildschirm.
Meine gröte Sorge ist ja, ob und wenn ja wie ich ein beliebiges Bild
erzeuge ohne jedesmal ein neues Programm zu laden.
Wenn ich es richtig verstanden habe wäre es schonmal richtig ein BMP
dafür zu nehmen.
90nS Flashspeicher gibt es ja ach. Ich dachte erstmal an worst case mit
120.
Das Problem wird also die Datenübertragung vom ext. Speicher zum AVR
sein?
Irgendwie kann ich mir das garnicht vorstellen. Selbst mit PICs werden
ja "Telespiele" gebaut. Aber das kommt ja ehr einem Testgenerator
ähnlich.

von Rufus T. Firefly (Gast)


Lesenswert?

Es ist schon ein Unterschied, ob ein Bild (bmp o.ä.) aus einem Speicher
ausgelesen und in ein Videosignal umgewandelt werden soll, oder ob nur
relativ einfache Bitmuster generiert werden sollen.
Auch die mit PICs und ähnlichem realisierten Testbildgeneratoren geben
kein "Bild" im eigentlichen Sinne aus, sondern erzeugen mehr oder
weniger einfache Signalmuster - und die haben vor allem nicht die
erwähnte Auflösung von 320x240 Pixeln.

Also: Möchtest Du ein Gerät bauen, das Bilder anzeigt, oder das
Testmuster ausgibt? Letzteres kann man in der Tat mit einem µC in
Software realisieren, ersteres nicht.

Wie ich bereits darlegte, ist zur Darstellung eines Bitmaps mit 320
Pixeln pro Zeile bereits ein Pixeltakt von knapp 6 MHz erforderlich (64
µs Zeilendauer). Selbst wenn man die Austastlücke und ähnliches
geflissentlich ignoriert, kann so ein Pixeltatk von 4 MHz nicht
unterschritten werden. Bei einer Farbdarstellung (256 Graustufen) muss
folglich mit einer Datenrate von 6 MByte/s Speicher ausgelesen und an
einen D/A-Wandler übergeben werden.

Deutlich einfacher wird es, wenn mit monochromen Bitmaps gearbeitet
wird, dann achtelt sich die Datenrate, weil dann mit einem
8bit-Schieberegister gearbeitet werden kann, das nur alle acht Pixel
mit Inhalt gefüllt werden muss.
Der resultierende Schieberegisterfülltakt von 750 kHz könnte bei
geeigneter Programmierung möglicherweise tatsächlich in Software von
einem µC bedient werden.

von Malte (Gast)


Lesenswert?

http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2004/jcc72/results.html
hatte ich vor längerer zeit mal gefunden als ich auf der Suche nach
einem Code für die Ansateuerung einer PS/2 Maus war. Die kommen
allerdings aber nur auf 125x70 Pixel un verwenden NTSC.

von Markus (Gast)


Lesenswert?

Serielles Terminal, erzeugt PAL-BAS-Signal. AT90S8515, 8MHz, 160x96
Pixel
http://members.ozemail.com.au/~intello/video_s_w.htm

Verschiedene Spiele, erzeugen NTSC-BAS-Signal, ATMega32, 16MHz, 128x100
Pixel
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/

Framework für BAS-Signal, AT90S8535, 8MHz, 64x56 Pixel
http://home.student.uu.se/r/rost7041/avr/video_game/index.html

Voltmeter, erzeugt BAS-Signal, AT90S1200, 16MHz
http://www.geocities.com/ariccibitti/dvm.htm

Bingo-Spiel, erzeugt PAL-RGB-Signal, AT90S1200, 16MHz
http://www.geocities.com/ariccibitti/bingo.htm

Farbbalken Generator, erzeugt PAL-FBAS, AT90S2313, 17,7MHz(!)
http://www.serasidis.gr/colour_bar_gen.htm

Verschiedene Spiele in Farbe, PAL-FBAS, UBICOM-SX CPU, 52MHz
http://www.rickard.gunee.com/projects/video/sx/gamesys.php

Mahpong-Spiel, erzeugt PAL-BAS, AT90S8515, 8MHz, 48x30 Pixel, 4
Graustufen
http://jkdesign.de/avrproject/Die%20MAHPONG%20Seite.htm

OSD, NTSC, AVR ATmega, 160x100 Pixel
http://www.avrfreaks.net/Freaks/freakshow.php?action=2&projectid=135
(Login erforderlich)

Uhr und Pong-Spiel auf PIC16C61, 256 Zeilen, 60Hz, Pseudo-NTSC
http://www.brouhaha.com/~eric/pic/pictock.html

Snake auf AVR ATmega163, 48x32 Pixel, NTSC, Farbe (durch AD724)
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2002/carlo/index.html

von Günther (Gast)


Lesenswert?

Ich war j aauch der Meinung, das man dies hier nicht mit einem
Testgenerator vergleiche kann.
320X240 war auch nur mal eine Zahl auf die ich mich ja nicht festgelegt
habe.
Und das s/w oder 16 Graustufen auch reichen würde habe ich ja auch
schon gesagt.
Und wie gesagt, Bilder ausgeben, ja nachdem wie meine Laune ist ein
anderes. Also kein festes Testbild.
Wenn ich 320 X 240 X 4 Bit (16 Farben) nehme, komme ich auf
38400Bytes/37,6KB. Wäre schonmal ein 64K-Speicher.

Aber wenn ich es richtig verstanden habe, wäre sogar 1Bit schon eng.
Deshalb hab ich ja geragt, ob es überhaupt möglich ist.

Was gäbe es denn sonst für Alternativen?
Dann kann es auch wieder etwas mehr Hardwareaufwand sein. z.B. mit nem
RGBtoPAL wie AD724 (halt nur für PAL und nicht NTSC) und von mir aus
auch ein extra µC.
Ziel ist es das ich vom PC aus ein Bils in einem externen Speicher
laden kann und dieses dann auf dem Fernseher angezeigt werden kann wenn
der Mega161 dafür ein Go gibt.
Das soll auch keine HighEnd DVD-like Lösung werden. Nur eine kurze Zeit
ein Bild um diese Zeit optisch zu überbrücken.
Optimal wäre noch eine Soundausgabe dazu ;)

@Markus, Vielen Dank für die vielen Links!!!
Einige kannte ich schon, aber ein großteil davon hab ich noch nicht
gefunden. Ich werd mch da nochma durcharbeiten. Leider sieht es auf den
ersten Blick alles so aus als ob die verwendeten µC das Bild selbst
generieren. Aber mal schauen was so dabei ist.

Wenn ich so an die Soundausgabe denke bietet sich ja schon fast eine
MMC/SD Karte an. Würde die Transferrate da für Bilder und Sound
reichen?

von Markus (Gast)


Lesenswert?

Wenn Du nur ein einzelnes Bild willst: Nimm einen Zähler zur
Adresserzeugung. und RAM und gib das Bild damit aus. Wenn Du dann den
AVR nur für das reinladen des Bildes nimmst sollte das kein Problem
sein. Wenn man das nur schnell genug macht, dann kann man damit auch
Farbe ausgeben.

von Rufus T. Firefly (Gast)


Lesenswert?

> Wenn ich so an die Soundausgabe denke bietet sich ja schon fast
> eine MMC/SD Karte an. Würde die Transferrate da für Bilder und
> Sound reichen?

Theoretisch ja, praktisch nein.

Die zur softwaregesteuerten Ausgabe einer monochromen Bitmap mit 320
Pixeln pro Zeile erforderliche Datenrate von 750 kByte/s stellt zwar
eine SD-Card nicht vor sonderliche Probleme, aber der AVR, der die
SD-Card nur durch "Bitwackeln" ansprechen kann, der wird das nicht
hinbekommen.

Wenn allerdings schon von Speicherkarten und dem Abspielen von Inhalten
daraus auf Fernseher die Rede ist - das Rad muss nicht unbedingt
mehrfach erfunden werden, sowas wird für den Consumermarkt zu übelst
günstigen Preisen produziert, die bei Selbstbau die Materialkosten
deutlich unterbieten.
(Ich denke da an diese kleinen Kästchen, die man an die Glotze
anschließt und in die man Speicherkarten aus Digitalkameras einsetzen
kann)

Dennoch: Wird externe Hardware verwendet, dann genügt ein SRAM, eine
Takterzeugung und einige Zählerbausteine, um einen D/A-Wandler zur
Bilderzeugung anzusteuern. Der AVR muss über Adress- und
Datenmultiplexer mit diesem SRAM verbunden werden (zum Füllen mit
Inhalten), wobei aufgrund des beschränkten Adressraumes sich entweder
eine Lösung mit Bankswitching oder aber mit sequentiellen Hochzählen
eines Adresszählers anbietet (AVR schreibt immer in gleiche Adresse,
externe Hardware bestimmt Adresse für Schreibvorgang).
Dann kann der AVR auch Bilder mit mehr als 64 kByte von einem wie auch
immer gearteten Speichermedium holen und im Bildpuffer ablegen.
Audiowiedergabe ließe sich wie bei 43 Milliarden anderen
mp3-Player-Projekten auch realisieren.

von Günther (Gast)


Lesenswert?

Bei SOund dachte ich auch an die vielen MP§-Player Projekte. Oder ganz
simple mit Waves ich denke mal die könnte man ohne weiteres abspielen.

Aber diese Kisten von denen du sprachst um die SD-Karten am Fernseher
abzuspielen kenn ich nicht. Ich hab auf die schnelle auch nix gefunden
(außer Digicams).
Kannst du mir sagen, wie die sich genau nennen? Thx :)
Oder wenigstens in welcher Preisklasse es die gibt. Ich befürchte ja
auch die sind für diese Anwendung etwas overdressed.

Ich werd mich mal du die ganzen Links arbeiten und dann das ganze wohl
auf eine kleine Animation beschränken :(
Aber das wäre ja schonmal mehr als nur ein schwarzer Bildschirm ;)

von Rufus T. Firefly (Gast)


Lesenswert?

http://www3.alternate.de/html/shop/productDetails.html?artno=MR%23D10&;

Zwar zur Zeit bei denen nicht lieferbar, aber vom Preis (49 EUR) her
wohl unschlagbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.