Forum: Mikrocontroller und Digitale Elektronik Quarz Atmega32


von Marian (Gast)


Lesenswert?

Hallo Leute,

ich habe mal eine kleine, vielleicht auch "dumme", Frage:

Macht es einen Unterschied, ob ich einen Atmega32 mit 3.6864MHz oder
4.0 MHz betreibe? Wozu gibt es Quarze mit geraden und ungeraden
Frequenzen?

Ich habe auch im Datenblatt gelesen, das bei den ungeraden Frequenzen
die Fehler in der Übertragung geringer sind (0% Fehler). Ich möchte 2
Peripherie-Geräte an den Atmega anschließen und einen davon per SPI und
den anderen per USART ansteuern. Wozu gibt es also 4.0MHz Quarze, wenn
die Übertragung damit erheblich mehr Fehler produziert???

Ich bin langsam aber sicher etwas verwirrt, was mich bei meiner
Entscheidung nicht wirklich weiterbringt. Gibt es irgendwo Richtlinie
wonach man sich bei der Auswahl des "richtigen" Oszillators, Quarzes
(Den unterschied zwischen diesen habe ich auch noch nicht verstanden)
richten könnte?

Danke für eure Hilfe...bin schon sehr auf eure Antworten gespannt, da
Google mir dabei nicht weiterhilft :)

von Uwe Nagel (Gast)


Lesenswert?

Aus den 3,6864MHz kann man die üblichen Baudraten rausteilen. Das geht
mit 4MHz nur ungenau. Deshalb gibt es diese krummen Quarze...

von Jadeclaw (Gast)


Lesenswert?

Mit 4 MHz läuft er etwas schneller.
Die krummen Frequenzen haben meist technische Gründe.
Bestimmte Frequenzen sind so gewählt, dass man über einfache
Binärteiler auf die Baudraten von RS232 kommt.
Andere, wie der PAL-Quarz hängen an den Frequenzen, die im Fernseher
zur Anwendung kommen etc.
Entsprechend ist dann auch der Quarz für deinen Controller zu wählen,
wenn du ihn mit dem PC via RS232 verbinden willst.
Und irgendwie programmieren sich Uhren mit 3.2768MHz einfacher. :-)

Gruss
Jadeclaw.

von Frank (Gast)


Lesenswert?

Wobei die Ungenauigkeit eigentlich keine wirkliche Relevanz hat, da die
meisten seriellen Systeme fehlertolerant genug sind das auzugleichen.
Einen Oszillator brauchst du eigentlich nur, wenn du den Takt auch noch
anderweitig benutzen willst und nicht auf den Taktausgang des
Controllers zurückgreifen willst. Der Controller hat ja einen
Oszillator drin, der dann von nem Quartz stabilisiert wird. Anders
macht das ein externer Oszillator auch nicht, der hat auch nen Quartz
drin.

bye

Frank

von Olaf K. (Gast)


Lesenswert?

>Ich habe auch im Datenblatt gelesen, das bei den ungeraden Frequenzen
die Fehler in der Übertragung geringer sind (0% Fehler)

>Wozu gibt es also 4.0MHz Quarze, wenn
die Übertragung damit erheblich mehr Fehler produziert???

Die x% Fehler aus den Datenblatt beziehen sich auf die Abweichung der
Baudrate vom Idealwert, nicht auf fehlerhafte Übertragungen. Solange
die Baudratenabweichung klein bleibt und z.B. nicht mehr als 1%
beträgt, ist die Übertragung aber noch lange nicht gestört. Die
Synchronisation muß ja (wir reden von asynchroner byteweiser
Übertragung z.B. per RS232) nur ein Byte + das Stopbit lang halten. Und
ob das Stopbit nun genau in der Mitte oder kurz davor oder dahinter
abgetastet wird, ist ziemlich egal.

Mit weiter zunehmendem Baudratenfehler steigt dann aber irgendwann die
Störanfälligkeit, vor allem bei schlechter Leitungsqualität (flache
Flanken, Überschwinger).

Will man keinen Baudratenquarz verwenden, dann muß man eben aufpassen,
daß man nur Baudraten verwendet, wo die Abweichung akzeptabel klein
ist. Die "Standardbaudrate" von 9600 Baud läßt sich z.B. mit vielen
üblichen Quarzfrequenzen bei ausreichend geringem Fehler erreichen.

MfG Olaf

von Marian (Gast)


Lesenswert?

Danke für eure Antworten, sie haben mir sehr geholfen.

Das mit dem Fehler hätte auch etwas genauer im Sheet stehen können.
Vielleicht bin ich auch nur zu blind um es zu lesen :)...ciao

von The Daz (Gast)


