Forum: Mikrocontroller und Digitale Elektronik Bildverzerrung bei ATmega Videosignal beheben


von AVR Coder (Gast)


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_signale_grundlagen/tv_signale_grundlagen.htm)
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?

von Benedikt (Gast)


Lesenswert?

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

von leo9 (Gast)


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

von leo9 (Gast)


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

von Christoph db1uq K. (christoph_kessler)


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.

von Benedikt (Gast)


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.

von AVR Coder (Gast)


Angehängte Dateien:

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?

von Benedikt (Gast)


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.

von Benedikt (Gast)


Lesenswert?

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

von AVR Coder (Gast)


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?

von Benedikt (Gast)


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 ?

von AVR Coder (Gast)


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?

von Benedikt (Gast)


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 ?

von AVR Coder (Gast)


Angehängte Dateien:

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)

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.