www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit PWM und HighPower LED's


Autor: tf1973 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe eine Schaltung aufgebaut, wo ich ein paar HighPower LED's über 
die Port Pins C0, C1 und C2 per PWM ansteuere. An den PortPins ist 
jeweils ein ICL7667 angeschlossen und daran werden über IRLZ34N die 
HighPower LED's betrieben. So weit so gut. Funktioniert auch alles 
wunderbar.

Nur hab ich etwas "Probleme" mit der PWM. Hier ist der Code der Timer 
ISR:

ISR(TIMER1_COMPA_vect) {
    static uint8_t pwm_zaehler=0;
    uint8_t temp=0;
    OCR1A += 600;

    if (pwm_wert[0] > pwm_zaehler) temp |= (1<<0);
    if (pwm_wert[1] > pwm_zaehler) temp |= (1<<1);
    if (pwm_wert[2] > pwm_zaehler) temp |= (1<<2);

PORTC = temp;

    if (pwm_zaehler==255)
    {
        pwm_zaehler=0;
    }
    else
    {
        pwm_zaehler++;
    }
}

Nun hab ich aber das Problem, wenn die LED's eigentlich aus sein sollen 
(kleinster Dimmerwert), "glimmen" diese trotzdem minimal nach. Ich hab 
mir jetzt so geholfen, indem ich in der ISR abfrage ob dieser Zustand 
erreicht wurde, und ändere einfach die Richtung der Portpins:

  if (pwm_wert[0] ==255)
    {
    DDRC &=~(1<<DDC0);
    }
    else DDRC |= (1<<DDC0);

  if (pwm_wert[1] ==255)
    {
    DDRC &=~(1<<DDC1);
    }
    else DDRC |= (1<<DDC1);

  if (pwm_wert[2] ==255)
    {
    DDRC &=~(1<<DDC2);
    }
    else DDRC |= (1<<DDC2);

Kann man das vielleicht noch etwas "eleganter" lösen?

Danke schonmal.

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tf1973 schrieb:
> Kann man das vielleicht noch etwas "eleganter" lösen?

Hardware PWM eine Option?

Dann kannst du eine invertierende PWM einstellen, allerdings hast du das 
Problem dann bei 100%, dass die LEDs immer kurz ausgehen und nie ihre 
volle Helligkeit erreichen. Allerdings ist das in deinem Fall eher 
verschmerzbar. Man muss dann allerdings beachten, das 0 = 99.9999% ist 
und 255=0%.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.