serielle Schnittstelle

Gast #752497
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
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
Gast
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???
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.