Grüß Gott an die Wissensgemeinschaft, vorab: Ich bin reiner Hobbybastler und spiele seit einiger Zeit mit Mikrocontrollern (AVR, bisher nur attiny) rum. Dabei habe ich bei meinen Mikrocontroller-Spielereien immer nur den internen Taktgeber verwendet. Jetzt möchte ich auch mal einen externen Taktgeber einbinden (einfach so aus Neugier und Spieltrieb, es gibt keine konkrete Anforderung), und zwar an einen atmega328p. Es geht um diesen Oszillator: Reichelt-Bestellnummer "OSZI 1,843200", 5V, baudratenkompatibel. Die serielle Kommunikation steht als nächstes auf meiner Experimentier-Liste, deshalb dieser Oszillator. Über den Anschluß bin ich mir noch nicht so ganz im klaren, und auch sonst habe ich noch ein paar Fragen, die ich mir zum Großteil schon selbst beantwortet habe, aber nicht weiß, ob die Antwort auch richtig ist. Deshalb möchte ich hier um Korrekturen bzw. Richtigstellungen bitten: So weit ich das richtig verstanden habe, hat der Oszillator die passende Elektronik schon verbaut. Ich brauche keine weiteren Kondensatoren, richtig? Und im Datenblatt des Mikrocontrollers finde ich auf Seite 49 zum Thema fuses: "Low power crystal oscillator" "Full swing crystal oscillator" "Low frequency crystal oscillator" Alle mit unterschiedlichen fuse-settings. Auf der hiesigen AVR_Fuses-Seite finde ich diese Einträge ebenfalls, allerdings lauten sie dort etwas anders: "External Crystal/Ceramic Resonator" "External Low-frequency crystal" "External RC Oscillator" Wenn ich die AVR_Fuses-Seite richtig interpretiere, wäre ich mit dem Oszillator auf der sicheren Seite und muß den "External RC Oscillator" für die fuse-settings wählen. Aber welche settings genau? Die AVR_Fuses-Seite für External RC Oscillator sagt "1000-0101", aber das ist nur ein Beispiel von irgendeinem Mikrocontroller. Im Datenblatt des atmega328p, Seite 49 finde ich keinen Eintrag mit "1000-0101", vermutlich schlicht deshalb, weil das ein anderer Typ ist. Dafür finde ich dort: "Low Power", "Full swing" oder "Low frequency"-oscillator. Was genau muß ich hier bei den fuses wählen und was sind die Unterschiede zwischen den Typen? Low Frequency scheint ein Oszillator im "Uhren-Tempo" zu sein, aber was ist ein "Full swing" oder "low power" oscillator? Vielen Dank schon im Voraus für alle sachdienlichen Hinweise.
Stephan E. schrieb: > Wenn ich die AVR_Fuses-Seite richtig interpretiere, wäre ich mit dem > Oszillator auf der sicheren Seite und muß den "External RC Oscillator" > für die fuse-settings wählen. Aber welche settings genau? Nicht durcheinander bringen lassen :-P Die für deinen Oszillator richtige Einstellung ist 'Ext. Clock' (CKSEL=0000). Der Ausgang des Oszillators wird an XTAL1 angeschlossen. XTAL2 steht als GPIO zur Verfügung.
Stephan E. schrieb: > Und im Datenblatt des Mikrocontrollers finde ich auf Seite 49 zum Thema > fuses: > "Low power crystal oscillator" > "Full swing crystal oscillator" > "Low frequency crystal oscillator" > Alle mit unterschiedlichen fuse-settings. Das ist für Quarze, nicht für Quarz-Oszillatoren. Du brauchst 'External Clock'.
Stephan E. schrieb: > Es geht um diesen Oszillator: > Reichelt-Bestellnummer "OSZI 1,843200", 5V, baudratenkompatibel. Der ist keine besonders gute Wahl. 18,432 MHz würden den ATmega deutlich besser nutzen. "Baudratenquarz" ist bei diesen Taktfrequenzen aber garnicht mehr so angesagt. Auch mit 20 MHz bekommt man hohe Baudraten recht genau eingestellt. Ein separater Taktgeber ist zunächst einmal ein nicht abschaltbarer Stromverbraucher. Das ist eigentlich nur dann sinnvoll, wenn man besonders stabile Ausführungen mit ca. 1 ppm Genauigkeit über den gesamten Temperaturbereich -25 - +85 °C braucht. Für "normal genaue" Anwendungen ist ein einfacher Quarz die bessere Wahl. Die beiden zusätzlichen Kondensatoren sind doch kein Problem.
m.n. schrieb: > Auch mit 20 MHz bekommt man hohe Baudraten > recht genau eingestellt. Die meißten mit kaum tollerierbaren Fehler. Mit 1.8432 alle bis 230400 fehlerfrei, sogar Exoten wie 76800 oder 7200 und das bei erheblich weniger Stromverbrauch.
> Die meißten mit kaum tollerierbaren Fehler.
Bei diesem Deutsch dreht sich der Quarz ja im Fels um.
Matthias S. schrieb: > Die für deinen Oszillator richtige Einstellung ist 'Ext. Clock' > (CKSEL=0000). > Der Ausgang des Oszillators wird an XTAL1 angeschlossen. XTAL2 steht als > GPIO zur Verfügung. Danke, das hätte ich doch glatt falsch gemacht. Wieder was g'lernt. :) Und wenn ich das Datenblatt richtig interpretiere, greift der Vorteiler auch bei einem externen Takt, oder? D.d. wenn der Vorteiler aktiv ist, habe ich effektiv 1.8432 MHz/8 ~ 230 KHz. M.n. schrieb > Der ist keine besonders gute Wahl. 18,432 MHz würden den ATmega > deutlich besser nutzen. Das ist natürlich vollkommen richtig. Mir geht's aber generell um den Lerneffekt und weitere Erfahrungen sammeln - und nicht zuletzt macht's einfach Spaß, und genau das erwarte ich von einem Hobby. Ich muß damit kein Geld verdienen und ich bin mir sicher: bislang habe ich noch nichts gebastelt, was die Leistung auch nur annähernd optimal ausreizen würde. Aber bis jetzt habe ich immer versucht, so wenig wie möglich der Leistung zu "nutzen". Warum 8MHz, wenn's mit abgeändertem Quellcode auch mit nur einem MHz augenscheinlich genauso gut läuft? Selbst mit 128KHz ist's (zumindest zum Teil) noch ganz ok für meine Verhältnisse. Genau das ist es, was für mich derzeit den Reiz ausmacht. Aber das sind natürlich nur Spielereien, kein Vergleich zum Profi, der in ganz anderen Dimensionen denkt und arbeitet. Irgendwann komme ich sicher auch mal an die Grenze - aber so weit bin ich noch nicht. Und ein Oszillator ist schnell getauscht.
Stephan E. schrieb: > 1.8432 MHz/8 ~ 230 KHz. Tja... Es ist schon ok, zu lernen ..... Aber logisch ist dein Vorhaben nicht unbedingt. Niedrigen Takt verwendet man eigentlich nur, wenn man Strom sparen will, bzw wenig Spannung vorliegen hat. Aber dann ist ein Uhrenquarz meist die bessere Wahl, mit dem man den RC Oszillator "trimmt", dann klappts auch fein mit der Baudrate. Und viel Tiefschlaf. Zudem hast du dich mit dem Oszillator auf 5V angenagelt. Aber was solls, ist ja nicht meine Baustelle.
... schrieb: >> Die meißten mit kaum tollerierbaren Fehler. > > Bei diesem Deutsch dreht sich der Quarz ja im Fels um. Sachlich falsch ist es auch noch, meist ist der Baudratenfehler tolerierbar. wendelsberg
A. H. schrieb: > Mit 1.8432 alle bis 230400 fehlerfrei, Für mich ist es ein Fehler, den µC ohne zwingenden Grund nur mit 1/10 seiner max. Frequenz zu betreiben. Wenn Du schon im Datenblatt blätterst, sieh Dir auch mal die Tabelle mit 20 MHz und U2Xn = 1 an. > sogar Exoten wie 76800 oder 7200 Interesant, gerade 7200 Bd habe ich immer wieder vermisst! Stephan E. schrieb: > Und ein Oszillator ist schnell getauscht. Wozu? Wenn Du es nicht so eilig hast, dann schalte doch den internen Vorteiler ein. Sobald Du schnelle PWM, viele LEDs, ... brauchst, geht so ein ATmega auch schnell in die Knie. Irgendwann willst Du Interrupts nutzen, und da kann die Ausführungsgeschwindigkeit nicht hoch genug sein, gerade auch, wenn es darum geht, die Zeichen der USART rechtzeitig zu verarbeiten. Die Oszillatoren kosten wohl alle ähnlich viel. Warum dann nicht gleich den passenden für die Zukunft nehmen? Aber mach, wie Du meinst!
...und gerade der 328P hat - anders als noch ältere AVRs - einen zur Laufzeit verstellbaren Prescaler. Gerade beim Herumspielen: Lieber 18,xx MHz Quarz per Prescaler auf 1,xx MHz oder weniger runterteilen, wenn du den Takt nicht brauchst. Und wenn du feststellst, dass du doch mehr Takt brauchst, kurze Änderung im Code, fertig. Andersherum geht (ohne PLL) nicht. Aber ist ja eh zu spät, du hast den Oszillator ja schon. Immerhin kannst du damit fast jeden AVR retten, wenn du die Clock Selection Fuse Bytes falsch setzt... MfG, Arno
Arno schrieb: > ...und gerade der 328P hat - anders als noch ältere AVRs - einen zur > Laufzeit verstellbaren Prescaler. > > Gerade beim Herumspielen: Lieber 18,xx MHz Quarz per Prescaler auf 1,xx > MHz oder weniger runterteilen, wenn du den Takt nicht brauchst. Und wenn > du feststellst, dass du doch mehr Takt brauchst, kurze Änderung im Code, > fertig. Andersherum geht (ohne PLL) nicht. Das ist in der Tat ein sehr gutes Argument. Habe ich mir für meine nächste Bestellung vorgemerkt. Danke - genau solche Dinge (zur Laufzeit einstellbarer Vorteiler - hatten meine bisherigen attinies nicht) sind es, die ich noch lernen will.
Viele attraktive Quarzfrequenzen gibts hier: https://en.wikipedia.org/wiki/Crystal_oscillator_frequencies Am besten nach UART sortieren und mit der Verfügbarkeit beim Händler vergleichen.
> Die meißten mit kaum tollerierbaren Fehler.
Die/der hat wohl nicht nur Rechtschreibprobleme...
Mit billigen Standard-Quarzen ab 4,194 MHz, 6,4 MHz, ... habe
ich bisher alle üblichen Baudraten bis 38,4 kBd mit Fehler < 0,5%
hinbekommen.
Das funktioniert sehr gut, weil sich jede USART (und jede sachkundig
programmierte SW-UART) bei jedem Startbit neu synchronisiert. Nach
10..12 Steps (8n1 ... 8-Parity-2) geschieht die Abtastung der
Bitpolarität dann eben nicht mehr in der Mitte (50%), sondern bei
50% +/-5% bis 50% +/-6%. - Vollkommen unerheblich!
Bei 2% Frequenzablage wird es langsam kritisch, da geschieht die
Abtastung (worst case, 8-Parity-2) zuletzt bei 50% +/- 24%.
Das geht auch gut, solange kein weiterer Fehler (z.B. 2% Ablage
bei der Gegenstelle) dazukommt!
Jacko schrieb: > Mit billigen Standard-Quarzen ab 4,194 MHz, 6,4 MHz, ... habe > ich bisher alle üblichen Baudraten bis 38,4 kBd mit Fehler < 0,5% > hinbekommen. 38,4 kBd ist doch ein recht antiker Wert, der vor > 30 Jahren interessant war. Die µPs (bzw. deren UARTs) waren mit nur einstelligen MHz-Werten getaktet und daher nicht "erfreut" mit 3,84 kHz Interruptfrequenz traktiert zu werden. Wenn man 9600 oder 19200 Bd verarbeiten konnte war es schon hinreichend schnell. Die absolute Grenze schien bei 57,6 kBd (11,0592 MHz /12/16) zu liegen ;-) Bei einem ATmega würde ich als Vorgabe 115,2 kBd einstellen. Der schafft das locker und langweilt die Anwendung nicht. Wenn es in Richtung PC geht, dann auch gerne 250 oder 500 kBd, da die RS232->USB-Umsetzer das auch locker mitmachen. Bei aktuellen µCs mit fraktionalem Baudratengenerator sind "Baudratenquarze" eher störend denn nützlich. Falls jetzt jemand das USB-Lied singen möchte: ich finde UARTs nach wie vor gut und praktisch, besonders, wenn sich µCs untereinander unterhalten sollen.
m.n. schrieb: > Bei aktuellen µCs mit fraktionalem Baudratengenerator sind > "Baudratenquarze" eher störend denn nützlich. Wie sollte das gehen? Man braucht doch den fraktionalen Teil dann einfach nur auf Null setzen und alles ist schick.
Beim UART-Einsatz haben sog.UART-Quarze den Vorteil, dass viele der üblichen Takte mit dem programmierbaren UART-Teiler genau eingestellt werden können. Bei "runden" Zahlen wie 20MHz werden die Taktfrequenzen der UART meist nur mit Fehler (<1%) einstellbar. Macht aber wenig, denn erst bei etwa 5% bekommt die UART Probleme. Ein Quarz hat Vorteile gegenüber einem externen Osz: -nahezu jeder Kontroller enthält bereits den für einen Quarz nötigen Oszillator, also warum soll man den nicht verwenden? -auch die Pinbelegung der Kontroller ist meist direkt für den Quarz ausgelegt -Das Layout ist einfacher zwei C's direkt am Quarz und an den Kontrollerpins brauchen weniger Platz als der Oszillator mit seinen Zuleitungen -Er ist etwas billiger (bei Massenfertigung wichtig) -deutlich weniger Stromverbrauch und Wärmeentwicklung -Quarz + C's meist kleiner als ext.Oszillator Externen Oszillator nimmt man eigentlich nur, wenn auf der Platine bereits ein Fremdtakt vorliegt, mehrere Kontroller/ICs' gleichgetaktet laufen sollen oder besondere Anforderungen an die Frequenzgenauigkeit besteht, die nur ein externern Taktosz. erfüllen kann
:
Bearbeitet durch User
Peter R. schrieb: > Beim UART-Einsatz haben sog.UART-Quarze den Vorteil, dass viele der > üblichen Takte mit dem programmierbaren UART-Teiler genau eingestellt > werden können. > Bei "runden" Zahlen wie 20MHz werden die Taktfrequenzen der UART meist > nur mit Fehler (<1%) einstellbar. Macht aber wenig, denn erst bei etwa > 5% bekommt die UART Probleme. Wenn man die Geräte auf beiden Seiten der Leitung baut, kann man so mit besonders krummen Quarzen eine abhörsichere Verbindung aufbauen. Jedenfalls für Lauscher mit VT100-Röhrenterminals. :)
m.n. schrieb: > Der ist keine besonders gute Wahl. 18,432 MHz würden den ATmega deutlich > besser nutzen. Nein, das liegt nämlich außerhalb seiner Spezifikation. Er kann maximal 16 MHz.
Stephan E. schrieb: > Warum 8MHz, wenn's mit abgeändertem Quellcode auch > mit nur einem MHz augenscheinlich genauso gut läuft? Selbst mit 128KHz > ist's (zumindest zum Teil) noch ganz ok für meine Verhältnisse. Du kannst die Taktfrequenz per Software mit dem CLKPR Register herunter teilen. Damit hast du freie Wahl, wenn du mit einen schnellen Oszillator verwendest. Wenn du aber mit 1,8 MHz anfängst, kannst du sie nur auf noch niedrigere Frequenzen herunter teilen, aber nicht erhöhen.
m.n. schrieb: > Die absolute Grenze schien bei 57,6 kBd (11,0592 MHz /12/16) zu liegen Ja, über 20km Telefonleitung. Aber nicht in lokalen Anwendungen. 115200 Baud waren vor 30 Jahren schon normal. Jeder einfache PC konnte das.
Ich würde die üblichen 11,0592 oder 14,7456MHz nehmen. Als Teiler ist nicht nur 8, sondern binär gestuft 2..256 einstellbar.
c-hater schrieb: >> Bei aktuellen µCs mit fraktionalem Baudratengenerator sind >> "Baudratenquarze" eher störend denn nützlich. > > Wie sollte das gehen? Man braucht doch den fraktionalen Teil dann > einfach nur auf Null setzen und alles ist schick. Oh, ich dachte nicht, daß man das so missverstehen kann. Stefan ⛄ F. schrieb: >> Der ist keine besonders gute Wahl. 18,432 MHz würden den ATmega deutlich >> besser nutzen. > > Nein, das liegt nämlich außerhalb seiner Spezifikation. Er kann maximal > 16 MHz. Halt Dich doch einfach mal mit Deinen unqualifizierten Kommentaren zurück. Stefan ⛄ F. schrieb: > m.n. schrieb: >> Die absolute Grenze schien bei 57,6 kBd (11,0592 MHz /12/16) zu liegen > > Ja, über 20km Telefonleitung. Aber nicht in lokalen Anwendungen. 115200 > Baud waren vor 30 Jahren schon normal. Jeder einfache PC konnte das. Und schon wieder: das Augenzwinkern hast Du wohl schon garnicht mehr gesehen und vom 8051 wohl nur aus der Zeitung erfahren. Auch geht es hier nicht um PCs :-( Peter D. schrieb: > Ich würde die üblichen 11,0592 oder 14,7456MHz nehmen. Ich sehe keinen Grund, auf die max. 20 MHz zu verzichten. Wer 62,5 kBd braucht nimmt 16 MHz.
Stefan ⛄ F. schrieb: > Nein, das liegt nämlich außerhalb seiner Spezifikation. Er kann maximal > 16 MHz. Wer hat dir das erzählt? 20Mhz sind bei 5V die offizielle Grenze.
Stefan ⛄ F. schrieb: > m.n. schrieb: >> Der ist keine besonders gute Wahl. 18,432 MHz würden den ATmega deutlich >> besser nutzen. > > Nein, das liegt nämlich außerhalb seiner Spezifikation. Er kann maximal > 16 MHz. Ich lese im Datenblatt https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf 20MHz. Hast du versehentlich das Datenblatt zu der Automotive-Version herangezogen? MfG, Arno
Peter R. schrieb: > Ein Quarz hat Vorteile gegenüber einem externen Osz: > > -nahezu jeder Kontroller enthält bereits den für einen Quarz nötigen > Oszillator, also warum soll man den nicht verwenden? Das kann aber auch ein Nachteil sein: die Zuverlässigkeit, dass der Oszillator richtig arbeitet, hängt ab von den Eigenschaften von Quarz, Kondensatoren, Oszillatorschaltung und dem Layout. Es mag ja sein, dass die µC-Oszilatoren inzwischen recht zuverlässig arbeiten, aber ich kenne das noch den Anfangszeiten der µCs: es kam gelegentlich vor, dass ein nach Jahren gefertigtes Seriengeräte nicht mehr einwandfrei lief, da sich die Eigenschaften des µCs geändert hatten. Der µC-Hersteller kommentierte das so: "Da muss man halt die Werte der Kondensatoren anpassen". In der Zeit hatten wir in der Firma beschlossen, nur noch fertige Quarzoszilatoren zu verwenden. Allerdings war der Stromverbrauch hier nicht relevant, die Zuverlässigkeit aber wohl (Industrieanwendung!)
Rechtspeiber schrieb: > A. H. schrieb: >> Die meißten mit kaum tollerierbaren Fehler. > > Boah ey :-( Bleib mal ganz ruhig! Daß hier anstatt 'ß' oder 'ss' vielfach nur ein 's' geschrieben wird, liegt meiner Einschätzung nach um den Faktor 100 höher. Die fehlenden Kommata werden dann als ''''' nachgereicht :-( Dietrich L. schrieb: > aber ich kenne das noch den Anfangszeiten der µCs: es kam > gelegentlich vor, dass ein nach Jahren gefertigtes Seriengeräte nicht > mehr einwandfrei lief, Und, mit 7404? Wie lange ist das her? Willst Du diese Erfahrung in alle Ewigkeit verallgemeinern? Solange man Quarze auf dem Grundton betreibt, sind diese doch recht schwingfreudig. Gut, bei superkleinen Ausführungen muß man etwas sorgsamer entwicklen, aber ein HC49U-S rennt doch mit fast jeder Beschaltung. Wenn ein XO mehr verbraucht als die restliche Schaltung inkl. µC, dann hat man etwas falsch gemacht ;-)
Matthias S. schrieb: >> Nein, das liegt nämlich außerhalb seiner Spezifikation. Er kann maximal >> 16 MHz. > Wer hat dir das erzählt? 20Mhz sind bei 5V die offizielle Grenze. Siehe Bild. Da habe ich das her. https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Arno schrieb: > Hast du versehentlich das Datenblatt zu der Automotive-Version > herangezogen? Scheint so. Misst.
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.