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 */
Gast
#546290
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.
Gast
#546299
Probiers hier: http://www.keil.com/c51/baudrate.asp
Gast
#546440
Datenblatt !
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.
Gast
#546611
Was bitte hat Jitter mit der Quarzfrequenz zu tun?
Gast
#546628
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.