Quarze und AVR

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

C = 2·CL – (CP+CI)

  • CP: Leiterbahnen bedingte Kapazität
  • CI: Portbedingte Kapazität
  • CL: Datenblatt des Quarzes
  • CP+CI ca. 5pF

Am Beispiel von CL = 32pF:

C = 2·32pF – 5pF = 59pF

wobeil gilt C = C1 = C2

C1 und C2 sind die vom Hersteller des Kontrollers empfohlenen Werte. Mit ihnen wird die Schwingsicherheit der Oszillatorschaltung gewährleistet. C1 und C2 sollten in etwa eingehalten werden, also nicht mehr als ±20% von den Angaben abweichen.

CL, der im Datenblatt angegebene Wert, wird beim Abgleich des Quarzes während der Herstellung benutzt.

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) welche 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 am den Eingängen des Uhrenquarz für den Timer0 bereits interne Kapazitäten von 36pF 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 jeweiligem Datenblatt.

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