Gast
#3013200
Hallo zusammen, ich sammele gerade erste Erfahrungen mit PWM - habe mir den Artikel "AVR PWM" und das Datenblatt zum ATtiny13 angeschaut... klappt auch soweit, aber habe wohl ein Verständnisproblem mit "Phasenkorrekter PWM": Ich möchte eine LED mit einer bestimmten Frequenz an- und ausschalten, wobei die High- und Low-Phase jeweils gleich lang sein soll, also phasenkorrekter PWM (nennt man so, oder?). Hier mein Progrämmchen: <c> #include <avr/io.h> int main(void) { // PB0 als Ausgang DDRB = (1<<PB0); // OC0A --> PIN PB0 OCR0A = 20; // PWM Modus konfigurieren // Phasenkorrekter PWM & Toogle bei Compare-Match TCCR0A = (1<<COM0A0) | (1<<WGM02) | (1<<WGM00); // T/C-Vorteiler = Clock / 1024 TCCR0B = (1<<CS02) | (1<<CS00); while(1) { } }</c> Ergebnis ist, dass die LED ständig angeschaltet ist, unabhängig vom Wert für OCR0A. Meine Erwartung für das Verhalten war: - Zähler zählt von 0 bis OCR0A - Bei Zähler = OCR0A wird LED umgeschaltet (an > aus bzw. aus > an) - Zähler zählt rückwärts von OCR0A bis 0 - dann wieder zu Schritt 1 --> desto größer OCR0A, desto länger ist die Low- und High-Phase (wobei beide exakt gleich lang sind) Was habe ich da falsch verstanden? Wo ist der Denk- bzw. Programmfehler? Danke!!