www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik serielle Schnittstelle


Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zacc (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.