Forum: Mikrocontroller und Digitale Elektronik AVR UART externe Quarze - Taktfrequenz - Pollin Board


von J. W. (ontheway)


Lesenswert?

Hi,

dank euch habe ich schon wieder was dazugelernt. Nun 2 Sachen: Ich würde 
gerne erst einmal das Pollin Board auf den externen Quarz setzen. Da ist 
laut Schaltplan ein 16MHz Quarz und 2 22pF Kondensatoren dran. Das 
sollte also Schwingen. Also kann ich doch einfach im Burnomat die 
Frequency Range auf 8-12 MHz schalten? Und was ist mit Start-up time? Da 
kann ich doch einfach "slowly rising power" setzen, obwohl glaube ich so 
ein Quarz schneller eingeschwungen ist? Da brauche ich doch nur in der 
Programmierung dafür sorgen, das beim Einstieg einfach bissi gewartet 
wird? Wie wartet man da am Besten?

Nun aber was rein logisches, was ich nicht kapiere... ich dachte, der 
Atmega16, 32 ... haben 8MHz Taktfrequenz maximal intern. Wieso kann man 
denn da so einfach einen 16MHz Quarz anschließen? Ist der dann nicht 
übertaktet? Somit gleich die nächste Frage: Was ist denn der "beste" 
Quarz, wenn ich auch UART nutzen möchte? Stellt euch vor, ich habe einen 
Kontroller, der soll diverse Sachen machen, auch UART. Ich würde jetzt 
als Laie sagen: Hmmm, da nehme ich doch einen 7.3728MHZ, das ist so ca. 
8 MHZ, ist schön schnell... warum sollte ich einen langsameren wählen? 
Warum einen schnelleren?

So, viele Fragen! Danke für Antworten!

Viele Grüße,
Jens

von J. W. (ontheway)


Lesenswert?

OH je, das ist ja gar kein RC-Oszillator, sondern external ceramic or 
crystal resonator! Gut das ich noch keine Fuses gesetzt habe

von Frank S. (franksanderdo)


Lesenswert?

Moin Jens,

die Frage mit dem Power up ist mir nicht ganz klar geworden, das kann 
aber am Wein liegen ;-)

Zum Thema Quarz 8 Mhz / 16 Mhz:
Wie Du schon sagst 8Mhz "intern"!! Da liegt der Trick. Den Prozessor 
kannst Du ohne externen Quarz mit (also im Prozessor erzeugter Takt) mit 
bis zu 8Mhz betreiben. Da ist schlicht und einfach ein Taktgenerator / 
Schwingkreis im Prozessor eingebaut der dazu genutzt wird.

Die Maximal Frequenz die so ein Atmega16 kann ist aber 16Mhz. Da das 
nicht mit dem internen Taktgenerator zu erreichen ist, benötigst Du 
einen externen Quarz oder Taktgenerator.

Die Frage mit dem Takt bei Nutzung der UART:
Da müssen wir ein wenig ausholen....
Sagen wir einfach mal Du willst deine UART mit 9600 Bit/sec benutzen.
Wenn Du jetzt einfach mal 8Mhz versuchst solange zu Teilen bis das 
9,6Khz raus kommt wirst Du feststellen das geht nicht auf. Da bleibt 
immer ein Rest. Anders eben als beim 7,3728 MHz Quartz. Du könntest 
natürlich auch einen 14,7456 MHz Quartz nehmen ;-)
Die "krummen" Quarze stellen sicher das über fast alle gängigen 
Baudraten die Bitlänge genau passt.
Im Prinzip wartet ein UART Empfänger auf das Startbit und schaut danach 
in festen Zeitabständen auf die Datenbits. Wenn jetzt beim Sender ein 
Bit 0,00001s lang ist und beim Empfänger 0,000015s lang, dann kann es 
schnell zu Fehlern kommen. (Werte sind nur ein Beispiel und wild 
erfunden ;-) )
Bei den AVRs gibt es Möglichkeiten diese Abweichung zu minimieren, 
allerdings bin ich da eher altmodisch und nutze wenn ich UARTs nutze 
lieber die "krummen" Quartze ;-)

Grüße
Frank

von M. N. (Gast)


Lesenswert?

Frank Sander schrieb:
> Den Prozessor
> kannst Du ohne externen Quarz mit (also im Prozessor erzeugter Takt) mit
> bis zu 8Mhz betreiben.

