diyundso.de

PWM mit 8-bit-Timer am AVR

Das folgende Beispiel zeigt das Erzeugen einer PWM-Modulierten Spannung mit Hilfe eines 8-bit-Timers (kein Overflow-Timer!)
Das Signal wird am Pin OC2 erzeugt.

Codebeispiel:

#include <avr/io.h>
#include <avr/interrupt.h>


void start_pwm(void){

//TCCR2 = 0x01; //CPU-Takt
TCCR2 = 0x02; //CPU-Takt/8
//TCCR2 = 0x03; //CPU-Takt/32
//TCCR2 = 0x04; //CPU-Takt/64
//TCCR2 = 0x05; //CPU-Takt/128
//TCCR2 = 0x06; //CPU-Takt/256
//TCCR2 = 0x07; //CPU-Takt/1024

TCCR2 |= (1<<WGM21)|(1<<WGM20); //Fast-PWM

TCCR2 |= (1<<COM21); //Non-Inverting-Fast-PWM

sei(); //Interrups aktivieren
DDRB |= (1<<PB3); //OC2 als Ausgang

//PWM
OCR2 = 50; //Die Effektivspannung beträgt hier sqrt*(50/256)*Versorgungsspannung

}


int main (void){

start_pwm();

while(1){};

return 0;
}
Impressum

Valid HTML 4.01 Transitional