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
OH je, das ist ja gar kein RC-Oszillator, sondern external ceramic or crystal resonator! Gut das ich noch keine Fuses gesetzt habe
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
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.
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
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.
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
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
Moin Jens, immer gerne und viel Spass beim Basteln ;-) Grüße Frank
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
@ 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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.