Setze das OSCCAL Register auf 0xff; die interne Taktfrequenz liegt dann 
bei rund 15MHz.

von J. W. (ontheway)


Lesenswert?

Frank Sander schrieb:
Moinsen Frank,
>
> Zum Thema Quarz 8 Mhz / 16 Mhz:
> Wie Du schon sagst 8Mhz "intern"!! Da liegt der Trick. Den Prozessor
> kannst Du ohne externen Quarz mit (also im Prozessor erzeugter Takt) mit
> bis zu 8Mhz betreiben. Da ist schlicht und einfach ein Taktgenerator /
> Schwingkreis im Prozessor eingebaut der dazu genutzt wird.
>
> Die Maximal Frequenz die so ein Atmega16 kann ist aber 16Mhz. Da das
> nicht mit dem internen Taktgenerator zu erreichen ist, benötigst Du
> einen externen Quarz oder Taktgenerator.

Okay, ist es dann aber nicht logisch, dass ich einen 14,7456 MHz Quarz 
nehme, weil der dann möglichst schnell taktet? Hat die hohe Frequenz 
denn nachteile? Ich möchte den mC nicht für super zeitkritische Sachen 
nutzen, ich möchte ein Netzwerk von mCs haben mit 
"Komponenten-Betreuung". Ich frage mich halt: Sollte man dann nicht 
immer einen möglichst schnellen Quarz nehmen? Oder, wenn "man Zeit hat", 
einen langsameren? Oder sollte ich eine hohe Baudrate nehmen, wenn ich 
einen schnellen genauen Quarz habe, oder ist das egal?
Eine hohe Baudrate hat doch nur Vorteile, wenn ich viel Information 
übertragen möchte!?
>
> Die Frage mit dem Takt bei Nutzung der UART:
> Da müssen wir ein wenig ausholen....
> Sagen wir einfach mal Du willst deine UART mit 9600 Bit/sec benutzen.
> Wenn Du jetzt einfach mal 8Mhz versuchst solange zu Teilen bis das
Ja, danke, das habe ich schon kapiert, ich will einen "krummen" Quarz 
nehmen, mehrere.
> Bei den AVRs gibt es Möglichkeiten diese Abweichung zu minimieren,
> allerdings bin ich da eher altmodisch und nutze wenn ich UARTs nutze
> lieber die "krummen" Quartze ;-)
Ja, Frank, will ich auch.

Die Frage ist: Welchen Quarz sollte ich nehmen? Warum?

Danke,
Jens

von Ulrich (Gast)


Lesenswert?

Eine höhere Quarzfrequenz hat auch Nachteile:
1) Die Störabstrahlungen nehmen eher zu.
2) Die Spannung muss beim AVR etwas höher sein, damit er sicher damit 
läuft.
3) Der Stromverbrauch ist höher - mit Sleep modes kann man das oft fast 
ausgleichen.
4) ggf. passen die Vorteiler nicht für eine gewünschte Frequenz.

Eine höhere Baudrate ist in der Regel empfindlicher auf Störungen und 
geht ggf. nicht über längere Leitungen oder Optokoppler oder langsame 
Treiber.

Die 7,3.. MHz sind schon ein ganz guter Kompromiss, wenn man den bekommt 
könnte man auch noch die halbe Frequenz nehmen. Darunter werden die 
Quarze meist teurer.

von Frank S. (franksanderdo)


Lesenswert?

Moin Jens,

Diesmal fange ich mit der Baudrate an ;-)
Auch wenn jetzt einige Leute aufschreien werden, meiner Meinung nach 
gilt:
So langsam wie möglich und so schnell wie nötig!

Will sagen:
Je langsamer ich meine UART betreibe desto geringer ist das 
Fehlerrisiko. Vor allem wenn die Strecken länger werden. Gleichzeitig 
muss ich wissen wie viele Daten ich in einer bestimmten Zeit übertragen 
will.

Ähnliches wende ich auch beim Takten des Prozessors an.
Je höher ein Prozessor getaktet wird, desto schwieriger wird das 
Boarddesign. Ok das mag bei den AVRs mit 16MHz noch nicht dramatisch 
sein, aber generell gilt es schon ;-)

Da ich deine Anwendung nicht gut genug kenne kann ich jetzt nicht sagen 
welche Geschwindigkeit / welchen Takt Du brauchen würdest. Das hängt 
davon ab wieviele E/As du bearbeiten willst und wie komplex die 
Berechnungen dahinter sind.

