Hallo zusammen, ich habe ein kleines Problem. Ich benutze von Atmel das UART Programm. Auf meine Platine sitzt ein 12MHz Quarz aber das Programm ist für einen 11MHz Quarz ausgelegt . Jetzt wollte ich wissen was ich am Programm ändern muss. Könnt ihr mir da helfen? Gruß Björn SCON = 0x50; /* uart in mode 3 (9 bit), REN=1 */ SADDR=0x01; /* local address */ SADEN=0xFF; /* address mask */ TMOD = TMOD | 0x20 ; /* Timer 1 in mode 2 */ TH1 = 0xFD; /* 9600 Bds at 11.059MHz */ TL1 = 0xFD; /* 9600 Bds at 11.059MHz */ ES = 1; /* Enable serial interrupt */ EA = 1; /* Enable global interrupt */ TR1 = 1; /* Timer 1 run */
Das hängt stark vom verwendeten Controller ab. Das Datenblatt gibt allerdings mit Sicherheit Auskunft darüber, wie man aus Taktfrequenz und gewünschter Baudrate die Werte für den Timer ermittelt.
Wenn Du noch nen älteren 8051 hast (XTAL/12) dann gehen 9600Baud nicht bei 12MHz mit T1 (mit T2 gehts). Peter
Wobei ein "echter 8051" keinen T2 hat. Deswegen nimmt man die krummen Quartzfrequenzen, um die Baudraten mit möglichst keinem oder wenig Jitter zu erzeugen. Wenn der µC bis 24MHz geht, kannst Du auch 22.1184 MHz verwenden.
Dirk meint sicher das richtige, nämlich einen theoretisch notwendigen nicht ganzzahligen Teilerfaktor und hat nur den falschen Begriff erwischt.
Dieter Werner wrote: > Dirk meint sicher das richtige, nämlich einen theoretisch notwendigen > nicht ganzzahligen Teilerfaktor und hat nur den falschen Begriff > erwischt. OK, war vielleicht ein bischen seltsam ausgedrückt. So wie Dieter es schreibt. Durch den ungenauen Teilungsfaktor ergeben sich bei den Standardbaudraten Abweichungen. Diese summieren sich dann je nach Baudrate mit jedem übertragenem Bit. Bei zu großer Abweichung kommt das Bitsampling am Empfänger außer Tritt. Man sollte schon deshalb eine möglichst präzise Baudrate anvisieren, da die Gegenstelle aufgrund dieser Vorraussetzungen genauso abweichen kann. Sollte ein Teilnehmer in + der andere - - Richtung differieren so summiert es sich noch zusätzlich.
Besonders kritisch ist es, wenn der schnellere mehrere Bytes hintereinander sendet. Das Stopbit wird im 7.,8. und 9.Takt einer Bitzeit (16 Takte) gesampelt und erst danach kann eine neue Startflanke erkannt werden, ansonsten sind alle folgenden Bytes nur Bytesalat. Peter
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.