- LiTime Speicher und Akkus         
Ergebnis 1 bis 2 von 2

Thema: RGB LED fader in Matrix - Aussetzer

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.12.2006
    Beiträge
    8

    RGB LED fader in Matrix - Aussetzer

    Anzeige

    Praxistest und DIY Projekte
    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:
    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
    Bin für jede Hilfe dankbar!

    MfG
    Carsten

  2. #2
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus