www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM mit ATmega8: Takt langsamer als eingestellt


Autor: Nils ‫‪ (n-regen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der ATMega8 vielleicht eine DIV8-Fuse? oder läuft er statt mit einem 
externen 8MHz-Quarz mit dem internen 1MHz-RC-Oszillator?

Autor: Nils ‫‪ (n-regen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Joachim K. (minifloat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCCR1A = (1<<COM1A1) | (1<<WGM13) | (1<<WGM12) | (1<<WGM11);

TCCR1A besitzt weder WGM13 noch WGM12. Die liegen woanders.

Autor: Nils ‫‪ (n-regen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Nils ‫‪ (n-regen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.