Forum: Mikrocontroller und Digitale Elektronik UART mit 12MHz


von Björn P. (krusty)


Lesenswert?

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 */

von Rolf Magnus (Gast)


Lesenswert?

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.

von Joe (Gast)


Lesenswert?


von Obelix (Gast)


Lesenswert?

Datenblatt !

von Peter D. (peda)


Lesenswert?

Wenn Du noch nen älteren 8051 hast (XTAL/12) dann gehen 9600Baud nicht 
bei 12MHz mit T1 (mit T2 gehts).


Peter

von Dirk H. (arm-dran)


Lesenswert?

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.

von Schorsch (Gast)


Lesenswert?

Was bitte hat Jitter mit der Quarzfrequenz zu tun?

von Dieter Werner (Gast)


Lesenswert?

Dirk meint sicher das richtige, nämlich einen theoretisch notwendigen 
nicht ganzzahligen Teilerfaktor und hat nur den falschen Begriff 
erwischt.

von Dirk H. (arm-dran)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.