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 :)
Aus den 3,6864MHz kann man die üblichen Baudraten rausteilen. Das geht mit 4MHz nur ungenau. Deshalb gibt es diese krummen Quarze...
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.
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
>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
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
'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.
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
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 :)
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
Hinzufügen muß man noch, daß die fertigen Oszillatoren oft richtige Stromfresser sind, d.h. sie verbrauchen viel mehr, als der MC. Peter
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!
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.
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?
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...
Daniel, wo hast du das gelesen ? Hab mir mal die clock section im Datenblatt angesehen und nix dergleichen gefunden.
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.
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...;)
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
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
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
Fehlt nur noch der externe RC-Oszi. Warum den jemand benutzen sollte ist mir allerdings auch nicht klar.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.