Forum: Mikrocontroller und Digitale Elektronik Wann externe Taktquelle für AVR?


von Benedikt R. (lustigeperson)


Lesenswert?

Da ich meinen Originalpost gelöscht habe versuche ich es noch mal 
zusammen zu bekommen.
Meine Frage war:

Wann benutzt man externe Taktgeber:
- Wenn man einen sehr genauen Takt benötigt
- Wenn man einen hohen Takt beötigt.

Frage1: Was ist sehr genau, bzw. wann reicht intern nicht mehr. und 
genügt der interne takt für 100Hz Multiplexing.

Fragezwei: wann Baudratenquarz und wann "gerade Zahlen". Ich hatte es so 
verstanden, dass Baudratenquarze eben bei UART nötig sind, aber mir war 
nicht klar wann man "gerade" verwdenden sollte.


 In der Bucht habe ich  allerdings AVRs mit einem
32,768kHz Uhrenquarz gesehen. Der wird ja wohl kaum zur Taktversorgung 
gut sein, oder? Der Sinn dürfte vermutlich eher im Bereich von "Timern" 
liegen. Aber was genau fange ich damit an.

: Bearbeitet durch User
von Pink S. (pinkshell)


Lesenswert?

Zum Multiplexen reicht der interne Takt. Alles davor ist so richtig.

Die Baudratenquarze erleichtern die Erzeugung "krummer" Baudraten wie 
z.B. 115200 Bd.

Man kann Baudraten-Quarzen für normale Anwendungen ohne UART benutzen. 
Ich denke, dass die meisten Entwickler runde Frequenzen bevorzugen, 
damit sie Timings leichter berechnen können.

Die 32kHz-Quarze sindd nur mit einem Timer verbunden, und sind in der 
Tat zur Uhrzeit-Erzeugung da. Der CPU-Clock wird dann aus einem zweiten, 
schnelleren Quarz (oder intern) erzeugt.

von Max H. (hartl192)


Lesenswert?

Benedikt R. schrieb:
> Frage Nr. 1 was ist "sehr genau".
Die Genauigkeit des Internen Oszillators (KEIN Quarz!!) kannst du im 
Datenblatt nachlesen.
Die Genauigkeit von externen Quarzen liegt im Bereich von wenigen Duzend 
ppm,
> Multiplexen einer LED-Matrix
> mit z.B. 100MHz. Hier wird wohl der interne Takt reichen, oder?
100MHz wird mit einem AVR nicht möglich sein, egal welche Taktquelle.
Bei der Multiplexfrequenz sind auch Abweichungen von 5% kein Problem.

> Allerdings einen
> 32,768kHz Uhrenquarz. Der wird ja wohl kaum zur Taktversorgung gut sein,
> oder? Der Sinn dürfte vermutlich eher im Bereich von "Timern" liegen.
Ja, wenn 32kHz schnell genug ist und Stromverbrauch entscheidend ist, 
verwendet man den Uhrenquarz zur Taktung des gesamten µC. Bei CMOS ist 
die Stromaufnahme nämlich proportional zur Frequenz.

von Mike (Gast)


Lesenswert?

Benedikt R. schrieb:
> Allerdings einen
> 32,768kHz Uhrenquarz. Der wird ja wohl kaum zur Taktversorgung gut sein,
> oder? Der Sinn dürfte vermutlich eher im Bereich von "Timern" liegen.
> Aber was genau fange ich damit an.

Mach mal eine Primfaktorzerlegung von 32768. Uhren laufen gerne mit 
einem 1Hz Takt.

von Max D. (max_d)


Lesenswert?

Die 32 kHz Quarze erzeugen Takt für einen Timer der dann als RTC 
arbeitet.
Ausserdem kann man danach den internen Oszillator kalibrieren....

von Max H. (hartl192)


Lesenswert?

Pink Shell schrieb:
> Die 32kHz-Quarze sindd nur mit einem Timer verbunden, und sind in der
> Tat zur Uhrzeit-Erzeugung da. Der CPU-Clock wird dann aus einem zweiten,
> schnelleren Quarz (oder intern) erzeugt.
Muss nicht sein... Es gibt auch Anwendungen, bei denen der gesamte µC 
mit dem 2^15Hz versorgt wird.

