Guten Abend, Ich hätte mal eine Frage zu externen Quarz an µControllern. Da ich ein Anfänger bin, hätte ich gerne gewusst, wann man einen bestimmten Quarz mit einem bestimmten Takt nimmt? Ich weiß, dass der Takt für jeden Controller-Typ begrenzt ist. Aber wann brauche ich einen hohen Takt und wann kann ich auch einen geringen nehmen? Woher weiß ich das? Schätzt ihr das ab oder kann das berechnet werden? Danke im Voraus. MfG
Faustregel: Wenn du Rechenpower/Geschwindigkeit willst, nimmst du einen hohen Takt.
Hi, das ist mir schon klar. Aber unsere Profi-Entwickler ist diesem Forum wählen den Quarz bestimmt präziser oder?
Hi_ich_bins_die_µC_Uschi schrieb: > Woher weiß ich das? Schätzt ihr das ab oder kann das berechnet werden? Wenn du Strom sparen möchtest, kann es sinnvoll sein, einen Takt mit niedrieger Frequenz zu verwenden. Auch bei niedriger Spannung ist die mögliche Taktfrequenz eines µC oft niedriger, als bei voller Spannung. Und welche Rechenleistung man braucht, i.e. wieviel Takte der Prozessor zur Bearbeitung einer bestimmten Aufgabe braucht, kann man sich im Simulator ansehen.
Hi_ich_bins_die_µC_Uschi schrieb: > das ist mir schon klar. Aber unsere Profi-Entwickler ist diesem Forum > wählen den Quarz bestimmt präziser oder? Kann sein... Wenns einen Grund dafür gibt.. Aber einen Grund, oder sonstige Randbedingungen, hast du ja nicht genannt. Also kann man auch keine Empfehlung geben.
Arduino F. schrieb: > Hi_ich_bins_die_µC_Uschi schrieb: >> das ist mir schon klar. Aber unsere Profi-Entwickler ist diesem Forum >> wählen den Quarz bestimmt präziser oder? > > Kann sein... > Wenns einen Grund dafür gibt.. > > Aber einen Grund, oder sonstige Randbedingungen, hast du ja nicht > genannt. > Also kann man auch keine Empfehlung geben. Wie sieht es z.B. aus, wenn man einen LCD nehmen will? Wie sieht es aus, wenn man mehrere UART realisieren will? Wie sieht es aus, bei Verwendung von Bluetooth, WiFi, GPS und etc.? Das wären z.B. Fragen, wo ich mich fragen würde, welchen Takt soll ich da genau nehmen?
Der empfohlene Quartz steht normalerweise in den Applikationen des jeweiligen Herstellers und den nimmt man dann auch... Meistens...
Oft ist es völlig egal. Sehr viele MCs langweilen sich eh die meiste Zeit. Das können sie langsamer oder schneller tun :-) Strombedarf - klar. Manchmal ist das ein Argument. Aber ob nun 4 oder 5mA ist dann doch meist auch völlig egal. Eine Besonderheit ist die UART. Bei hohen Baudraten kommt man dann um einen sog. Baudratenquarz nicht herum. Man kommt eigentlich für den "normalen" MC-Betrieb mit rel. wenigen Frequenzen gut aus. -4MHz und 16/20MHz. -9,216MHz und 14,74MHz für die UART
Hi_ich_bins_die_µC_Uschi schrieb: > Das wären z.B. Fragen, wo ich mich fragen würde, welchen Takt soll ich > da genau nehmen? Einen, der ausreicht, damit der µC in der verfügbaren Zeit seine Aufgabe erledigen kann. Wenn der höher als der maximal für den Prozessor zulässige ist, ist der Prozessor unpassend, die Rechenalgorithmen ungünstig oder das Programm schlecht.
Hi_ich_bins_die_µC_Uschi schrieb: > Wie sieht es z.B. aus, wenn man einen LCD nehmen will? Du kannst auch einen Präzisions-IC-Sockel zersägen und daraus eine Steckhalterung für Quarze gewinnen (--> drei Beinchen in einer Reihe, das mittlere Beinchen entfernen). Dann kannst du durch umstecken mit verschiedenen Quarzen experimentieren.
Hi_ich_bins_die_µC_Uschi schrieb: > Arduino F. schrieb: >> Hi_ich_bins_die_µC_Uschi schrieb: >>> das ist mir schon klar. Aber unsere Profi-Entwickler ist diesem Forum >>> wählen den Quarz bestimmt präziser oder? >> >> Kann sein... >> Wenns einen Grund dafür gibt.. >> >> Aber einen Grund, oder sonstige Randbedingungen, hast du ja nicht >> genannt. > > Wie sieht es z.B. aus, wenn man einen LCD nehmen will? LCD haben idR. keine engen Anforderungen an das Timing. > Wie sieht es aus, wenn man mehrere UART realisieren will? Ein UART hingegen schon. Wenn der Quarz den Takt für den UART liefern soll, würde man eine Frequenz wählen, die ein ganzzahliges Vielfaches der gewünschten Baudrate ist. Für den UART RX braucht man meist sogar ein Vielfaches dieser Frequenz, z.B. das 16-fache. Aus naheliegendem Grund nennt man derartige Quarze Baudratenquarze. > Wie sieht es aus, bei Verwendung von Bluetooth, WiFi, GPS und etc.? Da kommt es auf die Schnittstelle an, mit denen man sie anspricht. SPI z.B. ist unkritisch (hat eine eigene Taktleitung), I²C/TWI dito, UART hatten wir ja gerade. USB braucht typisch 12MHz bzw. ein Vielfaches davon. Auch Ethernet oder I²S (Audio) brauchen bestimmte, feste Taktraten.
Axel S. schrieb: > USB braucht typisch 12MHz bzw. ein Vielfaches > davon. Auch Ethernet oder I²S (Audio) brauchen bestimmte, feste > Taktraten. CAN ist auch so ein Kandidat für einen genauen Takt. Eine Uhr ist eher keiner weil die aus der Batterie laufen muss und dafür braucht ein (MHz-)Quarz zu viel Strom. Wann immer es geht, nimmt man keinen Quarz, sondern den internen Oszillator oder als Mittelweg einen keramischen Resonator. Der hat die beiden Kondensatoren schon eingebaut und trotzdem ein kleineres Gehäuse. Er braucht auch keine Widerstände und belegt deshalb weniger Platz wodurch das Layout viel einfacher wird. Von den Frequenzen her gibt es keinen Unterschied zum Quarz, nur die Genauigkeit ist schlechter. Dafür ist er mechanisch und elektrisch robuster. Ein Argument für höhere Quarz-Frequenzen ist der Platzbedarf. Genau wie bei Musikinstrumenten braucht man für niedrige Frequenzen größere Resonanzkörper. Besonders bei SMD-Quarzen versucht man die Natur zu überlisten, aber je kleiner, umso schlechter. Die brauchen dann eine genau angepasste Oszillatorschaltung und schwingen schlecht an -- nichts für Bastler.
Hallo, nimm einfach denjenigen Quarz, der zu Deiner Anwendung nach reiflicher Überlegung und Studium aller relevanten Datenblätter am besten passt. Als Anfängerin würde ich Dir 4 MHz empfehlen. Dieser ist universell. mit freundlichem Gruß
Hi_ich_bins_die_µC_Uschi schrieb: > Wie sieht es z.B. aus, wenn man einen LCD nehmen will? Dann nimmt man gar keinen Quarz. Für fast alle LCD reicht der interne RC-Oszillator. > Wie sieht es aus, wenn man mehrere UART realisieren will? Dann muss man rechnen, welche Baudraten man nutzen will, wie man den Prescaler wählt und ob sich das ausgeht. Das ist schwieriger als du dir vorstellst, weil das von den Eigenschaften von allen beteiligten UART-Modulen abhängt, die nicht immer gleich funktionieren müssen. Wer faul ist, nimmt einen Baudratenquarz, mit dem sich alle Baudraten ausgehen. > Wie sieht es aus, bei Verwendung von Bluetooth, WiFi, GPS und etc.? Da nimmt man gar keinen Quarz. Für die Kommunikation zum Bluetooth, WLAN, GPS-Modul reicht der RC-Oszillator. Oder nicht (wenn es eine UART ist). Ein WLAN oder Bluetooth-System baut kaum jemand selber auf, das hat zulassungstechnische Gründe. Also brauchst du auch den Quarz nicht auszuwählen. > Das wären z.B. Fragen, wo ich mich fragen würde, welchen Takt soll ich > da genau nehmen? Bei so unpräzisen Angaben kann man keine Empfehlung geben!
Christian S. schrieb: > Als Anfängerin würde ich Dir 4 MHz empfehlen. Dieser ist universell. Bah, so ein schmarrn. Damit kann man kaum mal eine schnellere UART betreiben. Oder I2S. Völlig unpassend für viele Anwendungen. --> von wegen universell...
Auch wenn man Strom sparen möchte könnte man sich je nach Applikation überlegen trotzdem einen Quarz mit höherer Frequenz zu erledigen (Programm ist schneller abgearbeitet) und sich dann in den Sleepmode zu legen...
Hi_ich_bins_die_µC_Uschi schrieb: > Aber unsere Profi-Entwickler ist diesem Forum > wählen den Quarz bestimmt präziser oder? Moin. Eine Schaltung eines uC mt einem geringen Takt auszulegen als der maximal möglichen Frequenz birgt immer das Risiko später in der SW nicht ausreichend Performance zu haben. In der HW hat das keine Qualitätsfolgen also wird man sich normalerweise an die Obergrenze legen. Es sei denn es gibt Spezialanforderungen (spezielle Taktfrequenz für bestimmte Zeiten, z.B. Baudrate, SleepMode, Stromverbrauch, .... oder Anforderungen durch HW- und SW- Architektur). Bei den Resonatoren selbst versucht man wie sonst auch an den Kosten zu sparen welhalb Keramikresonatoren überall dort eingesetzt werden wo eine Frequenzabweichung von 1...2% kein Problem darstellt (üblicherweise schätze ich den Einsatzfall auf etwa 80...90%). Wo es genuer gehen muss werden Quarze einsgesetzt. der Quarzoszillator ist ein Device das nur noch geringe Bedeutung hat da die meisten uC den Oszillator-Treibe an Bord haben. Ausnahme sind TCXOs die eine extreme Genauigkeit (1...2ppm) bieten. rgds
viele µC haben eine PLL Schaltung um aus dem Quarz die gewünschten Frequenzen zu bekommen. Die sind dann auch umschaltbar. Manche haben sogar mehrere PLLs um den Takt z.B. für Kommunikation getrennt einstellen zu können. So reicht auch einem 200MHz µC ein 20MHz Quarz
Volle schrieb: > viele µC haben eine PLL Schaltung um aus dem Quarz die gewünschten > Frequenzen zu bekommen. Die sind dann auch umschaltbar. In diesem Falle sucht man sich den Quarz raus der am kostengünstigsten in der gewünschten Bauform (meist die kleinste) ist und stellt die maximale (oder nötige) Frequenz mit der PLL ein. Danke für den Hinweis. rgds
Preis/Verfügbarkeit kann auch noch ein Argument sein. Als Bastler nimmt man gelegentlich, was gerade 'rumliegt oder in einem Restposten billig war, anstatt auf eine neue Lieferung zu warten. Aus der Industrie gibt es da das Beispiel mit den IR-Fernbedienungen, die früher häufig mit einem 450kHz-Resonator getaktet wurden, weil es den als Standardbauteil aus der Radioproduktion billig gab.
AVR-Controller haben übrigens die Möglichkeit, den Takt intern durch 8 zu teilen (DIVCLK8). Damit läuft das Programm 8x langsamer als der Oszillator (natürlich nur, wenn man das möchte und das entsprechende Fuse-Bit gesetzt hat).
Hi >Auch wenn man Strom sparen möchte könnte man sich je nach Applikation >überlegen trotzdem einen Quarz mit höherer Frequenz zu erledigen >(Programm ist schneller abgearbeitet) und sich dann in den Sleepmode zu >legen... Spart man bei AVRs nichts. Bei doppelten Takt-> doppelter Strom und halbe Verarbeitungszeit >AVR-Controller haben übrigens die Möglichkeit, den Takt intern durch 8 >zu teilen (DIVCLK8). Die können den Takt sogar weiter (1, 2 , 4, 8, ... 256) teilen. Sogar ohne zu Hilfenahme einer Fuse. Siehe CLKP-Register im Datenblatt. MfG spess
> das ist mir schon klar. Aber unsere Profi-Entwickler ist diesem Forum > wählen den Quarz bestimmt präziser oder? Profis haben noch ganz andere Entscheidungskriterien als die hier genannten. Wenn ich z.B nur 1000Geraete brauche und in anderen Geraeten andere Quarze mit 100000Stk laufen, dann naemlich ich natuerlich wenn es irgend geht einen bereits vorhandenen Quarz. Ein anderer ist auch Vibration. Das kann dann dazu fuehren das man besser garkeinen Quarz nimmt. Olaf
spess53 schrieb: >>Auch wenn man Strom sparen möchte könnte man sich je nach Applikation >>überlegen trotzdem einen Quarz mit höherer Frequenz zu erledigen >>(Programm ist schneller abgearbeitet) und sich dann in den Sleepmode zu >>legen... > > Spart man bei AVRs nichts. Bei doppelten Takt-> doppelter Strom und > halbe Verarbeitungszeit Und bei Batteriebetrieb ist es nicht nur so, dass man nichts spart, es wird sogar noch Energie verschwendet: je höher der Entladestrom einer Primärzelle ist, desto geringer ist die nutzbare Kapazität.
Olaf schrieb: > Ein anderer ist auch Vibration. Das kann dann dazu fuehren das man > besser garkeinen Quarz nimmt. Ja stimmt, MEMS-Osc ist inzwischen recht genau!
Ich muss mich da mal reinhängen. Für eine Eieruhr oder den Belichtungstimer kann ich also bedenkenlos den MC-internen Oszillator verwenden? Ich habe mir jetzt extra einen Quarzoszillator gekauft und war erschrocken wie groß das Teil ist. Gruß Andreas
Andreas M. schrieb: > Für eine Eieruhr oder den Belichtungstimer kann ich also bedenkenlos den > MC-internen Oszillator verwenden? ja, reicht locker. Im Datenblatt ist normalerweise der Fehler angegeben. Bei einigermassen guten µC hast du z.B. 1% Fehler. Bei halbwegs konstanter Zimmertemperatur eher noch weniger und den absoluten Fehler kann man korrigieren. Und 1% bei einem 5 Minuten Ei wären 3s Fehler, damit kann man leben.
spess53 schrieb: > Die können den Takt sogar weiter (1, 2 , 4, 8, ... 256) teilen. Sogar > ohne zu Hilfenahme einer Fuse. Siehe CLKP-Register im Datenblatt. Das Fusebit stellt ja auch nur den Initialisierungswert des CLKP-Registers auf 8 statt auf 0 ein. Zum eigentlichen Thema: Welchen Oszilator mal wählt ist nicht immer trivial. Eigentlich wurde schon alles dazu gesagt. Folgende Prioritäten setze ich mir dabei immer: - Wie genau muss der Oszilator sein? (Temperatur- und Spannungsschwankungen berücksichtigen) - Wie schnell muss der uC mindestens sein? - Wieviel Strom steht für den uC zur Verfügung, muss Strom gespart werden? - Welcher Bauraum auf der Platine steht zur Verfügung? Daraus ergibt sich eigentlich automatisch welcher Oszilator in welcher Geschwindigkeit in Frage kommt.
Danke schon mal für die interessanten Antworten. Kennt ihr auch Literatur, wo das Thema wissenschaftliche mal behandelt worden ist? MfG
Arduino F. schrieb: > http://www.rainers-elektronikpage.de/Grundlagen-de... > ?? Vielen Dank. Genauso so etwas meinte ich. :) LG
> Als Anfängerin würde ich Dir 4 MHz empfehlen.
Der funktioniert immer. Auch wenn du irgendwas mit unpassenden
Kondensatoren auf Lochraster zusammen bastelst.
Sowohl bei höhere Frequenzen als auch bei Uhrenquarzen muss du
sorgfältiger arbeiten.
Noch einer schrieb: > Sowohl bei höhere Frequenzen als auch bei Uhrenquarzen muss du > sorgfältiger arbeiten. Naja, Uhrenquarze und auch 16 MHz Quarze hab ich bisher auch problemlos mit einem AVR auf nem 08/15 Steckbrett betrieben. Das ist nun wirklich keine Hürde.
Hi_ich_bins_die_µC_Uschi schrieb: > Da ich ein Anfänger bin, hätte ich gerne gewusst, wann man einen > bestimmten Quarz mit einem bestimmten Takt nimmt? Ich weiß, dass der > Takt für jeden Controller-Typ begrenzt ist. Na also, da weißt du ja schon einiges. Bei den meisten Controllern ist aber die von dir genannte Begrenzung ein ziemlich breites Scheunentor. Sie reicht z.B. bei den kleinen PIC's bis Null herunter. Aber zumeist dreht man den Spieß um: Der herstellungsbedingte Optimalbereich für Quarze liegt so etwa zwischen 4 MHz und 20 MHz. Darunter werden die Quarze unhandlich groß und darüber gibt es zumeist nur Obertonquarze. Also bedient man sich bei einem µC am ehesten aus dem oben genannten Bereich 4..20 MHz. Es gibt aber Spezialitäten, die man beachten muß: 1. Für USB braucht man genau 48 MHz und die muß der µC aus seiner eingebauten PLL und dem angeschlossenen Quarz erzeugen können. Das geht nicht mit allen Quarzen. Also muß man dafür was geeignetes nehmen, also 4 oder 8 oder 12 MHz zum Beispiel. 2. Für I2S braucht man je nach Abtastfrequenz und Wandler Frequenzen im Bereich 22..27 MHz (hab's nicht auswendig gelernt) und die muß man dann eben aus dem Quarz erzeugen können - entweder direkt oder per PLL 3. CAN, Ethernet und so können gelegentlich auch spezielle Frequenzen benötigen, da lies dir aber lieber die Manuals dazu durch. 4. Für UART's, also serielle Kanäle reicht bei heutigen µC mit ihren ja doch eher hohen Systemtakten im Bereich 50 MHz und mehr fast jede Quarzfrequenz aus, denn prinzipbedingt kann eine serielle Schnittstelle auch mit kleineren Restfehlern in der Abtastfrequenz ganz gut leben (vorausgesetzt, man arbeitet senderseitig mit 1.5 oder 2 Stoppbits). Der Rest an Bedenken ist wahlfrei. Wer keine hohe Geschwindigkeit braucht, kann auch mit geringerer Taktfrequenz arbeiten und wer keine Genauigkeit braucht, dem reicht auch der eingebaute RC-Oszillator aus. W.S.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.