www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bildverzerrung bei ATmega Videosignal beheben


Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mein Videosignal (BAS) zieht unschöne Wellen und ich find den Fehler
einfach nicht. Problem ist, am Bildanfang und beim Übergang Schwarz -
Weiß zieht das Bild extreme Wellen (die Wellen sind umso schwächer je
dunkler das Weis), in den ersten Zeilen ist das Bild auch schmaler und
nimmt erst "allmählich" die richtige Breite an. Außerdem brummt der
Fernseher laut (??)

Ich vermute es liegt irgendwie am VSync. Habe mich aber genau an die
Spezifikationen für V - und HSync gehalten
(http://www.2cool4u.ch/tv_signal_measurement/tv_sig...)
und alles mehr als nur einmal durchgerechnet, es stimmt alles auf den
Takt genau. Trotzdem diese Verzerrungen. Das Signal wird folgendermaßen
generiert:

1. Halbbild:

5 Hauptimpulse (je 27.3µs = 491 Takte Sync = LO, 4.7µs = 85 Takte Sync
= HI)
5 Nachtrabanten (je 2.35µs = 42 Takte Sync LO, 29.65µs = 534 Takte Sync
HI)
33 schwarze Zeilen: (12µs HSync, 50µs Schwarz)
256 Zeilen mit Videodaten (12µs HSync, 2.5µs Schwarz, 45µs Videodaten,
2.5µs Schwarz)
16 schwarze Zeilen (wie oben)
5 Vortrabanten (je 2.35µs = 42 Takte Sync LO, 29.65µs = 534 Takte Sync
HI)

2. Halbbild:

5 Hauptimpulse (je 27.3µs = 491 Takte Sync = LO, 4.7µs = 85 Takte Sync
= HI)
5 Nachtrabanten (je 2.35µs = 42 Takte Sync LO, 29.65µs = 534 Takte Sync
HI)
0.5 Zeilen (32µs Schwarz, kein HSync)
33 schwarze Zeilen: (12µs HSync, 50µs Schwarz)
256 Zeilen mit Videodaten (12µs HSync, 2.5µs Schwarz, 45µs Videodaten,
2.5µs Schwarz)
15 schwarze Zeilen (wie oben)
0.5 Zeilen (12µs HSync, 20µs Schwarz)
5 Vortrabanten (je 2.35µs = 42 Takte Sync LO, 29.65µs = 534 Takte Sync
HI)

HSync wie folgt: 1.5µs Sync HI 4.7µs = Sync LO, 5.8µs Sync HI

Ja, ich habe auch die Takte von Prozeduraufrufen et.c. mit
berücksichtigt und Sync ist bei Schwarz immer HI. Ich weiß wie gesagt
nicht worans hängt und versuche schon seit Tagen das zu beheben. Könnte
es vielleicht auch sein dass der 18MHz Quarz zu ungenau ist und ein Oszi
benötigt wird?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal dein Programm.
Die Genauigkeit des Oszillators ist nur bei FBAS notwendig. Selbst mit
internem RC Oszillator läuft die FBAS Ausgabe.

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab jetzt meine Unterlagen nicht bei der Hand aber aus dem Bauch raus
stimmen folgende Werte nicht:
*) Bei den Haupttrabanten sind die H nur 2,7us
*) Beim Hsync gehören die 1.5us high am Anfang ans Ende der
vorhergehenden Zeile. (Die fallenden Syncflanken müssen immer 64 bzw.
32us Abstand haben)
Sonst schauts perfekt aus. Kannst du mal ein Bild posten? (vom Fehler)
Ein möglicher Fehler wäre noch die Anstiegszeit des Video-Signals, du
schaltest schließlich in "Nullzeit" von 0 auf 0,7V.

Grüße leo9

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt: Das meinst du jetzt wohl hoffentlich nicht ernst, FBAS ist
aufgrund des Farbträgers mit avr-Frequenzen unrealisierbar. Selbst bei
BAS siehst du "Programmierfehler" im nop Bereich, sprich 62.5 ns bei
16MHz.
Und ob ein Bildschirm mit 63.8us langen Zeilen zurecht kommt oder nicht
ist purer Zufall.

Grüße leo9

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klingt eher nach einer AC-Kopplung ohne anschließende Klemmdiode oder
andere DC-Restaurationsmaßnahme. Fernsehgeräte sind vom Timing sehr
anspruchslos, da darf die Frequenz auch etwas danebenliegen ( außer dem
Farbträger natürlich), das rastet trotzdem. Die Quantisierung mit einem
festen Prozessortakt bewirkt höchstens ein Zappeln um einen Bildpunkt
in horizontaler Richtung. Die Einschwingvorgänge nach dem Bildimpuls -
ja der Zeilenimpuls sollte natürlich im Bildimpuls weiterlaufen,
normalerweise werden die beiden mit EXOR verknüpft, sonst gibts die
beschriebenen Einschwinger -das passiert gern, wenn der DC-Pegel des
Vixdeosignals dem TV-Videoeingang nicht passt. Ein paar hundert
Mikrofarad Koppel-C und danach eine Klemmdiode nach Masse helfen oft.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@leo9

