Quarze und AVR: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
(→‎Anschluss: Hinweis zu CL +Verweis auf Thread eingefügt, Kleinigkeiten)
 
(48 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein Quarz, eigentlich "Schwingquarz", ist ein Bauteil zu Erzeugung einer bestimmten Frequenz. Die Genauigkeit von Quarzen liegt bei 10-100ppm und wird somit nur noch vom [[Quarzoszillator]] überboten. Außerdem sind Quarze im Gegensatz zum internen Oszilator temperaturunabhängig.
Diese Seite behandelt [[Schwingquarz]]e im Zusammenhang mit [[AVR]]s.
 
Die Genauigkeit von Quarzen liegt bei 10–100ppm (1ppm = 0,0001 %) und wird somit nur noch von [[Quarzoszillator]]en überboten. Außerdem sind Quarze im Gegensatz zum internen RC-Oszillator weniger temperaturabhängig.


== Verwendung ==
== Verwendung ==
Quarze sind in folgenden Situationen sinnvoll / notwendig:
Quarze sind in folgenden Situationen sinnvoll / notwendig:


* Kein interner Oszillator im µC eingebaut
* Interner Oszillator des [[µC]] zu langsam
* Interner Oszillator des µC zu ungenau
* Interner Oszillator des µC zu ungenau
* Interner Oszillator des µC zu langsam
** Bei Verwendung des [[UART]]
** Bei zeitgenauen Anwendungen wie [[AVR - Die genaue Sekunde / RTC | 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 [[Baudratenquarz]]e. "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 ==


== Anschluss an einen AVR ==
Die Kapazitäten von C1 und C2 entsprechen ''nicht'' der Lastkapazität des Quarzes! Sie errechnen sich folgendermaßen:
[[Bild:Quarz_Anschluss_AVR.png|right|framed]]
[[Bild:Quarz_Anschluss_AVR.png|right|thumb|Anschluss eines Quarzes an einen AVR]]
Die Kapazitäten von C1 und C2 entsprechen '''nicht''' der Lastkapazität des Quarzes!
Sie errechnen sich folgendermaßen:


C=2xCL-(CP+CI)
:<math>C = 2\cdot C_L-(C_P+C_I)</math>


*CP: Leiterbahnen bedingte Kapazität
* <math>C = C1 = C2</math>
*CI: Portbedingte Kapazität
* <math>C_L</math>: Nenn-Lastkapazität des Quarzes aus dessen Datenblatt; wird beim Abgleich des Quarzes während der Herstellung benutzt
*CL: Datenblatt des Quarzes
* <math>C_P</math>: Leiterbahnen-bedingte Kapazität
*CP+CI ca. 5pF
* <math>C_I</math>: µC-Pin-bedingte Kapazität


Am Beispiel von CL = 32pF:
Die Summe <math>C_P+C_I</math> kann meist mit ca. 5…10&nbsp;pF angenommen werden.


C = 2x32pF-5pF = 59pF
Da in den AVR-Datenblättern i.d.R. ein Wertebereich von C=12…22&nbsp;pF empfohlen wird, sollte ein Quarz mit entsprechender CL gewählt werden (d.h. ungefähr 10&nbsp;pF &lt; CL &lt; 16&nbsp;pF); siehe dazu die Diskussion in [https://www.mikrocontroller.net/topic/552413 diesem Forumsthread]. Am Beispiel von CL = 15&nbsp;pF:


:<math>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.
{{Warnung |
;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!
}}
{{Warnung |
;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&nbsp;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 ==
== Einstellung der Fuses ==
{{Warnung |
{{Warnung |
;Hier ist besondere Vorsicht geboten. Fast immer liegt hier das Problem, wenn ein Mikrocontroller nicht mehr läuft!
;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".
}}
}}
Ein Quarz ist '''keine''' "External Clock", sondern ein "External Crystal/Ceramic Resonator". Siehe auch: [[AVR_Fuses#Taktquellen_Fuse_Einstellung]]
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 ==
 
* [[AVR_Fuses#Taktquellen Fuse Einstellung|AVR Fuses: Fuse Einstellung für Taktquellen]]
* [https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Erg.C3.A4nzende_Hinweise_zur_Taktversorgung_.28kann_.C3.BCbersprungen_werden.29 Vergleich der AVR-Taktquellen]
 
== Weblinks ==
 
* AppNotes von Atmel zum Thema Quarze:
** [http://ww1.microchip.com/downloads/en/appnotes/atmel-2521-avr-hardware-design-considerations_applicationnote_avr042.pdf AVR042: ''AVR Hardware Design Considerations'']
** [http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8128-Best-Practices-for-the-PCB-Layout-of-Oscillators_ApplicationNote_AVR186.pdf AVR186: ''Best Practices for the PCB layout of Oscillators'']
* [http://www.elektroniknet.de/e-mechanik-passive/passive/artikel/85677/] Ausführungen zur Lastkapazität
* [http://www.engbedded.com/fusecalc Fuse Calculator]
[[Kategorie:AVR]]
[[Kategorie:Timer und Uhren]]

Aktuelle Version vom 2. April 2023, 09:52 Uhr

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