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:
Bin für jede Hilfe dankbar!Code:$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
MfG
Carsten







Zitieren
Lesezeichen