Doch das meine ich ernst.
Und das wurde auch schon ein paarmal gemacht.
Ich habe zwar die Links nicht mehr, aber es gibt einige Schaltungen mit
AVRs die mit 17,7MHz laufen und ein Farbbild erzeugen. Da merkt man dann
erst dass ein Quarz ohne die Kondensatoren recht instabil schwingt.

Ich hab auch schon Ansteuerschaltungen für VGA und BAS programmiert.
Mit etwas überlegten Routinen funktioniert das auch wunderbar.

Autor: AVR Coder (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal der Quellcode. Auf dem kleinen tragbaren LCD Fernseher hab ich
außerdem das Problem, dass er (abhängig von den Bilddaten) das Bild
manchmal gar nicht erkennt bzw. mitten im Bild dann plötzlich für 1, 2
Sekunden der Bluescreen kommt. Scheint also wohl doch was
schwerwiegenderes zu sein? @Christoph: wo soll der Kondensator hin? Von
Video nach Masse?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal noch die Schaltung.
Die Kurvenform der Sync Signale sieht gut aus, aber das Timing ist
etwas krumm:

HSync: 13,8kHz
VSync: ca. 44,5Hz
Das sind -11,5% Abweichung. Die Horizontalfrequenz muss (laut
Spezifikation) auf <1% (oder waren es 0,1% ?) stimmen.

Wenn man mit 312 Zeilen rechnet, passt das Verhältnis zwischen H und
V.
So musst also die Zeilen etwas kürzer machen.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss das, ich habe gerade eben gelesen, dass du einen 18MHz Quarz
hast.
Dann passt das Timing.

Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt danke fürs testen. Ja, verwende 18MHz.

Andere Theorie: könnte es sein dass die Verzerrungen auftreten weil ich
ein Breadboard benutze und wegen der im Streifenraster enthaltenen
Kapazitäten die Flanken der Rechtecksignale zu Lade / Entladekurven
verzerrt werden?

So hoch sind die Kapazitäten im Breadboard doch aber nicht, oder? Z.B.
sind die einzelnen (rund 0.167µs langen) Pixel einwandfrei und scharf
zu erkennen, was dafür spricht dass der Flankenanstieg zumindest <<
0.08µs dauert. Hat jemand Erfahrung damit?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also am Breadbord liegt es nicht, wenn es da keine Unterbrechungen o.ä.
gibt.
Die Flanken sind eigentlich zu steil, denn bei BAS darf das Signal nur
etwa 4MHz Bandbreite haben, ansonsten werden die Signale bei 4,43MHz
als Farbträger erkannt...

Wie hast du den uC mit dem TV verbunden ?
Lass mich raten: Video und Sync über Widerstände zusammengeführt, und
dann über einen Elko an den TV ?

Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Elko an den TV.

Hatte ursprünglich 4Bit Graustufen + Sync über Widerstände, wegen der
Verzerrungen verwende ich jetzt zu Testzwecken aber erstmal
Minimalkonfiguration (also Sync + Weiß).

Bin von 75Ohm Videoeingang ausgegangen und Sync = 0.3V, Sinc + Weiß =
1V. Für die Widerstände folgende berechnete Werte: Rweiß = 428Ohm und
Rsync = 1kOhm, für Rweiß verwende ich 470Ohm (wirkt sich ja nur
dahingehend aus, dass weiß etwas dunkler wird).

Überhaupt verlangt der Videoeingang aber die Werte nicht so genau, hab
auch schon andre Widerstände eingesetzt die von den berechneten
ziemlich abwichen. Das hat nur die Bildhelligkeit verändert.

Sollte ein Elko von Video nach Masse und wenn ja wie groß sollte er
sein?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe genau dieselben Werte bei mir verwendet.
470Ohm und 1kOhm ergeben genau die richtigen Spannungen.

Meine Vermutung war, dass du einen Elko verwendet hast, denn das
verursacht genau den Fehler so wie du ihn beschrieben hast.
Da aber keine drin ist, habe ich auch keine Idee, an was es noch liegen
könnte.

Kannst du ein Foto von dem TV Bild machen ?

Autor: AVR Coder (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal ein Foto, es stammt von dem LCD TV. Deutlich ist beim 2.
Rechteck mit den abwechselnden Pixeln (Weiß - Schwarz - Weiß usw.) zu
erkennen wie die Zeilenanfänge sich immer weiter nach vorn verschieben
und sich schließlich auf das richtige Niveau "einpegeln" (auch gut zu
erkennen am Pixelmuster dass in den ersten Zeilen gar nicht wie
abwechselnde Pixel sondern wie ein Streifenmuster aussieht). Die Kante
vorn sollte aber glatt sein und ein richtig schönes Rechteck erscheinen
wie die anderen beiden.

Das Bild selbst ist auf dem LCD dabei aber superscharf, nur das Foto
ist etwas unscharf geraten. Der 2. Effekt (dass das oberste weiße
Rechteck erst schmaler ist und dann immer breiter wird bis es
schließlich die "richtige" Breite erreicht hat) tritt beim LCD
Fernseher dagegen nicht auf sondern ist nur auf dem Röhren TV zu sehen
(werde davon noch ein Bild machen). Dafür bricht beim LCD TV aber
zeitweise das Bild weg und der Bluescreen erscheint. Beide Fernseher
brummen (der LCD Fernseher richtig laut, der Röhrenfernseher viel
leiser)

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.