Software PWM mit Atmega8 funktioniert nicht

Gast #1273623
Hallo, ich hab vor 3 Tagen das erste mal einen AVR programmiert, ist 
also alles noch neugebiet für mich. Ich programmiere übrigens in C mit 
AVRstudio 4.12 und USBprog als AVRISP mkII klon.

Jetzt habe ich versucht eine Software PWM zu programmieren für die LED 
die an PORTB angeschlossen ist. Ziel ist das das Tastverhältnis am 
anfang 1 ist und dann langsam bis 0 "fadet" und dann wieder auf 1 
resettet wird.
Ich benutze den internen RC oscillator.

Problem: Die LED flackert seeehr schwach mit (GROB geschätzt) ~2Hz, wenn 
i<0 ist leuchtet sie für ein paar Zehntel einer Sekunde auf voller 
Leuchtstärke, und flackert dann wieder wie vorhin beschrieben.
Die LED soll aber langsam Faden.

Code ist im Anhang, schonmal vielen dank im voraus :)
Angehängte Dateien:
So wird das auch nichts.
Deine Variable i ist in ein paar Zehntel-Millisekunden von 100 auf 0 
runtergezählt. Kein Wunder das das flackert.
Du musst die 'PWM' schon eine gewisse Zeit lang laufen lassen, damit du 
überhaupt mal was siehst und erst dann die Stufe um 1 runterschalten.

PS: Alle delay Funktionen, die mit dem AVR-gcc kommen, sind darauf 
ausgelegt, dass sie ein konstantes Argument bekommen. Ansonsten stimmen 
die Zeiten hinten und vorne nicht.
greg2k schrieb:
> Ich mache Soft-PWM mit Timer immer. Sehe Beispiel im Anhang.
>
> Mit "pwm"-Variable kannst Du die Leuchtstärke einstellen;

Lass das SREG in einer ISR in Ruhe!
Die Prozessorregister gehören in C dem Compiler. Wenn du dich daran zu 
schaffen machst, machst du es meistens nur schlimmer, nie besser. Dein 
Compiler weiß schon, was in einer ISR zu tun ist. Überlass es ihm, sich 
um solche Feinheiten zu kümmern.

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.