Hallo,
wie kann ich eine möglichst hohe PWM-Frequenz erzeugen, wenn ich dafür die Auflösung opfere?
Der ATtiny13 (Target) schafft mit seinem internen Oszillator 9,6MHz. Daraus ergibt sich bei 256bit Auflösung eine PWM-Frequenz von 37,5kHz.
Angenommen, es reicht eine Auflösung von z.B. 128Bit. Damit käme man auf 75kHz. Nur wie realisiere so ich ein PWM-Signal?
Wie muß ich die Register bedaten? Was ist per SW zu tun, z.B. in der Interrupt-Routine?
TCCR0A = ??? (1 << COM0A0) | (1 << WGM01); // CTC Modus 2, bei CompMatch wird TCNT0 resettiert und OC0A-Pin getoggelt; TIMSK0 = (1 << OCIE0B); // Interrupt enable für OCR0B CompMatch OCR0A = 128; // Periodendauer des PWM-Signals OCR0B = duty; // Dauer der Hi-Phase des PWM-Signals
//TIMER0 starten TCCR0B = TCCR0B = (1 << CS00); // CS00 bit für prescaler=1 OC0A-Pin = 1; // PWM starten
ISR(TIMER0_COMPB_vect) { OC0A-Pin = 0; // PWM-Pin invertieren }
Würde das grundsätzlich funktionieren, oder gibt es eine bessere Methode, PWM mit unterschiedlichen Auflösungen und Frequenzen zu erzeugen?
