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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.