Hallo! Ich versuche gerade, mit einem ATmega8 per PWM einen 1202Hz-Sinuston zu erzeugen. Es funktioniert auch alles - nur ist das Signal zu langsam: Ich messe mit meinem Oszilloskop genau ein Achtel der gewünschten Frequenz. Prescaler und Takt sind richtig eingestellt (CS10 in TCCR1B gesetzt -> kein Prescaler; CKSEL0, 1 und 3 sowie SUT0 programmiert -> 8MHz interner Oszillator) und die Frequenz lässt sich auch durch Vergrößern des Prescalers bzw. Verringern der Oszillatorfrequenz noch weiter reduzieren. Was könnte hier also diese Teilung durch 8 verursachen? PS: Die Fuses sind auf 0xE4 (Low) und 0xD9 (High) gesetzt.
Gast
#1773511
Hat der ATMega8 vielleicht eine DIV8-Fuse? oder läuft er statt mit einem externen 8MHz-Quarz mit dem internen 1MHz-RC-Oszillator?
Nachtrag: Der Quelltext. @STK500-Besitzer: CKDIV8 hat der ATmega8 nicht und die Fuses stimmen auch (ich kann z.B. den internen Takt auf 1, 2 oder 4 MHz stellen und erhalte einen entsprechend tieferen Ton).
STK500-Besitzer schrieb: > Hat der ATMega8 vielleicht eine DIV8-Fuse? Nein, der 8er nicht, aber... Sicher, dass es ein mega8 und kein 88 oder so ist? die haben nämlich ein Fusebit das heißt "Clockdiv8". Da wird der Haupttakt erstmal durch 8 geteilt. minifloat
Gast
#1773523
TCCR1A = (1<<COM1A1) | (1<<WGM13) | (1<<WGM12) | (1<<WGM11); TCCR1A besitzt weder WGM13 noch WGM12. Die liegen woanders.
Es steht ATMEGA8-16PU drauf, also ist es eher unwahrscheinlich, dass es ein 88er ist. ;-) Außerdem lässt sich das Ding mit PonyProg programmieren, wenn in PP als Controller ATmega8 eingestellt ist. Das sollte doch bei einem 88er nicht funktionieren, oder?
> TCCR1A = (1<<COM1A1) | (1<<WGM13) | (1<<WGM12) | (1<<WGM11);
WGM13 und WGM12 befinden sich nicht in TCCR1A. Dennoch wird das immer
wieder gerne genommen.
Dadurch hast Du keinen CTC-Mode mehr.
Kopf -> Tisch!! Wie immer: Lesen hilft: Ich habe WGM13, 12 und 11 im TCCR1A-Register gesetzt, obwohl 12 und 13 im TCCR1B-Register sind... Entsprechend habe ich den µC auf eine Phase-correct 9-bit PWM gestellt, während ich meine Werte für eine 7-bit PWM ausgerechnet habe. Kein Wunder, dass da Murks rauskommt. Inzwischen habe ich den Fehler behoben und erhalte ein schönes 1202Hz-Signal. Vielen Dank für eure Hilfe! Nachtrag: Ich habe den Fehler sogar selber entdeckt, noch bevor ich eure Beiträge gelesen habe.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.