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
Das einfachste wird mal sein in einer Schleife dasselbe Zeichen zu senden und mit dem Oszi mal zu messen.
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
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???
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.