Forum: Projekte & Code TV BILD AVR BAS FBAS VOLLGRAFIK 320x256 Kreise Linien Punkte ASCII Assembler Atmega1284P


von Bernhard S. (bernhard)



Lesenswert?

Geschätztes Forum,

dieses Videogenerator-Assembler-Programm erzeugt mit einem 20MHz Takt 
und einem ATmega1284P ein s/w Bild auf einem TV-Monitor mit 320x256 
Pixeln.

Dieses etwas verstaubte Projekt animierte mich dazu:
Beitrag "TV  VIDEO BILD BAS Frequenzzähler DVM Atmega8 Assembler"

Ein 64µs-Timer arbeitet im CTC-Modus und generiert gemeinsam mit einem
Port (Port als 8-BIT-Schieberegister) die erforderlichen TV-Signale.

Ein weiterer Timer dient als Kontroll-Timer um eine sogenannte 
Takt-Korrektur zu ermöglichen, denn ein Interrupt-Vector wird nicht 
immer mit der gleichen Anzahl von Takten angesprungen.

Die Generierung per SPI erwies sich als schwierig.


Ich habe mir erlaubt, die Zeit der hinteren Schwarzschulter dafür zu
nutzen, um den Dateninhalt der zu sendenden TV-Zeile zu überprüfen.

Dazu wird eine TV-Zeile in Bereiche unterteilt und diese Bereiche 
einzeln auf Dateninhalt geprüft.

Liegen keine Daten vor, d.h. die TV-Zeile wäre sowieso dunkel getastet,
dann wird sofort die Interrupt-Routine verlassen und keine "NULL-DATEN" 
gesendet, das spart wertvolle Takte.

Im Bild "B14_CPU_RECHENLEISTUNG.JPG" sieht man deutlich den Unterschied.

Zuerst wird die Rechnenleistung (einfache Zählerschleife) bei einem 
TV-Schwarz-Bild ermittelt und anschließend bei einem TV-Bild bei der 
alle Nutz-Zeilen komplett gesendet werden müssen. Der µC benötigt dann 
mehr Takte, um die TV-Zeilen komplett zu generieren.

Gegenwärtig erzeugt dieses Programm nur diverse geometrische Figuren, 
Menue-Führung und Tastenabfrage ist noch nicht eingebunden.


Eine kleine Analog-Uhr konnte ich mir nicht verkneifen.

Übrigens, die TV-Norm wird nach meiner Meinung korrekt erfüllt, es 
dürfte auf den analogen oder digitalen TV-Monitoren keine Probleme 
geben, wenn die erforderlichen Pegel 0V=ultraschwarz 0,3V=schwarz 1V= 
weiss an den Eingängen anliegen.

Der Assembler-CODE ist nicht optimal, es gibt noch viele 
Verbesserungsmöglichkeiten.

Für Hinweise bin ich sehr dankbar.


Bernhard


Nachtrag: Die Kreise sehen auf diesem nostalgischen s/w Fernseher aus 
den 90-ern nun wirklich nicht rund aus, sie sind es aber.

Die einzelnen Pixel sind aber auf ihm sehr gut erkennbar.

: Bearbeitet durch User
von Christian B. (casandro)


Lesenswert?

Schick, wobei das natürlich mit 16k RAM einfach ist, und dann natürlich 
die luxuriösen 3 Taktzyklen pro Pixel :)
Was man jetzt noch machen könnte wäre RLE um eine höhere Auflösung und 
ggf. Graustufen zu kriegen. :)


Der Fernseher ist übrigens älter, der ist nicht aus den 1990gern. Wenn 
Du den auf machst, wirst Du Teile "Made in USSR" finden. Das war ein 
populäres Exportgerät.

Übrigens die Spannungspegel am BAS sind relativ wurscht. Die geben im 
Prinzip nur die Helligkeit an. Dein Fernseher regelt das eh nach.

: Bearbeitet durch User
von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@alle

das ist die "Minimal-Version", also das Fundament dieses 
Videogenerators.


