VGA Signal analysieren

OP #1341732
Hallo,

hier wurde ja schon des öfteren über Auswertung von VGA Signalen 
gesprochen, nur leider hab ich nichts passendes für mich gefunden.

Will mir ein Ambilight mit VGA bauen.
Könnt ihr mir sagen wie ich an die einzelnen Pixal rankomme?

Was ich bisher weiss:

nach V sync baut sich neues bild auf nach jeder einzelnen zeile gibt es 
dann ein H sync dieser dauert bei mir 20,4 us.

Wie komme ich den jetzt zb theoretisch an den x ten Pixel in der Zeile 
y?

Danke
du musst den Pixeltakt ausrechnen.

Dann musst du nach Auftreten des V-Syncs einfach soviele H-Sync-Impulse 
zählen bis du in der richtigen Zeile bist und dann entsprechend dem 
Pixeltakt lange warten bist der richtige Pixel da ist. Dann musst RGB 
abtasten (möglichst >=8  bit) und voilà.

Obiges ist aber reichlich kompliziert. Da der Bildinhalt eh im PC 
irgendwo vor liegt, schau dass du da ran kommst. Da gibts soweit ich 
weiß DirectShow-filter, welche sich in die Grafikausgabe einknlinken.

Google mal nach "Atmolight Directshow"

Gruß
Roland
OP
Roland Praml schrieb:
> du musst den Pixeltakt ausrechnen.
>
> Dann musst du nach Auftreten des V-Syncs einfach soviele H-Sync-Impulse
> zählen bis du in der richtigen Zeile bist und dann entsprechend dem
> Pixeltakt lange warten bist der richtige Pixel da ist. Dann musst RGB
> abtasten (möglichst >=8  bit) und voilà.
>
genau ich habe immer nach einer neuen Zeile einen timer gesatrtet, der 
zählt bis 5µs (1/4 ZeilenTakt) und dann soll der ADC messen, das müsste 
also an sich so gehen ja?
Persönliche Seite
> genau ich habe immer nach einer neuen Zeile einen timer gesatrtet, der
> zählt bis 5µs (1/4 ZeilenTakt) und dann soll der ADC messen, das müsste
> also an sich so gehen ja?

Im Prinzip ja, nur solltest Du das Signal mit einer 
Sample-and-Hold-Stufe aufbereiten, weil Dein ADC mit hoher 
Wahrscheinlichkeit ganz erheblich langsamer ist als der Pixeltakt der 
VGA-Karte.

Obendrein bist Du mit dieser Zeitabzählmethode nicht synchron zum 
Pixeltakt; es kann also passieren, daß Du nicht beginnend mit einem 
Pixel abtastest, sondern an der Stelle des Überganges zwischen zwei 
benachbarten sich voneinander unterscheidenden Pixeln.

Das ist zur Steuerung eines "Ambilight"-Mechanismus eher ungeeignet.

Sinnvoller erscheint mir die Integration/Mittelung aller Pixel in einem 
Bildschirmquadranten zur Bestimmung der überwiegenden Farbe.

Schließlich soll ja nicht ein einzelnes Pixel oder eine einzelne 
Pixelzeile über die Farbe des "Ambilights" bestimmen, sondern, wenn Du 
vier Lichtquellen hast, jede Ecke des Bildes über die Farbe der 
zugeordneten Bildecke.

Hast Du nur eine Lichtquelle, musst Du "nur" die Durchschnittsfarbe des 
gesamten Bildes bestimmen.
Gast
Die ganze Bildpunkt-Zählerei funtioniert natürlich nur bei DER 
Auflösung.
Daher wäre ein Zwischenschritt wie z.B. definierte Kalibrierung mit 
einem Musterbild ganz nützlich.
OP
>
> Im Prinzip ja, nur solltest Du das Signal mit einer
> Sample-and-Hold-Stufe aufbereiten, weil Dein ADC mit hoher
> Wahrscheinlichkeit ganz erheblich langsamer ist als der Pixeltakt der
> VGA-Karte.
>
> Das ist zur Steuerung eines "Ambilight"-Mechanismus eher ungeeignet.
>
> Sinnvoller erscheint mir die Integration/Mittelung aller Pixel in einem
> Bildschirmquadranten zur Bestimmung der überwiegenden Farbe.
>

Ich würde gerne die Integrationsvariant verfolgen und das Bild in die 
Bereiche (siehe Anhang) unterteilen. Dafür baue ich jetzt ein OPV als 
Integrierer auf und lass den von Anfang der Zeile bis zur mitte 
Integrieren oder wie mache ich das am besten? Sample and hold über C und 
die Ladung entladung über µC Steuern?

Über Hilfe wäre ich dankbar
Angehängte Dateien:
evtl könnte man das anze sogar "halbdigital" lösen:

ein Monoflop an V-Sync. dies muss "kippen" wenn die Hälfte der Zeilen 
vorbei sind.
ein weiteres Monoflop an H-Sync, dies muss kippen, wann man auf der 
"rechten" Seite ist.
Somit hast du 4 Zustände. Damit kannst du Analogschalter ansteuern die 
dir die 4 Bereiche auf einzelne Bereiche aufteilen. Integrieren tust du 
das Ganze noch in dem du jeweils ein RC-Glied dahinter hängst.

je mehr ich darüber nachdenke um so einfacher sollte das sein. Mittels 2 
Potis stellt man die "Mitte" ein und der Rest ist Analogtechnik.

Gruß
Roland

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.