Lesenswert?

'Das mit dem Fehler hätte auch etwas genauer im Sheet stehen können'

Eben nicht. Atmel kann ja nicht wissen, mit welcher Baudrate du deine
UART betreiben willst. Fuer MIDI mit 31250 Baud sind die geraden
Quarzfrequenzen ideal. Fuer RS232 die ungeraden. Im Datenblatt steht
eine Formel, wie man die UART Baudratenteiler aufsetzt und wie man den
Fehler errechnen kann.

von Daniel (x2) (Gast)


Lesenswert?

Ich glaube er meinte, dass besser drin stehen sollte dass sich die
Fehlerangaben auf die BAUDrate und nicht die Datenübertragung an sich
beziehen. :)

Also fassen wir zusammen: Wenn er den internen Oszillator verwenden
möchte, sollte er einen Quarz parallel an XTAL1 und XTAL2 schalten,
richtig?

Grüße,
Daniel

von Marian (Gast)


Lesenswert?

Genau das meinte ich Daniel (x2) ;)...nun noch eine Frage:

Was genau ist den der Unterschied zwischen einem Quarz, Crystal und
Oszillator? Ich möchte meinen Atmega32L mit dem internen Oszillator
betreiben. Der µC soll SPI und UART benutzen. Soll ich nun, wie
Daniel(x2) schon sagte, einen Quarz parallel an XTAL 1 und 2 schalten?

Ich blicke bei diesem Thema irgendwie nich ganz durch...mal wird es so
gemacht und mal so...bitte helft mir!

Danke und guten Morgen

Marian :)

von The Daz (Gast)


Lesenswert?

Interner Osci : billig, keine externen Komponenten, ungenau
externer Quarz : billig, 3 externe Komponenten, genau, Anschluss an
XTAL 1/2 mit 2 Kerkos nach GND
externer Osci : etwas teurer, eine ext. Komponente, genau, Anschluss an
XTAL1

von Peter Dannegger (Gast)


Lesenswert?

Hinzufügen muß man noch, daß die fertigen Oszillatoren oft richtige
Stromfresser sind, d.h. sie verbrauchen viel mehr, als der MC.



Peter

von Marian (Gast)


Lesenswert?

Ok danke The Daz,

also werde ich mich wohl für einen externen Quarz (4 MHz) entscheiden,
der mir dann den internen Oszillator stabilisiert.

Naja ich hoffe, daß meine Anwendung damit dann auch funzt :)

Bis zum nächsten Problem und danke an alle!

von The Daz (Gast)


Lesenswert?

Marian,
wenn du einen ext. Quarz/Oszi benutzt, musst du dass bei den Fuses
angeben und damit schaltest du den internen Oszi ab. Man kann nicht
beides gleichzeitig benutzen.

von Daniel (x2) (Gast)


Lesenswert?

Das Datenblatt auf Seite 24 besagt aber doch dass eine Parallelschaltung
eines Crystal Oszis and XTAL1 und XTAL2 dazu dient, den internen Oszi zu
erregen und genau zu halten!?

Hab ich da was falsch verstanden oder bist du aufm Holzweg?

Ich glaube, du meinst den externen Oszi als alleinigen Externen und
nicht als Erreger für den Internen?

von Marian (Gast)


Lesenswert?

Also jetzt wird es ja ganz verrückt! Im Datasheet und im Buch (AVR-RISC
Mikrocontroller von Wolfgang Trampert) steht doch aber, das man mittels
eines externen angeschlossenen Quarzes und dem inneren Oszillator den
Systemtakt erzeugen kann. Was denn nun???

Ich hätte nie gedacht, das das mal ein problem sein wird...

von The Daz (Gast)


Lesenswert?

Daniel,
wo hast du das gelesen ? Hab mir mal die clock section im Datenblatt
angesehen und nix dergleichen gefunden.

von The Daz (Gast)


Lesenswert?

Marian, don't panic. Schliess den Quarz mit Kerkos an, setz die Fuses
und sei gluecklich. Dich interessieren die Details nicht wirklich
solange der Systemtakt funktioniert und genau genug ist.

von Daniel (x2) (Gast)


Lesenswert?

Hui...hab nochmal die ganze Sektion gelesen und muss mich leider
korrigieren. Sorry für die falsche Aussage. So ist das halt, wenn alles
schnell schnell gehen muss...:)

Schönen Tag noch und danke für die nette Diskussion Daz...;)

von Marian (Gast)


Lesenswert?

Ok dann mache ich das halt so, wenns nicht funktioniert melde ich mich
nochmal und gebe dir die Schuld ;)...ne Spaß bei Seite, wo is Ernst???

Danke Daz, ich werde es dann mal so machen...ciao