von Benedikt R. (lustigeperson)


Lesenswert?

Pink Shell schrieb:
> Man kann Baudraten-Quarzen für normale Anwendungen ohne UART benutzen.
> Ich denke, dass die meisten Entwickler runde Frequenzen bevorzugen,
> damit sie Timings leichter berechnen können.

Ok, also technisch egal. Wenn ich nicht vor krummen Zahlen
zurückschrecke wäre ein Baudratenquarz also nicht falsch.

Max H. schrieb:
> Die Genauigkeit des Internen Oszillators (KEIN Quarz!!) kannst du im
> Datenblatt nachlesen.
> Die Genauigkeit von externen Quarzen liegt im Bereich von wenigen Duzend
> ppm,

Die Frage bezog sich eher darauf bei welchen Anwendungen man eine
Genauigkeit benötigt die die des internen Taktes übersteigt. Aber das
hast du ja im Prinzip gesagt: dann wenn die benötigte Genauigkeit über
der des internen Taktes liegt.

Max H. schrieb:
> 100MHz wird mit einem AVR nicht möglich sein, egal welche Taktquelle.
> Bei der Multiplexfrequenz sind auch Abweichungen von 5% kein Problem.

Ich meinte 100Hz, sorry.

Max D. schrieb:
> Die 32 kHz Quarze erzeugen Takt für einen Timer der dann als RTC
> arbeitet.
> Ausserdem kann man danach den internen Oszillator kalibrieren....

Das heißt damit könnte man die Genauigkeit des internen Taktgebers
verbessern? Also wenn mir die Geschwindigkeit reicht, aber die
Genauigkeit nicht, wäre das eine Möglichkeit.


Vielen Dank, ihr habt mir wirklich sehr geholfen. Für meine
Anfängerprojekte kann ich also zuerst mal auf externe Taktgeber
verzichten und mir einfach mal ein paar Controller ordern :)
Danke für die wirklich schnelle, kompetente Hilfe!

EDIT: Ich habe wohl irgendwie nicht geantwortet, sondern meinen
Originalpost gelöscht.

von Mike (Gast)


Lesenswert?

Benedikt R. schrieb:
> Für meine
> Anfängerprojekte kann ich also zuerst mal auf externe Taktgeber
> verzichten und mir einfach mal ein paar Controller ordern :)

Auch bei Anfängerprojekten wirst du schnell auf die serielle 
Schnittstelle stoßen, die mit der Frequenzstabilität des internen 
Oszillators nur bei halbwegs stabilen Umgebungsbedingungen die 
Toleranzen einhält.

von Moby (Gast)


Lesenswert?

Mike schrieb:
> Auch bei Anfängerprojekten wirst du schnell auf die serielle
> Schnittstelle stoßen, die mit der Frequenzstabilität des internen
> Oszillators nur bei halbwegs stabilen Umgebungsbedingungen die
> Toleranzen einhält.

Außer, man verwendet die neueren Xmegas (und da die fehlerbereinigten 
U-Typen). Dann gehen auch UART-Anwendungen mit quarzlosem Takt (starten 
mit 2Mhz).

von Thomas E. (thomase)


Lesenswert?

Benedikt R. schrieb:
> Pink Shell schrieb:
>> Man kann Baudraten-Quarzen für normale Anwendungen ohne UART benutzen.
>> Ich denke, dass die meisten Entwickler runde Frequenzen bevorzugen,
>> damit sie Timings leichter berechnen können.
>
> Ok, also technisch egal. Wenn ich nicht vor krummen Zahlen
> zurückschrecke wäre ein Baudratenquarz also nicht falsch.
Die sind nicht krumm. 20MHz ist krumm. 16MHz ist nicht ganz so krumm.

Versuch mal mit einem 8-Bit-Timer 10ms zu erzeugen. Ohne Softwarezähler!
Entweder du bist sehr tolerant oder du nimmst einen Baudratenquarz.
1
Prescaler = 1024
2
16MHz / 1024 / 156,25 = 100Hz >>> 10ms
3
20MHz / 1024 / 195,3125 = 100Hz >>> 10ms
4
18,432MHz / 1024 / 180 = 100Hz >>> 10ms

