Timer 0-2 laufen mit falschem prescaler

#2289322
Lesenswert?

Hallo, ich möchte mit einem ATMEGA168 6 verschiedene PWM-Signale mit 
möglichst hoher Frequenz ausgeben. (daher: 20 MHz Quarz)
Also habe ich bei allen Timern einen prescaler von 1 eingestellt und zum 
Testen ein 50% PWM-Signal ausgegeben.
Leider messe ich mit einem Oszilloskop immer eine 8-mal kleinere 
PWM-Frequenz als errechnet!
fPWM = fIO / (N * 256)     (N = prescaler)
fPWM = 20MHz / 256 = 78 kHz
gemessene PWM-Frequenz: etwa 10 kHz

Den Quarz und ein Referenz-Signal habe ich problemlos gemessen - die 
Frequenzen passen.

Parallel zur PWM-Erzeugung benutze ich den Timer1-Überlauf um einen 
Interrupt auszulösen - auch dieser wird 8-mal langsamer ausgelöst.

Im Anhang: die Timer-Initialisierungen
Angehängte Dateien:
Moderator Persönliche Seite #2289497
Lesenswert?

Erik H. schrieb:
> Perfekt - genau das war der Fehler. Wusste nicht einmal, dass diese Fuse
> existiert...

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_fuses

CKDIV8 muss man übrigens nicht zwingend umfusen.  Diese Fuse bewirkt
nur, dass der clock prescaler auf 1:8 initialisiert wird, den kann
man aber problemlos auch zur Laufzeit auf 1:1 umschalten.

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