Was nicht dringend zum Bildaufbau erforderlich ist wurde eliminiert.


Es besteht nur aus einem 64µs Timer und Kontrolltimer.


Drei Striche (aus dem SRAM-Bildspeicher) werden dargestellt, damit man 
wenigstens etwas sieht.


Optimierungspotential ist noch reichlich vorhanden.

Könnte ev. als Grundlage für andere Projekte dienen.

Bernhard

von Joachim B. (jar)


Lesenswert?

Klasse, da muss doch sofort das Testbild in PAL rein,
Farbbalken Gitter Kreis Textterminal

es gab doch schon ein Projekt für den m32 mit Farbe und PAL kann man den 
Code nicht gleich mal einbauen?

http://www.mikrocontroller.net/articles/PAL_Testbildgenerator
Beitrag "AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !"

http://www.mikrocontroller.net/articles/TV-out

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@Christian

>Du den auf machst, wirst Du Teile "Made in USSR" finden. Das war ein
>populäres Exportgerät.

Du hast Recht, stammt vermutlich aus "СССР", typische Hartfasterplatten, 
handgelötet ... und funktioniert heute noch :-)

Hatte es damals für knapp 90 DM käuflich erworben,
war mein Begrüßungsgeld ^^

> Übrigens die Spannungspegel am BAS sind relativ wurscht. Die geben im
> Prinzip nur die Helligkeit an. Dein Fernseher regelt das eh nach.

Moderne Geräte ja, die älteren nur in einem schmalen Bereich, das Bild 
fängt dann gern mal an zu "laufen", wenn der Synchronimpuls zu schwach 
vertreten ist.



@Seppi (Gast)

>Braucht keiner. Nur Spielereien für Kinder.

Eben nicht, die Augen werden nicht besser, da müssen die Displays / 
Monitore halt größer werden :-)


Bernhard

: Bearbeitet durch User
von Bernhard S. (bernhard)


Lesenswert?

@Joachim B.

>Klasse, da muss doch sofort das Testbild in PAL rein,
>Farbbalken Gitter Kreis Textterminal

Vielleicht kann uns Christian an dieser Stelle weiter helfen, er hatte 
sich schon tiefgründiger mit dieser Materie beschäftigt.


Es liefen auch schon diverse Versuche dazu:

Beitrag "ATMega32 16 MHz PAL mit Farbe ohne externen Chip"


Die Frage ist nur, wie kann man mit handelsüblichen Bauelementen ein 
PAL-Signal generieren, es würde vielleicht schon Rot-GRÜN-WEISS 
ausreichen.

@Christian

>Was man jetzt noch machen könnte wäre RLE um eine höhere Auflösung und
>ggf. Graustufen zu kriegen. :)

Was ist RLE?




Bernhard

von Guido C. (guidoanalog)


Lesenswert?

Hallo,

Bernhard S. schrieb:
>>Was man jetzt noch machen könnte wäre RLE um eine höhere Auflösung und
>>ggf. Graustufen zu kriegen. :)
>
> Was ist RLE?

Vermutlich ist hier eine Lauflängenkodierung gemeint.
http://de.wikipedia.org/wiki/Laufl%C3%A4ngenkodierung

Mit freundlichen Grüßen
Guido

von Christian B. (casandro)


Lesenswert?

Also RLE könnte hier zum Beispiel folgendermaßen funktionieren:
Das Byte im Speicher wird in 2x4 Bits aufgeteilt. Die einen geben die 
Farbe/Graustufe an, die anderen wie viele Pixel diese da bleibt.
Dekodieren kann man das entweder per Schleife, oder per IJMP oder so 
Befehl.

Farbe selbst braucht mindestens die doppelte Farbunterträgerfrequenz als 
Abtastfrequenz bei PAL, weil man durch PAL die 
Quadraturamplitudenmodulation auch durch eine Amplitudenmodulation 
ersetzen kann. Dann wird allerdings die Farbinformation über 2 
aufeinanderfolgende Zeilen verteilt.

