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 :)
Ich mache Soft-PWM mit Timer immer. Sehe Beispiel im Anhang. Mit "pwm"-Variable kannst Du die Leuchtstärke einstellen;
o wird mit Null initialisiert und dann im weiteren Code nie verändert.
Ok, könntest du evtl. meinen Code korrigieren? Weil ich bekomme das jetzt noch immer nicht hin?
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.
Das war nur Beispiel-Code. Du musst "pwm" Variable in deinem Code irgendwo ändern. Ich habe schnell ein Beispiel für Mega8 8MHz gebastelt :) LED habe ich an PortC Pin1 angeschlossen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.