So, ich glaub, jetzt habe ich es
1 | int main(void)
|
2 | {
|
3 | //Timer2
|
4 | DDRB|=(1<<PB3); //PB3(OC2 als Ausgang)
|
5 |
|
6 | TCCR2&=~(0<<FOC2); //0, da Timer als PWM genutzt
|
7 | TCCR2|= (1<<WGM21)|(1<<WGM20);//Timer als Fast-PWM eingestellt
|
8 | TCCR2|= (1<<COM21)|(1<<COM20); //Inverting Mode
|
9 | TCCR2|= (1<<CS20)|(1<<CS21); //Prescaler 64
|
10 | TCCR2&=~(1<<CS22);
|
11 | TCNT2 = 6;
|
12 | OCR2 = 131;
|
13 |
|
14 | while(1);
|
15 |
|
16 | return 0;
|
17 | }
|
Ich verwende ein 16MHz Quarz. Mir geht es Hauptsächlich darum, die PWM
ans laufen zu kriegen, um später ein Piezo damit anzusteuern und im
nächsten Schritt die PWM mittels ADC zu verändern. Das
Puls-Pausenverhältnis liegt jetzt bei 50:50.
Was mich jetzt noch wundert ist, warum das AVR-Studio mir anzeigt, dass
der Timer2 im CTC-Modus läuft. Das TCCR2-Register habe ich wegen der
Übersichtlichkeit mehr mal beschrieben, laut dem Debugger sind die Bits
auch richtig gesetzt.