Welchen Teiler bekommst du glatt in dein Timerregister und wer ist jetzt 
der krumme?

mfg.

: Bearbeitet durch User
von думлихер троль (Gast)


Lesenswert?

Man verwendet einen externen Clock, wenn ein gesammtes System synchron 
laufen soll, und man es daher nicht einem kleinen Controllerquarz 
ueberlassen will. zB ein FPGA plus ein Controller,

von Cyblord -. (cyblord)


Lesenswert?

Die neuen Tinys (T841) scheinen auch per internem RC-Oszi genau genug 
für UART zu laufen.
+-2% bei 0-85°C und 2.7V-4V. Das reicht locker für nen UART. Da muss man 
den Reflex "UART=ext. Quarz jetzt langsam mal ablegen.

von kif (Gast)


Lesenswert?

Da gibt es keine bessere Wahl, es kommt immer darauf an, was du vor 
hast.

Möchtest du in deiner Anwendung den UART verwenden? Dann wohl eher ein 
Baudratenquarz.

Möchtest du mit "nicht krummen" Baudraten arbeiten (z.B. CAN-BUS) , dann 
lieber ein glatter 8 oder 16 MHz Quarz.

von Benedikt R. (lustigeperson)


Lesenswert?

Hui!
Ich bin beeindruckt!
Hier kommt ja wirklich einiges an Feedback!

Mike schrieb:
> Auch bei Anfängerprojekten wirst du schnell auf die serielle
> Schnittstelle stoßen, die mit der Frequenzstabilität des internen
> Oszillators nur bei halbwegs stabilen Umgebungsbedingungen die
> Toleranzen einhält.

Benötigt man solche Schnittstellen nicht nur zur Kommunikation mit PCs 
oder anderen ICs... Zuerst mal werde ich eher auf niedrigem Level 
Elektronikbasteleien wie meinen LED Cube, oder Temperatursensorauslesung 
testen. Aber ich verstehe, was du meinst.

Thomas Eckmann schrieb:
> Die sind nicht krumm. 20MHz ist krumm. 16MHz ist nicht ganz so krumm.

Ich glaube du hast mich falsch verstanden. "Krumm" war für mich einfach 
jetzt synonym für die, für den Anfänger, "komplizierten" Werte. Aber 
danke für das Rechenbeispiel.

Aber generell stimmt meine Aussage, dass es eigentlich immer sinnvoller 
ist sich Baudratenquarze zu besorgen? Und wenn ich mir jetzt als 
"startset" welche kaufe, wieviel MHz nehme ich dann am besten?
Gibt es die Möglichkeit bei schnelleren Quarzen einen "Teiler" oder so 
etwas ein zu stellen um trotzdem auf niedrigerer Frequenz zu bleiben? 
Dann wären diese ja vielseitiger. Aber wie gesagt, ich bin wirklich ein 
Amateur, finde die Tutorials und so hier aber ganz hilfreich.

kif schrieb:
> Möchtest du mit "nicht krummen" Baudraten arbeiten (z.B. CAN-BUS) , dann
> lieber ein glatter 8 oder 16 MHz Quarz.

Das habe ich gerade erst nach dem Absenden gesehen. Also gibt es doch 
Anwendungen wo ich "gerade" Werte brauche. Dann weiß ich jetzt immer 
noch nicht was ich kaufe. Am besten erst mal nichts, bis ich eine 
konkrete Anwendung habe :)

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Prescaler = 1024
> 16MHz // 1024 // 156,25 = 100Hz >>> 10ms
> 20MHz // 1024 // 195,3125 = 100Hz >>> 10ms
> 18,432MHz // 1024 // 180 = 100Hz >>> 10ms

Wenn man den Taschenrechner richtig bedient, kann aber auch so rechnen:
16MHz // 1024 // 156 = 100Hz >>> 10ms
20MHz // 1024 // 195 = 100Hz >>> 10ms
18,432MHz // 1024 // 180 = 100Hz >>> 10ms

