-
        

Ergebnis 1 bis 3 von 3

Thema: AVR 12Bit-PWM Lookuptable

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470

    AVR 12Bit-PWM Lookuptable

    Anzeige

    Hallo Leute,
    ich hab nen kleines Problem: Ich habe ein Programm zum dimmen von LEDs. Dort verwende ich den T1 zum erzeugen des 12-Bit PWM-Signal ( ICR und CompareMatch ) und eine Lookup im Flash um das dimmen zu linearisieren ( für das Auge versteht sich ). Jetzt dimmt der Mega88 fein sauber bis zum Maximum durch und dann fängt die LED an wie wild zu flackern, nach 1-2 sec dimmt sie dann wieder ab. Unten angekommen wird ohne Probleme wieder aufgedimmt, das Problem ist nur beim Maximum. Ich kann den Fehler einfach nicht finden.

    Grüße teslanikola
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Hi,

    Du hast den Timer falsch eingestellt.
    mit
    Code:
    TCCR1A = (1<<COM1A1)|(1<<WGM11);
    TCCR1B = (1<<WGM12)|(1<<CS10);
    stellst Du 9-bit Fast-PWM ein (TOP bei 0x1FF)
    Für Fast-PWM mit TOP bei ICR musst Du auch WGM13 noch einschalten, dann funktionierts.

    Noch 2 Sachen:
    - Du hast F_CPU nicht definiert, das ist für die korrekte Ausführung von _delay_ms notwendig.
    - die Abfrage
    Code:
    if(pwm > 255) pwm = 255;
    in PWM_set() ist völlig unnötig, da der Parameter pwm als unsigned char sowieso keinen größeren Wert als 255 annehmen kann.

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    29
    Beiträge
    470
    F_CPU ist definiert ( bei den Compiler-Options)

    Danke, das mit dem Timer hätte ich mir echt denken können, vielen Dank!


    EDIT: Wie Stromberg sagen würde: "Läuft!"

Berechtigungen

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