Einfach wird das ganze, wenn man den Controller auf einem ganzzahligen 
Vielfachen der Farbunterträgerfrequenz laufen lassen kann, denn dann 
werden die Bitmuster die man ausgeben muss, einfache 10101010 Sequenzen. 
Ich habe leider keine praktische Erfahrung damit Quarze auf Obertönen zu 
betreiben. Quarze für die entsprechenden Frequenzen sind leider 
schwierig zu finden.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Christian Berger schrieb:
> Quarze für die entsprechenden Frequenzen sind leider
> schwierig zu finden.

Eigentlich sollten sowohl 8,867 Mhz (2*Fsc) als auch 17,734 MHz (4*Fsc) 
nicht so schwierig zu finden sein, ich jedenfalls habe davon jede Menge 
in der Quarzkiste - ausgeschlachtet aus Videogeräten des letzten 
Jahrhunderts. 17,734 bietet sich als Taktfrequenz gut an, da es ja den 
AVR schon ganz gut ausnutzt. Die Quadraturmodulation von PAL allerdings 
hat es in sich, denn zumindest Rekorder sind recht mäkelig, wenn die mit 
Hfreq/2 wechselnde Farbphase nicht stimmt.

Wichtiger wäre für mich die Frage, wie das mit modernen 16:9 Flachies 
(natürlich SD und nicht HD) aussehen würde, denn 4:3 Glotzen sind ja so 
gut wie ausgestorben.

: Bearbeitet durch User
von Christian B. (casandro)


Lesenswert?

Moderne Fernsehgeräte haben in aller Regel exzellente PAL-Dekoder drin 
die aus so ziemlich allem noch ein gutes Bild machen können.

von Nils S. (krumeltee) (Gast)


Lesenswert?

Christian Berger schrieb:
> Moderne Fernsehgeräte haben in aller Regel exzellente PAL-Dekoder drin
> die aus so ziemlich allem noch ein gutes Bild machen können.

Hehe, der ist gut :)

Eher im Gegenteil.

von Christian B. (casandro)


Lesenswert?

Ich weiß nicht was Du da hast, aber mein türkisches Markenfabrikat kann 
bei meinem FuBK Testbild sogar noch die 4,33 MHz Streifen einwandfrei 
und ohne jedwede Cross-Colour-Störung darstellen.

Das Bild ist halt relativ groß.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@alle
@Matthias

> ... denn 4:3 Glotzen sind ja so gut wie ausgestorben.


Das 4:3 / 16:9 Problem beschäftig mich schon seit Tagen.


Die 16:9 Uhr sieht in diesem Beispiel doch etwas seltsam aus.

Hab mir mal die Pixel genauer angeschaut.


Was passiert eigentlich beim 16:9 Format?

Werden die Zeilen enger oder muss ein Pixel kürzer sein?

Bernhard

von Christian B. (casandro)


Lesenswert?

Bernhard S. schrieb:
> Was passiert eigentlich beim 16:9 Format?
>
> Werden die Zeilen enger oder muss ein Pixel kürzer sein?

Die Pixel werden einfach breiter. Bedenke: Pixel müssen nicht 
quadratisch sein. Die Idee von quadratischen Pixeln ist relativ neu und 
stammt aus der Computergraphik nichts aus dem Videobereich. Deshalb 
haben die meisten digitalen SD-Videonormen auch keine quadratischen 
Pixel.

Du kannst aber dem Fernsehgerät relativ einfach vorgeben, wie Du das 
Bild dargestellt haben möchtest. Dafür gibts das WSS.
http://www.eetasia.com/ARTICLES/1999NOV/1999NOV15_AMD_MSD_AN.PDF
Dieses Signal hast Du bestimmt schon mal gesehen. Das sind die weißen 
Streifen die seit Mitte der 1990ger in PAL-Plus Sendungen zu sehen sind.

Damit kannst Du dem Fernsehgerät zum Beispiel einfach sagen, dass es die 
mittleren Zeilen verwendet.

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.