Hallo, ich war auf der ATMEL Seite! Fast alle ATMEL-Mikrocontroller ausser eins haben einen internen Oszillator. Dann müsste man doch nicht einen Oszillator extra schalten, oder? Danke.
Hallo! Der interne Oszillator kann nicht alle Frequenzen 'erstellen' und ist leider auch relativ ungenau / temperaturabhängig. Für Aufgaben, in denen exaktes Timing notwendig ist (z.B. UART, RTC) ist der interne Oscillatopr ungeeignet und man verwendet einen exakteren, temperaturstabilen externen Quarz. Dazu muss man die Fusebits ändern. Grüße Flite
Ich hab' mal gelesen, dass das UART mit dem internen Oszillator nur keine hohen Datenraten erlaubt. Weis einer die Toleranzwerte des Internen Oszillators?
>Ich hab' mal gelesen, dass das UART mit dem internen Oszillator nur >keine hohen Datenraten erlaubt. Weis einer die Toleranzwerte des >Internen Oszillators? Warum zum Teufel gebt Ihr Euch immer mit diesen halbwahren Überlieferungen zufrieden? Wir sind doch nicht mehr im Mittelalter, wo nur der Pfarrer die Bibel lesen konnte. Sowas steht im Datenblatt, dieses Thema z.B. beim Mega16 um S.300. Mit Ausprobieren oder guten Tipps werdet Ihr gerade bei diesem Thema eine Lösung finden, die jetzt funktioniert. Im Sommer leider nicht mehr, weil der RC-Osz. stark temperaturabhängig ist. Die Baudrate muss auf ca. 1,5% genau stimmen (Vorsicht Hausnummer -> Datenblatt lesen). Egal ob 115200 oder 300 Baud eingestellt sind. Eine abweichende Taktfrequenz macht sich bei allen Baudraten gleich fatal bemerkbar. Stefan
nö, also bei den neuen mega8/16/32/128 etc. ist der RC-Oszillator temp.-kompensiert und recht stabil, lediglich die Fertigungstoleranz der Nenn-freuquenz ist "etwas" gross. Dieses läßt sich aber auch durch entsprechende Justage über das OSCAL-Register kompensieren. Kommt immer drauf an was fertigungstechnisch günstiger ist, quarz und 2 C`s oder entsprechender Abgleich des internen Oszillators.
Wo ist der interne RC-Osc. temperaturkompensiert? Im Manual steht kompensiert, das bezieht sich auf die Kompensation der Herstellungstoleranzen, s.u. Die Abweichung beträgt bei 5,0V zwischen 8,25Mhz (-40 Grad) und 7,8Mhz (80 Grad). Ändert sich zusätzlich die Spannung, kommen noch weitere Abweichungen dazu. Das Register OSCCAL dient lediglich des Abgleichs von Fertigungstoleranzen im Herstellungsprocess. OSCCAL wird beim Reset mit einem werksseitig gebranntem Kalibrierwert geladen. Dies hat aber nichts mit Temparatur-Kompensation zu tun. Über dieses Register lässt sich theoretisch eine Temp.Kompensation durchführen, dazu muss aber die Temperatur (z.B. über AD) von der Software gemessen werden. Wäre sicher interessant, habe aber noch niemand gesehen, der sowas macht. Stefan
also über den normalen C-Temperaturbereich 0-70 °C und entsprechendem Abgleich der Nennfrequenz bleibt man im "sicheren" Bereich von +- 2% für UART-Baudraten generierung. Uhren oder genau timer kann man natürlich von einem R/C-Oszillator nicht erwarten. Gegenüber den alten internen Oszillatoren ist der jetzige aber ein erheblicher Fortschritt und kann Bauteile und Kosten sparen.
Ich will den internen RC ja nicht schlechtreden, und ich bin auch immer dafür zu haben, Bauteile wegzulassen wo es nur geht. Beim UART wäre ich trotzdem vorsichtig. Wenn man genau weiss, was man tut, und der Temperaturbereich entsprechend eingeschränkt ist, mag das gehen. Es gibt aber nichts ärgerlicheres als Fehler, die in der Sommersonne auftreten und im Labor auf dem Schreibtisch nicht nachzuvollziehen sind. Die Baudraten-Toleranz kenne ich mit max. 1,5% Gesamtfehler. Dabei sollte man nicht nur den AVR berücksichtigen, sondern auch die Gegenseite. 1,5% Fehler machen nach einem komplett übertragenen Frame immerhin schon 15% Zeitversatz aus. Beim Gesamtfehler müssen neben dem Temperaturverhalten noch andere Sachen berücksichtigt werden, z.B Baudraten-Einstellung (bei 9600 und 8Mhz 0,2% Error), über OSCCAL einstellbare Frequenz ca. +/- 0,2% genau, ... Wie gesagt, für manche Anwendungen wird man mit RC leben können. Mit meinem ursprünglichen Posting wollte ich auch hauptsächlich anregen, sich das Temperaturverhalten aus dem Datenblatt zu holen und nicht hier zu erfragen. Wenn man sich bei der Interpretation dieser Werte dann nicht sicher ist, kann man hier immer noch nachfragen. Nur so schafft man sich doch eigenes Wissen, auf das man sich auch wirklich verlassen kann. Stefan
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.