Grüße
Frank

von J. W. (ontheway)


Lesenswert?

Frank Sander schrieb:
> Moin Jens,
>
> Diesmal fange ich mit der Baudrate an ;-)
> Auch wenn jetzt einige Leute aufschreien werden, meiner Meinung nach
> gilt:
> So langsam wie möglich und so schnell wie nötig!
>

Hey, danke noch mal für die Antworten, habe jetzt auf 2 Pollin-Boards 
die 16MHz gegen Baudquarze mit 7,3... ausgetauscht.

LG,
Jens

von Frank S. (franksanderdo)


Lesenswert?

Moin Jens,

immer gerne und viel Spass beim Basteln ;-)

Grüße
Frank

von Boris (Gast)


Lesenswert?

Hallo zusammen,

zu dem Thema Quarze, Pollin-Board und UART habe ich auch eine Frage:

Wird der AVR durch das vorhandensein eines externen Quarzes bei Nutzung 
der int. Schwingquelle (Fuses intern auf 8 Mhz gesetzt) nicht gestört? 
Müsste man also die Fuses für die Nutzung des ext. Quarzes einstellen?

Hoffentlich habe ich das jetzt gut verständlich ausgedrückt? Mein 
Problem ist nämlich, dass ich keine Zeichen bzw. nach diversen Versuchen 
nur "Kauderwelsch" im Terminal angezeigt bekomme. Die Baudrate hatte ich 
variiert: 9600, 4800, 2400 und zuletzt 300 Baud, laut Rechner alles 
Baudraten mit einer Fehlerrate von 0,2 %...

Vielen Dank für eure Hilfe.

Boris

von Falk B. (falk)


Lesenswert?

@ Boris (Gast)

>Wird der AVR durch das vorhandensein eines externen Quarzes bei Nutzung
>der int. Schwingquelle (Fuses intern auf 8 Mhz gesetzt) nicht gestört?

Nein.

>Müsste man also die Fuses für die Nutzung des ext. Quarzes einstellen?

>Problem ist nämlich, dass ich keine Zeichen bzw. nach diversen Versuchen
>nur "Kauderwelsch" im Terminal angezeigt bekomme.

Der interne Oszillator ist ungenau.

>Die Baudrate hatte ich
>variiert: 9600, 4800, 2400 und zuletzt 300 Baud, laut Rechner alles
>Baudraten mit einer Fehlerrate von 0,2 %...

Weil in der Rechnung der Fehler vom Ozillator fehlt.

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

von Frank S. (franksanderdo)


Lesenswert?

Moin Boris,

Edit:
Ups Falk war die entscheidenden 7 min. schneller ;-)
Edit End

ich konnte bisher nicht feststellen, das externe Taktquellen stören wenn 
interner Takt genutzt wird.
Allerdings habe ich im Kopf, das Atmel davor warnt die interne 
Taktquelle im Zusammenhang mit UART zu verwenden weil diese dafür nicht 
genau genug sind.

Ich müsste mein Pollin Board mal anschließen und das ausprobieren wie 
weit es da einen Unterschied gibt. Das kann ich aber frühestens am 
Freitag machen.

Grüße
Frank

von Karl H. (kbuchegg)


Lesenswert?

Und um das auch noch zu beantworten

> Müsste man also die Fuses für die Nutzung des ext. Quarzes einstellen?

Ja, muss man. Ein Quarz schwingt nicht von alleine. D.h. da muss im µC 
eine Schaltung aktiviert werden, die den Quarz zum Schwingen anregt. 
Genau das macht man mit den Fuses.

von Boris (Gast)


Lesenswert?

Hallo Falk, Frank und Karl Heinz,

vielen Dank für die erhellenden Infos, in dem Dickicht aus Informationen 
war ich irgendwo etwas abgehangen und bevor ich jetzt an den Fuses 
rumspiele, dachte ich mir, ich frage lieber noch mal. Auch wenn die AVRs 
recht günstig sind, aber man muss sie ja nicht um jeden Preis kaputt 
kriegen :)

Viele Grüße

Boris

von Uwe (de0508)


Lesenswert?

Hallo,

bei der gesamten Baudratendiskussion könnte man doch auch mal ein 
Datenblatt nehmen und den Abschnitt UART lesen ?

Bsp. atmega32 S.165ff

http://www.atmel.com/Images/doc2503.pdf

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.