Forum: Mikrocontroller und Digitale Elektronik serielle Schnittstelle


von MC (Gast)


Lesenswert?

Tag an alle,
ihr könnt mich jetzt für blöd erklären, aber ich bekomme den Reload-Wert 
für den Timer1 meines 8051 nicht richtig ausgerechnet.
Ich benutze den AT89S8253 mit 24MHz und möchte die RS232 auf 600Baud 
einstellen.

Die Formel sollte sein:
baud=2^smod*1/32*fosc/12*1/(256-TH1)

Bei fosc=11,059MHz und SMOD=0 komme ich auf einen Wert von 0D0h, welcher 
auch richtig sein sollte.

Bei fosc=24MHz und SMOD=0 komme ich auf 98h. Ich kann mit diesem Wert 
mit anderen µCs aber nicht mit 600Baud kommunizieren. Experimentell habe 
ich den Wert 0BCh und SMOD=1 ermittelt.

Kann das richtig sein, oder hab ich nen Rechenfehler? Kann es vielleicht 
an der hohen Taktfrequenz von 24MHz liegen?

Danke schon mal für eure Antworten,
MC

von Zacc (Gast)


Lesenswert?

Das einfachste wird mal sein in einer Schleife dasselbe Zeichen zu 
senden und mit dem Oszi mal zu messen.

von Peter D. (peda)


Lesenswert?

Warscheinlich hast Du das X2-Bit gesetzt oder gefused, d.h. Dein 8051 
teilt durch 6 und nicht durch 12.

Und dann hast Du Dir nen Oberwellenquarz andrehen lassen, d.h. statt 
24MHz schwingt er nur auf 8MHz.


Und dann schreib das nächste mal die Timerwerte als negative Dezimalzahl 
hin, damit man nicht erst umständlich umrechnen muß.
Der Assembler kann selber umrechnen, warum also die Lesbarkeit 
absichtlich verschlechtern.


Peter

von MC (Gast)


Lesenswert?

Bei TH1=0BCh komme ich auf ca. 15ms pro Paket (pi mal daumen entspricht 
das 600 Baud).
Bei TH1=98h auf ca. 45ms pro Paket (ca. 178Baud).
Hat jemand eine Idee, woran das liegen könnte???

von MC (Gast)


Lesenswert?

Danke,
habe gerade mit dem Oszi den Oszillator durchgemessen. Ich habe wirklich 
den Oberwellenquarz mit 8MHz. Werde jetzt noch mal den Timerwert 
durchrechnen, aber der sollte eigentlich auch stimmen. Den X2 Mode habe 
ich nicht eingeschaltet, wobei ich das bei 8MHz vielleicht machten 
sollte.
Nochmals Danke für eure Ideen,
ihr habt mir echt geholfen.

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.