Quarze und AVR

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Diese Seite behandelt Schwingquarze im Zusammenhang mit AVRs.

Die Genauigkeit von Quarzen liegt bei 10–100ppm (1ppm = 0,0001 %) und wird somit nur noch von Quarzoszillatoren überboten. Außerdem sind Quarze im Gegensatz zum internen RC-Oszillator weniger temperaturabhängig.

Verwendung

Quarze sind in folgenden Situationen sinnvoll / notwendig:

  • Interner Oszillator des µC zu langsam
  • Interner Oszillator des µC zu ungenau
    • Bei Verwendung des UART
    • Bei zeitgenauen Anwendungen wie Uhren

Wahl der richtigen Frequenz

Vor allem als Anfänger denkt man sich, ich kaufe einfach mal 10MHz, das ist eine so schön gerade Zahl. Allerdings sind diese Quarze nur in den seltensten Fällen sinnvoll. Viel sinnvoller sind Baudratenquarze. "Baudraten"-Frequenzen sind ganzzahlige Vielfache der bei RS232 üblichen Baudraten. Mit Baudrate-Frequenz kann man exakte Baudraten erreichen. Mit "runden" Frequenzen entstehen hingegen Fehler, weshalb damit oft nur sehr niedrige Baudraten möglich sind.

"Runde" Frequenzen (4MHz, 8MHz, 10MHz....) sind meist leichter erhältlich und haben den Vorteil, dass man Verzögerungsschleifen und Rechendauern relativ leicht errechnen kann.

Anschluss

Die Kapazitäten von C1 und C2 entsprechen nicht der Lastkapazität des Quarzes! Sie errechnen sich folgendermaßen:

Anschluss eines Quarzes an einen AVR
[math]\displaystyle{ C = 2\cdot C_L-(C_P+C_I) }[/math]
  • [math]\displaystyle{ C = C1 = C2 }[/math]
  • [math]\displaystyle{ C_L }[/math]: Nenn-Lastkapazität des Quarzes aus dessen Datenblatt; wird beim Abgleich des Quarzes während der Herstellung benutzt
  • [math]\displaystyle{ C_P }[/math]: Leiterbahnen-bedingte Kapazität
  • [math]\displaystyle{ C_I }[/math]: µC-Pin-bedingte Kapazität

Die Summe [math]\displaystyle{ C_P+C_I }[/math] kann meist mit ca. 5…10 pF angenommen werden.

Da in den AVR-Datenblättern i.d.R. ein Wertebereich von C=12…22 pF empfohlen wird, sollte ein Quarz mit entsprechender CL gewählt werden (d.h. ungefähr 10 pF < CL < 16 pF); siehe dazu die Diskussion in diesem Forumsthread. Am Beispiel von CL = 15 pF:

[math]\displaystyle{ C = 2\cdot 15\,\mathrm{pF}-7{,}5\,\mathrm{pF} = 22{,}5\,\mathrm{pF} }[/math]

Dieser errechnete Wert für C1 und C2 sollte in etwa eingehalten werden, also nicht mehr als ±20 % von den Angaben abweichen.

Wenn CL nicht eingehalten wird, hat das — solange der Faktor 2 nicht überschritten wird — keinen Einfluss auf das Schwingen des Oszillators, sondern nur auf die Frequenz, aber das in einem Maße (max. 0,01 % der Frequenz), welches für die meisten Mikrocontroller-Anwendungen bedeutungslos ist.

Hinweis
Soll ein Uhrenquarz eine Real-Time-Clock versorgen, so sind die Kapazitäten von großer Wichtigkeit. Die Uhr läuft bei falsch dimensionierten Kapazitäten gleich im 3-stelligen ppm-Bereich falsch. Das bedeutet praktisch gleich mehrere Minuten pro Tag!
Hinweis
Gerade die älteren ATmegas (ATmega16/32/64/128) haben an den Eingängen des Uhrenquarzes für den Timer0 bereits interne Kapazitäten von 36 pF pro Pin. Bei den neueren Varianten (ATmega640/1280/1281/2560/2561) haben diese Ports keine internen Kapazitäten und der Eingang ist mit Timer2 verbunden. Auskunft gibt hier der Abschnitt "Timer/Counter Oscillator" im Abschnitt "System Clock and Clock Options" des jeweiligen Datenblatts.

Einstellung der Fuses

Warnung
Hier ist besondere Vorsicht geboten. Fast immer liegt das Problem, wenn ein AVR nicht mehr läuft, an falsch eingestellten AVR Fuses!
Ein Quarz ist keine "External Clock", sondern ein "External Crystal/Ceramic Resonator".

Bei vielen AVRs muss nicht nur "External Crystal" eingestellt werden, sondern auch der Frequenzbereich des Quarzes. Dabei gibt es die folgenden Bereiche:

  • Low Freq.: 0,9 - 3 MHz
  • Medium Freq.: 3 - 8 MHz
  • High Freq.: >= 10 MHz


Wenn man wirklich auf Nummer sicher gehen will, sollte man:

  • Immer das Datenblatt und den Abschnitt "Clock Source" aufmerksam lesen.
  • Per Fuse Calculator die Fuses berechnen lassen. Siehe dazu die Weblinks unten.
  • Nochmals genau überprüfen

Siehe auch

Weblinks