PWM Tutorial

Gast #1157526
Hallo Leute!

Inzwischen probiere ich seit zwei Tagen am (Software) PWM Tutorial 
herum.
Ich habe die USART eingebunden um einen Kanal ändern zu können. - 
funktioniert soweit auch. (ATMega8 mit 8Mhz)


Mein Problem beginnt wenn ich den Wert von "Timer0_overflow:" von 128 
auf 255 verändere. Über diesen wert sollte ich doch die Stufen des PWM 
einstellen können oder?

Wenn ich aber nun hergehe und einen wert im Bereich von 130 an den 
Kontroller sende geht die LED aus anstelle einer mittleren Helligkeit zu 
erzeugen. Bei höheren Werten verhält sie sich wie im unteren Bereich.

Woran kann das liegen oder wo liegt mein Denkfehler?

Bin für jede hilfe dankbar.

Harald
Angehängte Dateien:
#1157544
@Harald (Gast)

>Mein Problem beginnt wenn ich den Wert von "Timer0_overflow:" von 128
>auf 255 verändere. Über diesen wert sollte ich doch die Stufen des PWM
>einstellen können oder?

Ja.

>Wenn ich aber nun hergehe und einen wert im Bereich von 130 an den
>Kontroller sende geht die LED aus anstelle einer mittleren Helligkeit zu
>erzeugen. Bei höheren Werten verhält sie sich wie im unteren Bereich.

Tja, da hat wohl der Autor das Artikels ne komische Anwandlung gehabt 
und das Ganze für vorzeichenbehaftete Zahlen geschrieben :-0.
Versuch mal brlo anstatt brlt und staune ;-)

MFG
Falk
Gast #1157552
> Mein Problem beginnt wenn ich den Wert von "Timer0_overflow:" von 128
> auf 255 verändere. Über diesen wert sollte ich doch die Stufen des PWM
> einstellen können oder?

Nein. Du arbeitest (unsinnigerweise) mit dem Überlauf-Interrupt des 
Timer0 (statt mit dem besser geeigneten Compare-Interrupt eines anderen 
Timers) und erzeugst damit nur einen Basis-Takt für die Software-PWM. 
Wird der Startwert zu groß, dann wird der Basistakt so schnell, dass 
keine Zeit mehr zum Abarbeiten der ISR bleibt.

> Wenn ich aber nun hergehe und einen wert im Bereich von 130 an den
> Kontroller sende geht die LED aus anstelle einer mittleren Helligkeit zu
> erzeugen. Bei höheren Werten verhält sie sich wie im unteren Bereich.

Die Helligkeit stellst Du ein, indem Du die Werte von OCR_1 bis OCR_6 
veränderst.

> Woran kann das liegen oder wo liegt mein Denkfehler?

Die Software-PWM funktioniert anders als Du derzeit meinst... ;-)

- Der Timer erzeugt einen konstanten Basistakt, in dem die ISR
  aufgerufen wird.
- In der ISR wird ein PWM-Zähler hochgezählt und mit den einzelnen
  PWM-Sollwerten verglichen.
- Bei Zählerstand 0 werden alle Ausgänge eingeschaltet.
- Erreicht der PWM-Zähler den PWM-Sollwert eines Kanals, dann wird der
  betreffende Ausgang wieder ausgeschaltet.

Ich hänge Dir mal ein uraltes Beispiel an, vielleicht verstehst Du die 
Zusammenhänge durch Vergleichen mit Deiner Version besser.

...
Angehängte Dateien:
#1157613
Falk Brunner wrote:

> Tja, da hat wohl der Autor das Artikels ne komische Anwandlung gehabt
> und das Ganze für vorzeichenbehaftete Zahlen geschrieben :-0.
> Versuch mal brlo anstatt brlt und staune ;-)

Mea culpa
Werds gleich korrigieren.

Zur Ehrenrettung: In der Tutorial-Version ist die Anzahl der PWM Stufen 
auf 128 begrenzt und damit wars egal ob brlt oder brlo. Aber brlo ist 
hier besser.
Gast #1157985
Hallo

Erstmal danke für eure Hilfe.
Ich versteh zwar dass es mit BRLO funktioniert, aber nicht warum es mit 
BRLT nicht funktioniert.

Werd mir heute abend noch den Kopf darüber zerbrechen und den ganzen 
Cood auf "A la Harald" umpasteln.

Danke nochmals für eure schnelle Hilfe.

.... Harald
#1158003
Harald wrote:

> Ich versteh zwar dass es mit BRLO funktioniert, aber nicht warum es mit
> BRLT nicht funktioniert.

Weil BRLT für vorzeichenbehaftete Zahlen gedacht ist. Bit 7 hat dann die 
Bedeutung des Vorzeichenbits.
BRLO hingegen nimmt das Byte so wie Gott es schuf: als Zahl zwischen 0 
und 255

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.