Benedikt R. schrieb:
> Aber generell stimmt meine Aussage, dass es eigentlich immer sinnvoller
> ist sich Baudratenquarze zu besorgen?

Nein. Man muß seine Anforderungen kennen und die zulässigen Toleranzen.
Persönlich lande ich dann immer bei 20MHz :-)

von kif (Gast)


Lesenswert?

Benedikt R. schrieb:
> Das habe ich gerade erst nach dem Absenden gesehen. Also gibt es doch
> Anwendungen wo ich "gerade" Werte brauche. Dann weiß ich jetzt immer
> noch nicht was ich kaufe. Am besten erst mal nichts, bis ich eine
> konkrete Anwendung habe :)

Am besten kaufst du dir verschiedene Quarze, die kosten ja nicht so viel

von Karl H. (kbuchegg)


Lesenswert?

> Zuerst mal werde ich eher auf niedrigem Level

Gerade dann ist das sinnvollste was du tun kannst, dir möglichst schnell 
eine Möglichkeit zur Ausgabe zu schaffen.
Das kann ein LCD sein, das kann aber auch eine UART sein. Womit wir 
wieder bei den Quarzen wären.

Das übersehen gerade Anfänger gerne. Du WIRST eine Ausgabemöglichkeit 
brauchen. Geh nicht davon aus, dass du deine Programme, so einfach sie 
auch sein mögen (und ein LED Cube ist NICHT einfach), aus dem Stand 
heraus fehlerfrei programmieren kannst. Und genau dann kommt die 
Ausgabemöglichkeit ins Spiel, mit der du das allseits beliebte Spielchen 
"Stochern im Nebel" problemlos gewinnen kannst.

von Lutz (Gast)


Lesenswert?

um hier die Begrifflichkeiten zu klären (bitte korrigieren wenn falsch):

- Ein Quarz ist keine externe Taktquelle

- Ein Quarzoszillator ist eine externe Taktquelle

von Cyblord -. (cyblord)


Lesenswert?

Lutz schrieb:
> um hier die Begrifflichkeiten zu klären (bitte korrigieren wenn falsch):
>
> - Ein Quarz ist keine externe Taktquelle
> - Ein Quarzoszillator ist eine externe Taktquelle


Eine Frage der Definition. Der Quarz ist zumindest ein externes Bauteil 
welcher zusammen mit einer internen Elektronik einen Takt erzeugt. 
Strengenommen also ein Hybrid.
In der typischen Diskussion mit Anfängern, würde ich ihn schon als 
"Externe Taktquelle" definieren. Darunter fällt eigentlich alles außer 
den rein internen Taktquellen des Controllers.

Die Tatsache dass ein Quarzoszillator komplett autark läuft und ein 
Quarz alleine nicht, entscheidet IMO nicht über die Zuordnung zur 
Kategorie "Intern" oder "Extern". Sondern ob man dazu externe Bauteile 
braucht oder nicht.

gruß cyblord

: Bearbeitet durch User
von omg (Gast)


Lesenswert?

cyblord ---- schrieb:
> In der typischen Diskussion mit Anfängern, würde ich ihn schon als
> "Externe Taktquelle" definieren. Darunter fällt eigentlich alles außer

So wie ein Aquarium mit Umwälzpumpe eine eigene Wasserquelle hat.

von Benedikt R. (lustigeperson)


Lesenswert?

Ich hatte mich ahlt nach dem AVR- Tutorial gerichtet:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment

Das der Quarz "alleine" nicht genügt hatte ich gesehen, mir ging es aber 
wirklich eher um "alles was nicht der interne Takt ist".

von Cyblord -. (cyblord)


Lesenswert?

omg schrieb:
> cyblord ---- schrieb:
>> In der typischen Diskussion mit Anfängern, würde ich ihn schon als
>> "Externe Taktquelle" definieren. Darunter fällt eigentlich alles außer
>
> So wie ein Aquarium mit Umwälzpumpe eine eigene Wasserquelle hat.

Naja der Vergleich hat ja gar keine Beine mehr....

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.