mikrocontroller.net

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


Lieber AdBlock-Nutzer, wir mögen störende, blinkende Flash-Anzeigen genauso wenig wie du. Deshalb zeigt Mikrocontroller.net ausschließlich nicht animierte Text- und Bildanzeigen an. Vielleicht möchtest du AdBlock für diese Seite deaktivieren? (Diese Meldung verschwindet automatisch nach ein paar Seitenaufrufen.)
Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
6 lesenswert
nicht 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
Autor: Christian Berger (casandro) Flattr this
Datum:

Bewertung
1 lesenswert
nicht 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
Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht 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_Testbi...
Beitrag "AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !"

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

Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Guido C. (guidoanalog)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Berger (casandro) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Christian Berger (casandro) Flattr this
Datum:

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

Autor: Nils S. (krumeltee) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Berger (casandro) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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ß.

Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Berger (casandro) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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_...
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.

Lade...