von Frank (Gast)


Lesenswert?

Kleiner Test zu selbst ausprobieren: Fuse auf externen Quartz setzen und
Controller rennen lassen (ohne den externen Quratz natürlich) -> nix
Weil nämlich der interne Oszillator abgeschaltet ist. Diente der
externe Quartz nur zum stabilisieren, dann würde der Controller erstmal
losrennen. Nun sollte man aber nicht den eigentlichen Takterzeuger mit
dem Taktsystem des AVR gleichsetzen. Der externe Quartz gibt dem
Taktsystem eine stabilere Grundlage als der interne Taktgenerator. Ich
vermute in diesem Sinne ist das mit der Stabilisierung zu lesen.

bye

Frank

von Stefan Kleinwort (Gast)


Lesenswert?

Um das Ganze nochmal klarer zu machen:

Es gibt 3 verschiedene Arten, dem ATmega den Takt zu erzeugen:

Interner RC-Oszillator
----------------------
Die Betonung liegt auf RC: Widerstand-Kondensator-Kombination.
Das ist ein Oszillator, der komplett ohne externe Teile auskommt. Dafür
ist er aber nicht sehr genau, je nach Derivat zwischen 1% und 10%
Genauigkeit. Der interner RC-Oszillator ist die Default-Einstellung der
Fuses, wenn der ATmega ausgeliefert wird. Es gibt unterschiedliche
Frequenzen, auf die der interne RC-Oszillator eingestellt werden kann.
Die Frequenzen sind bei den Fuses wählbar.

Interner Oszillator mit EXTERNEM Quarz
--------------------------------------
Der 2.Oszillator des ATmega hat nur die Verstärkerschaltung intern, das
frequenzbestimmende Element, den Quarz, muss man aussen (an XTAL1/2)
anschliessen. Zusätzlich sind noch 2 Kondensatoren erforderlich. Um
einen externen Quarz zu nutzen, müssen die Fuses entsprechend gesetzt
werden.
Ein beliebter Fehler ist es, die Fuse-Einstellung zu vergessen. Der
ATmega läuft dann zwar, aber mit der falschen Frequenz (nämlich der des
internen RC-Oszillators).

EXTERNER Oszillator
-------------------
Auch als externe Clock bezeichnet (z.B. bei der Fuses-Einstellung).
Hier wird keinerlei interne Hardware des ATmega verwendet.
Selten verwendete Option.

Viele Grüße, Stefan

von The Daz (Gast)


Lesenswert?

Fehlt nur noch der externe RC-Oszi. Warum den jemand benutzen sollte ist
mir allerdings auch nicht klar.

von Marian (Gast)


Lesenswert?

Is ja echt nett das ihr euch jetzt sone Müher gegeben habt mir das zu
erklären aber irgendwie bin ich noch verwirrter als zuvor. Wenn ich
jetzt alles richtig verstanden habe, nutze ich den externen Quarz mit
dem internen Oszillator(der gar keiner ist, sondern nur ein
"Verstärker") um den Systemtakt zu erzeugen.

Naja ich werde das jetzt so machen...wird schon hinhauen :)

Danke und Grüße Marian

von The Daz (Gast)


Lesenswert?

Hast es richtig verstanden. Ueber die Fuses entscheidest du, ob und
welcher Oszillator an den internen Schwingkreis angeschlossen wird. Der
Schwingkreis besteht nur aus einem mitgekoppelten, breitbandigen
Verstaerker. Seine Schwingfrequenz kann nun ueber ein internes/externes
RC Glied oder einen externen Quarz eingestellt werden. Wenn du den
externen Chip-Oszi benutzt, wird der interne Schwingkreis garnicht
benutzt.

von Ich (Gast)


Lesenswert?

Ich schließe mich meinen Vorrednern an...
ein Quarz alleine kann keinen Takt erzeugen - auch nicht mit 2 
Kondensatoren auf Masse... sollte nichts bei rauskommen...

die Fuses "entscheiden" darüber welcher Teil der Parallelschaltung 
genutzt werden soll...
entweder den inneren "Pseudoquarz", der nicht so genau und schnell ist
oder den extern angeschlossenen

deswegen passiert auch nichts, wenn man die Fuses auf externen Quarz 
setzt und nichts anschließt... der Quarz ersetzt nur das interne 
Äquivalente zum Quarz (wie auch immer das nun aussieht)


aber gibt wichtigere Themen beim Fusen...
z.B. die Sammlung an Quarzen und Oszis, die man haben sollte, um seine 
µCs retten zu können, falls man sich bei der tollen Auswahl im AVR 
Studio geirrt hat... ;)
mein Netbook mit Dude ftw :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.