Hallo Der Atmega32 (vermutlich auch die anderen Megas) haben in der USART-Konfiguration ein Bit, das die Baudrate verdoppelt, indem ein Taktteiler halbiert wird. Doch was hat das für einen Sinn? Warum setzt man ggf. nicht einfach die Baudrate doppelt so hoch bzw. warum wird dieser Taktteiler nicht von Haus aus halbiert, wenn doch so eine schnellere Übertragung möglich ist? Auszug aus dem Datenblatt des Mega32: Bit 1 U2X: Double the USART Transmission Speed This bit only has effect for the asynchronous operation. Write this bit to zero when using synchronous operation. Writing this bit to one will reduce the divisor of the baud rate divider from 16 to 8 effectively doubling the transfer rate for asynchronous communication. Gruss Michael
Wenn man direkt bei der Beschreibung zum U2X nachliest, steht da noch folgendes: "Note however that the Receiver will in this case only use half the number of samples (reduced from 16 to 8) for data sampling and clock recovery, and therefore a more accurate baud rate setting and system clock are required when this mode is used. For the Transmitter, there are no downsides." Man erkauft sich die höhere mögliche Baudrate also mit einer größeren Fehleranfälligkeit beim Empfang. Gruß Ingo
Hallo Achsoo läuft das ;-) Hätte ja auch selbst darauf kommen können, mal noch etwas weiter im Datenblatt zu lesen. Ich habs nun mal ausprobiert: Atmega32, 4 MHz Quarzoszillator, ich schreibe ins Windows Hyperterminal, der Controller schickt es zurück. Noch ohne aktiviertes U2X. 9600 Baud, funktioniert. 19200 Baud, funktioniert. 38400 Baud, funktioniert nicht mehr. 38400 Baud, mit aktiviertem U2X, funktioniert! Habe beim "chatten" mit dem Controller bisher keinen Übertragungsfehler feststellen können. Da ich relativ unkritische Daten (Bilder einer Kamera) übertragen will, könnte ich ab und an einen Ausrutscher auch verzeihen. Gruss Michael
Was nicht weiter verwunderlich ist, ergibt sich doch ohne U2X bei 4MHz und 38400 Baud ein Fehler von etwa -7%, mit U2X aber nur tolerable 0,16% (siehe Tabelle). Gruß Ingo
@Ingo: Da hast du aber eine schöne Tabelle gemacht. Die könnte man aber auch im Datenblatt auf Seite 164 finden... ;-)
So gesehen ist also U2X eine Art Entscheidung Qualität vs. Geschwindigkeit. Da ich bisland keine Probleme hatte mit gesetztem U2X, werde ich wohl mal dabei bleiben. Was mich aber sehr interessieren würde: Wann muss denn mit Übertragungsfehlern, begünstigt durch U2X=1, gerechnet werden? Wenn die Baudrate voll ausgeschöpft wird? Bei schlechteren Signalen durch Störungen/lange Leitung? Wenn die Gegenseite selbst nicht ganz sauber (z.B. Baudrate oder Signalform) sendet? Gruss Michael
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.