AVR: PWM zu langsam

Gast #3243150
Lesenswert?

Hallo!
Ich stehe gerade vor einem kleinen Problem und komme nicht weiter- 
irgendwo muss ein Denkfehler sein...

Ich möchte mit einem 16-Bit-Timer ein PWM-Signal erzeugen. Da mein 
Controller mit 16 Mhz läuft sollte der Zähler alle 4,1ms überlaufen 
(65.536/16.000.000).
Jetzt sehe ich aber am Oszilloskop, dass die PWM-Periode 8,2ms beträgt, 
also genau das Doppelte. Wo liegt der Fehler?
1
void pwm_init()
2
{
3
  // Timer4 PWM
4
    //Ausgangsports setzen
5
    DDRE |= (1<<PE4)|(1<<PE5);
6
    //Fast PWM, Modus 14, Prescaler 1, Kanal B und C
7
    TCCR3A = (1<<COM3B1)|(1<<COM3C1)|(1<<WGM32)|(1<<WGM31);
8
    TCCR3B = (1<<CS30)|(1<<WGM33);
9

10
    //Obergrenze des Zählers festlegen
11
    ICR3=0xFFFF;
12

13
    //PWM-Werte
14
    OCR3B = 16000;
15
    OCR3C = 32000;
16
}
#3243166
Lesenswert?

Wenn man wüsste welcher µC das ist, dann könnte man mal im Datenblatt 
nachsehen, ob das hier
1
    TCCR3A = (1<<COM3B1)|(1<<COM3C1)|(1<<WGM32)|(1<<WGM31);
2
    TCCR3B = (1<<CS30)|(1<<WGM33);
wirklich das ist, was der Kommentar verspricht.

Beim Mega128 jedenfalls ist es das nicht.
Da sind WGM30 und WGM31 im Register TCCR3A, WGM32(!) und WGM33 
allerdings im Register TCCR3B. Was allerdings nicht heißen muss, das es 
bei deinem µC auch so ist.
#3243170
Lesenswert?

Karl Heinz Buchegger schrieb:
> Wenn man wüsste welcher µC das ist, dann könnte man mal im Datenblatt
> nachsehen, ob das hier
>
1
>     TCCR3A = (1<<COM3B1)|(1<<COM3C1)|(1<<WGM32)|(1<<WGM31);
2
>     TCCR3B = (1<<CS30)|(1<<WGM33);
3
>
> wirklich das ist, was der Kommentar verspricht.
>
> Beim Mega128 jedenfalls ist es das nicht.
> Da sind WGM30 und WGM31 im Register TCCR3A, WGM32(!) und WGM33
> allerdings im Register TCCR3B. Was allerdings nicht heißen muss, das es
> bei deinem µC auch so ist.


AH. ein M2560.
Bei dem ist es genau gleich.
-> Falsches Register erwischt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren