Hi, ich versuche gerade den UART an meinem atmega8 zu aktivieren. Auf meinem Rechner nutze ich HTerm. Das senden der Zeichen von meinem PC funktioniert super. Beim Empfangen bekomme ich jedes Zeichen genau um den Wert 128 versetzt vom atmega8 geliefert (sendet der avr den dez-Wert 100, empfängt HTerm 228)???? Baudrate ist 9600, es wird 8N1 verwendet und ich nutze die internen 1MHz. Den Quellcode habe ich akt. nicht zur Hand, liefere ich noch nach. Kann es sein, dass evt. das Stopbit als Datenbit gesehen wird und dadurch die 128 immer auf 1 ist? Danke.
Hi >Baudrate ist 9600, es wird 8N1 verwendet und ich nutze die internen >1MHz. Das ergibt schon bei exakten 1MHz einen Baudratenfehler von 7%. Da fällt die ungenauigkeit des internen Oszillators schon gar nicht mehr ins Gewicht. Also, das kann nicht gehen. MfG Spess
...also Baudrate auf 2400 oder 4800 (Takt will ich nicht erhöhen)? Ich werde das mal probieren. Danke.
Mit U2X (Double speed) sollten auch 9600 klappen. http://www.gjlay.de/helferlein/avr-uart-rechner.html Gruß
Hi >...also Baudrate auf 2400 oder 4800 (Takt will ich nicht erhöhen)? >Ich werde das mal probieren. Mit dem internen RC-Oszillator bleibt es trotzdem ein Glücksspiel. MfG Spess
Hi
>...also Baudrate auf 2400 oder 4800 (Takt will ich nicht erhöhen)?
Klingt fast so wie: Ich trau mich nicht....
Warum nicht den Takt mit einem externen Quarz erhöhen, was spricht
dagegen? Sicherlich, die ersten Versuche mögen wie bei mir auch, mit
ausgesperrten Controllern enden, aber die sind ja nicht defekt. Man kann
mit ein wenig Nachdenken diese auch wieder beleben. Und es ist ja nicht
gesagt, das man die Controller abschießt. Es gibt genug Beiträge, die
alle Informationen beinhalten. Hätt ich diese damals gelesen, wär mir
einiges erspart geblieben. Aber so ist das nun mal, man ist ja selbst
der King....
Der Vorteil eines externen Taktes ist die Genauigkeit. Nicht nur bei
einer seriellen Datenübertragung, sondern auch, wenn mal Zeitsteuerungen
gewünsccht sind. Also laß dich nicht kirre machen und schau, wie andere
ihren Quarz an den Controller klemmen. Einmal kapiert, und du machst nie
wieder etwas anderes.
Natürlch gibt es auch Schaltungen, die sollen so klein wie möglich sein
und da ist einfach kein Platz für einen Quarz. Auch möchte man die
Portpins anderen Zwecken zuordnen. (bspw. Mega8)
Aber da sollte eine serielle Anbindung auch nicht vorgesehen werden.
Gruß oldmax
spess53 schrieb: > Mit dem internen RC-Oszillator bleibt es trotzdem ein Glücksspiel. ..., es sei denn, man hält ihn auf Zimmertemperatur, sorgt für stabile Versorgungsspannung und macht sich die Mühe, den Oszillator zu kalibrieren und zu Anfang des Programmablaufs das richtige Byte ins OSCCAL-Register zu schreiben. Mehr dazu in den Application Notes AVR053: Calibration of the internal RC oscillator AVR054: Run-time calibration of the internal RC oscillator via the UART von Atmel
oldmax schrieb: > Der Vorteil eines externen Taktes ist die Genauigkeit. Nicht nur bei > einer seriellen Datenübertragung, sondern auch, wenn mal Zeitsteuerungen > gewünsccht sind. Also laß dich nicht kirre machen und schau, wie andere > ihren Quarz an den Controller klemmen. Einmal kapiert, und du machst nie > wieder etwas anderes. Richtig. > Natürlch gibt es auch Schaltungen, die sollen so klein wie möglich sein > und da ist einfach kein Platz für einen Quarz. Es gibt auch noch andere Gründe, auf den Quarz zu verzichten, nämlich, wenn man dessen Genauigkeit einfach nicht benötigt. Selbst UART-Nutzung ist nicht zwingend ein Hindernis. Wenn die Umweltbedingungen annähernd konstant sind (Temperatur, Spannung), reicht der interne RC-Oszillator aus. Man muß ihn aber natürlich kalibrieren. Auch sollte die UART-Bitrate so niedrig gewählt werden, daß wenigstens kein systematischer Fehler durch durch die ganzzahlige Teilung mehr da ist, denn natürlich addieren sich dieser systematische Fehler und der durch die Ungenauigkeit der Taktquelle verursachte.
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.