PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RGB LED fader in Matrix - Aussetzer



m3Sa
02.03.2008, 16:43
Hallo,

an meinem Atmega8 benutze ich die 3 Hardware PWMs um meine RGB LEDs anzusteuern.
Beim Übergang von Grün Blau auf Rot Grün und Rot Blau auf Rot Grün setzt die LED kurz aus.
Beim Übergang von Grün Rot auf Grün Blau gibt es keine Aussetzer!

Weiß jemand wieso das so ist?
Hier mein Code bisher:


$regfile = "m8def.dat"
$crystal = 1000000

Dim A As Word


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8 'Timer OC1 Einstellungen
Config Timer2 = Pwm , Prescale = 8 , Compare Pwm = Clear Down , Pwm = On 'Timer OC2 Einstellungen

Enable Timer1 'Timer OC1 aktivieren
Enable Timer2 'Timer OC2 aktivieren

Load Timer1 , 1 'Timer OC1 nach jedem Tackt interrupt auslösen
Load Timer2 , 8 'Timer OC1 nach jedem achten Tackt interrupt auslösen

Enable Interrupts 'Interrupts aktivieren

On Timer1 Ueberlauf_oc1 'Timer OC1 Überlauf festlegen
On Timer2 Ueberlauf_oc2 'Timer OC2 Überlauf festlegen


Config Pinb.1 = Output 'OC1A (ROT)
Config Pinb.2 = Output 'OC1B (GRUEN)
Config Pinb.3 = Output 'OC2 (BLAU)

Config Portd = Output 'PortD x Matix
Config Portc = Output 'PortA y Matrix

Portd = 1 'PortD Ausgang 0 einschalten
Portc = 1 'PortD Ausgang 0 einschalten


Do 'Hauptprogramm

'Rot aus Grün an
For A = 255 To 0 Step -1
Pwm1a = A
Pwm1b = 255 - A
Waitms 100
Next

'Grün aus Blau an
For A = 255 To 0 Step -1
Pwm1b = A
Ocr2 = 255 - A
Waitms 100
Next

'Blau aus Rot an
For A = 255 To 0 Step -1
Ocr2 = A
Pwm1a = 255 - A
Waitms 100
Next

Loop


'Überläufe für Timer OC1 und OC2
Ueberlauf_oc1:
Rotate Portd , Left , 1
Load Timer1 , 1
Return


Ueberlauf_oc2:
Rotate Portc , Left , 1
Load Timer2 , 8
Return



End

Bin für jede Hilfe dankbar!

MfG
Carsten

Nevada
06.12.2012, 13:52
Hallo m3Sa
im timer 1 pwm auf 10 bit setzen, damit sind dann ca. 65000 abstufungen möglich
dann alle For Schleifen von 255 auf 1000 setzen, außer ocr2 bzw. Timer 2 der kann nur 8 bit.
Damit hat die Blitzerei ein Ende.
Natürlich kannst du auch andere Werte versuchen, aber mit der Einstellung 1000 geht´s auf alle Fälle

Gruß
Nevada