Hallo, ich möchte einen VGA-Port ansteuern und habe dazu zunächst einmal die Signale VSync und HSync erstellt (siehe Anhang). Ist das so richtig? Die Zeiten stimmen nicht, das weiß ich, aber könnte das ansonsten so richtig sein? Thomas
Thomas wrote: > Ist das so richtig? Die Zeiten stimmen nicht, das weiß ich, aber könnte > das ansonsten so richtig sein? Eventuell, wenn die Zeiten stimmen. Aber zu dem kleinen Ausschnitt kann man nicht wirklich was sagen. Von VSync ist da garnichts zu sehen.
Stimmt, man erkennt wirklich nicht besonders viel, im Anhang ist ein besserer Screenshot. Eine Frage noch dazu: Angenommen die Zeiten wären richtig, was müsste ich dann verändern, um die Signale für eine andere Auflösung zu verwenden?
Könnte funktionieren, wenn das Timing passt. Hier sind die ganzen Werte aufgelistet: http://info.electronicwerkstatt.de/bereiche/monitortechnik/vga/Standard-Timing/index.html
Ja, die Werte kenne ich, ich hatte nur noch keine Zeit das richtige Clock-Signal zu erstellen. Muss ich irgendwas verändern, wenn ich die Signale für eine andere Auflösung verwenden möchte? Die absoluten Zeiten bleiben ja immer gleich... Thomas
Es gibt verschiedene Auflösungen die über die Sync Polarität erkannt werden. Aber das hat eher historische Gründe. Heutige Multisync Monitore kommen mit beliebiger Sync Polarität zurecht. Es reicht also das Timing zu verändern.
Welches Timing? Nur das Timing von R,G und B oder auch das von HSync und VSync? Wenn ich die Anzahl der Clocks verkleinere, erhöht isch ja auch die Pixeltaktfrequenz, so dass das Timing im Endeffekt gleich bleiben sollte. Thomas
Thomas wrote: > Welches Timing? Nur das Timing von R,G und B oder auch das von HSync und > VSync? Natürlich auch das der Sync Signale. Ansonsten hat der Monitor ja keine Möglichkeit das Timing zu erkennen. > Wenn ich die Anzahl der Clocks verkleinere, erhöht isch ja auch die > Pixeltaktfrequenz Nein. Der Pixeltakt ist der Takt aus dem alle anderen Takte abgeleitete werden. Wenn du den Pixeltakt erhöhst wird entweder die Framerate höher, oder du erhöhst die Anzahl an Pixel pro Zeile und pro Bild und erhälst so eine höhere Auflösung.
Mh, danke. Was ist denn mit der Excel-Datei? Man sieht dort, dass die Zeiten in den Spalten F und I identisch sind. Ist das nicht der Beweis dafür, dass das Timing gleich bleiben kann? Entschuldigung, wenn ich auf denm Schlauch stehen sollte, Thomas
Die Zeilenfrequenz ist immer die Bildfrequenz multipliziert mit der Anzahl der sichtbaren und unsichtbaren Zeilen. Reduzierst du die Zeilenzahl, wird bei gleicher Zeilenfrequenz die Bildfrequenz höher oder bei gleicher Bildfrequenz die Zeilenfrequenz niedriger. Die Exceldatei ist somit nicht richtig. Bei 640x480 kommen die Werte hin: Die Zeilenzahl ist 31,5kHz / 60 Hz = 525, davon sind 480 sichtbar und 45 unsichtbar. Bei 320x200 wäre die Anzahl der unsichtbaren Zeilen 325, also deutlich mehr als die der sichtbaren. Das ist Blödsinn. Um eine vertikale Auflösung von ny zu erhalten, müssen innerhalb des vertikalen Tdisp logischerweise genau ny HSync-Impulse liegen.
Ok, danke. Aber wie müssen dann die Anzahl der Pixel und Zeilen und deren Zeiten aussehen? Muss ich dann für die kleinere Auflösung auch die Zeilenfrequenz ändern, ansonsten kann die oben genannte Formel ja nicht stimmten. Es wäre sehr nett, wenn ihr mir auf die Sprünge helfen könntet und mir noch einen Tipp geben könntet und/oder mal ein paar Beispielwerte in die Tabelle eintragen könntet. Vielen Dank, Thomas
Im obigen Link von Benedikt K. sind doch eine ganze Menge Beispiele. http://info.electronicwerkstatt.de/bereiche/monitortechnik/vga/Standard-Timing/index.html Reichen die nicht?
Hallo, ich habe die Tabelle verbessert (nur Pixel und Zeilen, Zeiten noch nicht). Aber ich glaube fast nicht, dass ich das richtig gemacht habe. :-( Über eine Hilfe wäre ich wirklich sehr dankbar. Thomas
Das sieht schon ziemlich gut aus. Du hast jetzt die Werte für 640x480 mit dem Verhältnis der Auflösungen (also 320/640 bzw. 200/480) multipliziert, um auf die neuen Werte zu kommen. Damit bleibt das Verhältnis der einzelnen Timing-Parameter gleich, so dass es von üblichen Monitoren ebenfalls akzeptiert werden sollte. Wenn du weiterhin einen Pixeltakt von 10MHz nimmst, stimmen allerdings die angegebenen Werte für Zeilen- und Bildfrequenz nicht mehr. Eine komplette Zeile (von der fallenden HSync-Flanke bis zur nächsten) ist 320+8+48+24 = 400 Pixel lang, das sind 400/10MHz = 40µs. Die Zeilenfrequenz ist also 1/40µs = 25kHz. Ein komplettes Bild (von der fallenden VSync-Flanke bis zur nächsten) ist 200+4+1+12 = 217 Zeilen lang, das sind 217/25kHz = 8,68ms. Die Zeilenfrequenz ist also 1/8,86ms = 115,2Hz. Sind 115Hz zuviel für den Monitor, und du möchtest lieber 60Hz, brauchst du nur den Pixeltakt mit dem Faktor 60Hz/115,2Hz zu multiplizieren. Da du alle Timing-Parameter in Pixeln bzw. Zeilen angegeben hast, ändert sich das Horizontal- und das Vertikal-Timing ebenfalls um diesen Faktor. Die Pixelfrequenz wird dann 5,21MHz, die Zeilenfrequenz 13kHz. Die Zeilenfrequenz von 13kHz ist jetzt aber sogar noch niedriger als die Zeilenfrequenz beim Fernsehen (15kHz), wodurch sich ein Dilemma auftut: Viele Computermonitore können nur Zeilenfrequenzen ab etwa 25kHz und Bildfrequenzen bis etwa 100Hz. Damit sind nur Zeilenzahlen deutlich über 200 darstellbar. Deswegen werden VGA-Grafikkarten bei geringen vertikalen Auflösungen meist im so genannten Double-Scan- Modus betrieben, in dem jede Grafikzeile zweimal hintereinander ausgegeben wird, um bei gleicher Bildfrequenz die Zeilenfrequenz zu verdoppeln. Der Monitor "sieht" dann 400 Zeilen anstelle der realen 200.
Vielen Dank. Ich habe die Tabelle verbessert, ist das so richtig? Reichen 5MHz Pixeltaktfrequenz überhaupt für eine Auflösung vom 320 x 200? Thomas
Thomas wrote: > Ich habe die Tabelle verbessert, ist das so richtig? Sieht gut aus. > Reichen 5MHz Pixeltaktfrequenz überhaupt für eine Auflösung vom 320 x > 200? Ja. 320x240 TFTs laufen üblicherweise mit 6-8MHz, also auch in etwa in dem Bereich. Nur auf einem normalen Monitor wirst du das nicht anzeigen können.
Ich schließe mich Benedikts Aussagen an. Zusätzlich: > Ich habe die Tabelle verbessert, ist das so richtig? Da es keine gebrochenen Pixel und Zeilen gibt, würde ich die Werte auf ganze Zahlen runden, also 320, 4, 25, 12, 200, 2, 1 und 6. Damit ergeben sich geringfügig andere Ergebnisse für die Pixel- und die Zeilenfrequenz, wenn man von einer festen Bildfrequenz von 60Hz ausgeht. > Reichen 5MHz Pixeltaktfrequenz überhaupt für eine Auflösung vom 320 x > 200? Wie gesagt, du musst nachschauen, ob Zeilen- und Bidfrequenz im erlaubten Bereich des eingesetzten Bildschirms liegen. Das sind die beiden wesentlichen Parameter, die stimmen müssen. 60Hz kann fast jeder Bildschirm, bei den 13kHz wird es evtl. eng. Weißt du denn schon, was du an den VGA-Ausgang anschließen möchtest?
Hallo, danke nochmal für die ganze Hilfe. Nein, ich weiß noch nicht, was ich an den VGA-Port anschließen will, mir ist aber egal, ob Fernsehn, PC-Monitor oder was ganz anderes. Gibt es irgendeine Möglichkeit ein 320 x 200 VGA-Signal zu erzeugen, das sicher auf einem PC-Monitor angezeigt werden kann? Thomas
Oh, den Beitrag habe ich noch nicht gesehen, danke. Aber ich glaube nicht, dass er mir weiterhilft: Am Ende bleibt mehr oder weniger das gleiche Problem wie ich habe. Thomas
> Gibt es irgendeine Möglichkeit ein 320 x 200 VGA-Signal zu erzeugen, > das sicher auf einem PC-Monitor angezeigt werden kann? Ich glaube nicht, dass es ein Timing für 320x200 gibt, das auf jedem PC-Monitor funktioniert. LC-Monitore und ältere Röhrenmonitore können meist keine hohen Bildfrequenzen, modernere Monitore keine niedrigen Zeilenfrequenzen. Selbst es es vom Timing her ginge: Bei 200 Zeilen auf einem 21"-Röhrenmonitor wäre nur wenig zu erkennen, da die einzelnen Zeilen bei einer Dicke von 0,3mm oder weniger einen vertikalen Abstand von 1,5mm hätten. Das Bild wäre also im Wesentlichen schwarz mit ein paar dünnen, bunten, horizontalen Linien darauf. Ob man da noch eine Schrift erkennen könnte? Vielleicht mit zusammengekniffenen Augen und viel Phantasie.
Sofern man "PC-Monitor" eingrenzt auf "PC-Monitor, der VGA-Signale anzeigen kann", ist eigentlich klar definiert, wie 320x200 anzuzeigen ist: Mit einer Zeilenfrequenz von 31.25 kHz und einer Zeilenverdoppelung, so daß effektiv 320x400 ausgegeben wird. Die Zeilenfrequenz ist bei allen VGA-Modi identisch, die Anzahl der ausgegebenen Zeilen und in Folge dessen die Bildwechselfrequenz ändert sich. a) 400 Zeilen -> 70 Hz Das wird bei den Auflösungen 320x200, 640x200 (diese jeweils mit Zeilenverdoppelung) und im "Text"-Modus mit 720x400 verwendet (80x25 Zeichen in einer 9x16-Matrix). b) 480 Zeilen -> 60 Hz Das wird bei 640x480 verwendet. Die Anzahl der anzuzeigenden Bildzeilen wird dem VGA-Monitor durch die Polarität der Synchronsignale mitgeteilt; bei 400 Zeilen wird das Bild vertikal gespreizt (also der Zeilenabstand etwas erhöht), was bei 480 Zeilen nicht geschieht. Diese VGA-Modi unterstützt auch heute noch jeder Monitor mit analogem VGA-Anschluss. Modi mit höheren Auflösungen oder anderen Bildwechselfrequenzen sind keine VGA-Modi, sondern SVGA/XGA/SXGA-etc.-Modi und müssen daher hier nicht berücksichtigt werden.
Thomas schrieb: > Gibt es irgendeine Möglichkeit ein 320 x 200 VGA-Signal zu erzeugen, das > sicher auf einem PC-Monitor angezeigt werden kann? Ja, klar. Allerdings nur dann, wenn deine Hardware in der Lage ist, Pixel mit 12,nochwas MHz rauszuballern. Damit fallen AVRs flach, jedenfalls wenn man sie nicht deutlich übertakten möchte. Damit ginge es höchstens "hochkant", also 200x320. Aaaber: gibt es überhaupt einen tieferen Grund für genau die genannte Auflösung? Wenn nicht, machst du einfach eine Auflösung, die der AVR ohne Übertakten packt. Das Limit bei Verwendung der USART im SPI-Modus als Schieberegister für die Ausgabe sind bei 20MHz Takt horizontal 256 Pixel. Eigentlich 254, aber so genau mißt das kein Monitor nach (kann er garnicht), man macht die Schwarzschulter einfach um die rund zwei überzähligen Pixel schmaler als der Standard es vorgibt. Hauptsache, die Zeilenfrequenz paßt. Also halten wir erstmal fest: 256/8=32 Bytes/Zeile. Der AVR mit dem größten Speicher hat 16k RAM, damit kommt man dann maximal auf 512 solcher Zeilen, aber es werden nur 480 gebraucht, weil sowieso nur so viele sichtbar sind. Es geht also ein Modus mit 256x480 rechteckigen Pixeln, wobei das PixelAspectRatio ungefähr bei 2,5:1 liegt, die Pixel sind also zweieinhalb mal so breit wie hoch. Nun noch das Timing im Detail: Das am nächsten am Standard liegende Timing wäre mit Teiler 635 für die Zeilenfrequenz, es ergibt sich eine Zeilenfrequenz von 31496,063 Hz und eine Bildfrequenz von 59,9925 Hz. Jeder Röhrenmonitor dürfte darauf synchronisieren und auch die allermeisten LCD-Monitore und -TVs mit VGA-Eingang. Übrigens: Bei einem 1284P hast du zwei USARTs, die sich im SPI-Modus betreiben lassen. Bei Halbierung der vertikalen Auflösung auf 240 Zeilen reicht der Speicher dann auch für eine Vierfarb-Grafik mit 256x240 Pixeln bei einem PAR von 1,25:1. Das ist schon eine ganz brauchbare Sache.
Nach fast 5 Jahren wird er das Problem wohl gelöst haben, oder? Ich frage mich, wie dieser Thread überhaupt entdeckt wurde. Jedenfalls ein Lob der zähen Datenbank von MC.net :-) Vllt. besser sperren....
Matthias Sch. schrieb: > Nach fast 5 Jahren wird er das Problem wohl gelöst haben, oder? Wahrscheinlich. Aber 5 Jahre sind eine lange Zeit, in der vielleicht andere Lösungsmöglichkeiten aufgetaucht sind. Z.B. gab's vor 5 Jahren noch keinen Mega1284 (jedenfalls nicht wirklich zu kaufen).
c-hater schrieb: > (jedenfalls nicht wirklich zu kaufen) Unwirklich wohl auch nicht. Dass ein AVR für VGA-Signale nicht ausreicht, war aber damals schon bekannt. Daran wird sich auch nach Einführung des ATmega14781 auch nichts ändern.
Sprachlos schrieb: > Daran wird sich auch nach Einführung des ATmega14781 auch > nichts ändern. Nö, dafür reicht ein ATMega32: http://neil.franklin.ch/Projects/SoftVGA/ Oder ein Mega324P http://quinndunki.com/blondihacks/?p=955 oder ein Mega644 http://www.lucidscience.com/pro-vga%20video%20generator-1.aspx
Sprachlos schrieb: > Dass ein AVR für VGA-Signale nicht ausreicht Wieso? Tut er doch offensichtlich, wenn auch nicht in jedem Aspekt der Sache. Aber eben immerhin gut genug, daß sich Nutzungsmöglichkeiten ergeben.
ein Attiny 2313 reicht auch Deogen - Tiny Monitor Tester http://www.radiolocman.com/shem/schematics.html?di=55404 Gruß
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.