Bau eines Ambilight für Fernseher am PC

Unterbodenbeleuchtung, Pimp my room, usw.

Moderator: T.Hoffmann

Borax
Star-Admin
Star-Admin
Beiträge: 11999
Registriert: Mo, 10.09.07, 16:28

Sa, 27.02.10, 10:53

Also...
Beim Timer1 gibt es verschiedene PWM Modes. Daher würde ich es mal explizit angeben:
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1

Und wenn Du schon Bascom als zum Konfigurieren der Timer verwendest, dann auch weiter unten die Bascom Variablen verwenden:

Pwm1a = Wertgreen
und
Pwm1b = Wertblue
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 27.02.10, 11:32

Jetzt gibts wieder das Problem, dass die beiden LEDs an Timer1 dunkler werden, wenn der Pegel an den dazugehörigen Analogeingängen steigt.
Rot arbeitet allerdings unverändert einwandfrei.
Borax
Star-Admin
Star-Admin
Beiträge: 11999
Registriert: Mo, 10.09.07, 16:28

Sa, 27.02.10, 13:50

Dann probier doch mal ganz pragmatisch (und ggf. auch ohne zu versuchen das zu verstehen) anstatt Clear Up einfach Clear Down beim Config Timer1... zu verwenden.
Oder Du nimmst nochmal 'meinen' Code und setzt an der entsprechenden Stelle das inverted...
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 27.02.10, 15:00

So jetzt tut das Programm was es soll.
Allerdings ist das flackern jetzt auch ungefähr 3mal so schlimm geworden, die Bildschirmfarbe hat auch nur noch geringen Einfluss auf die LEDs. Sie schwanken nur so um 50%. Nie richtig aus und nie richtig an.
Auch stärkeres mitteln mit 0 to 449 und shift x , right , 9 hab ich ausprobiert...

Die hohe Frequenz des VGAs scheint in der Tat ziemlich unberechenbar für so eine einfache Schaltung zu sein. Damit wird das Projekt nun erst einmal auf Eis gelegt. Evtl. werde ich das Ganze nochmals aufgreifen mit einer ganz anderen Herangehensweise.

Eine Frage zum allgemeinen Verständnis am Rande noch an dich Borax:
Shift x , right , y
Bei y = 5 wird durch 32 geteilt, bei y = 9 wird durch 512 geteilt. Soweit hatten wir das ja schon verwendet. Wie aber komme ich von 5 auf 32 und von 9 auf 512 ? Das verstehe ich noch nicht ganz.
Nur falls ich mal in einem anderen Programm was teilen muss, damit ich das Prinzip hier verwenden könnte...
Borax
Star-Admin
Star-Admin
Beiträge: 11999
Registriert: Mo, 10.09.07, 16:28

Sa, 27.02.10, 15:22

Shift ist ein bitweises Schieben der einzelnen Bits einer Variablen nach links oder rechts, was (binär-)prinzipbedingt das gleiche wie mal 2/4/8... bzw, geteilt durch 2/4/8... ist.
Shift x , right , y heißt also:
x / 2^y
mit y=5 wäre 2^5=32 also x/32
mit y=9 wäre 2^9=512 also x/512
Umgekehrt geht es genauso:
Shift x , left , y heißt also:
x * 2^y

Multiplizieren ist aber für kleine µCs nicht soo schlimm. Dividieren dagegen schon.
Beispiel:
Dim X As Long
Dim Y As Byte

X = 5000000
X = X / 512 ' dauert 765 Takte

X = 5000000
Shift X , Right , 9 ' dauert 90 Takte
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Sa, 27.02.10, 15:45

Ah verstanden, vielen Dank...Sterne dafür, das vergess ich immer viel zu oft :wink:

Also möglichst wenn es geht mit Addition und Subtraktion hinkommen.
Antworten