www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART klemmt


Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
ich versuche seit Tagen die Uart Schnittstelle meine Mega128
einzustellen.
Inzwischen bekomme ich zwar Daten aber es ist nur Mist.
Vom Sender wird 150531204010543 abgeschickt und der mega sagt er hätte
756967369626996 empfangen?
Ich meine das der interne Takt dran schuld sein könnte aber wir
übertragen hier mit 300 Baud. So krumm kann unmöglich der int. Takt
sein.
Bin ich zu blöd den Reloadwert zu brechnen?

UBRR1L = 0x82;                    UBRR1H = 0x05;

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme mal an, du möchtest für 8MHz Takt berechnen. Dann komme ich
auf UBRR1H = 0x06, bei deinem Wert komme ich auf 354 Baud und das kann
logischerweise nicht funktionieren.

Gruß
Thorsten

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist man doch froh, dass wir alle deinen Takt kennen.. ups.. doch
nicht.

 (Clock / (Baud*16)) - 1 ) = UBRR

 Clock = (UBRR+1)*(BR*16)

 Clock = (1410+1)*(4800) = 6.772.800Hz

Hab ich richtig gerechnet? Gib mal deinen Takt her.

dave

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da er interner Takt geschrieben hat, kann nur 1, 4 oder 8MHz in Frage
kommen. Seine Werte sprechen für 8MHz und ich vermute, daß er einfach
nur das Highbyte wegen des Divisionsrest korrigiert hat statt
notwendigerweise das Lowbyte. Kann aber natürlich auch nicht so sein :)

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Torsten. Natürlich ist 06 richtig, inzwischen bin ich vom Pfad der
technik gewichen und versuche mit sukzessiver Approximation anz Ziel zu
gelangen

@Dave
Taktgeber sollte der interne Oszillator mit 8Mhz sein

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das Programm in einer Endlosschleife laufen lasse, kommen fast
nur noch 2en und 6en dabei raus? Ausserdem gibt es eine 7 die bei jedem
Durchlauf um 2 Stellen nach rechts wandert.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
offenbar habe ich 17 Byte, wo eigentlich nur 15 sind!? wie geht sowas?

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum machst du es dir so schwer...
1665,6666666666666666666666666667 kommt als Wert raus...

Dann sagen wir 1666...
0x06 als high und 0x82, so wie du es hattest.

"offenbar habe ich 17 Byte, wo eigentlich nur 15 sind!? wie geht
sowas?"

Die Baudrate gibt an, wie lange ein Bit dauert.. wenn der PC jetzt also
schneller ist als dein MC, dann liest er in einer bestimmten zeit auch
so und so viel mehr..
Hast du Stopbit, Parität und Datenbits richtig gesetzt? Haste mal den
Code vom Tutorial hier ausprobiert?

dave

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Baudrate habe ich ja richtig berechnet und auch die Parität usw
eingestellt. Aber es kam nur Müll raus. Da habe ich mal ein paar andere
Reloadwerte probiert (daher die 05).
Die Daten kommen ja nicht vom PC. Dar wäre ja einfach, weil synchron.
Wenn ich das richtig mitbekomme habe ich 1 bis 2 byte zu viel und das
würde bedeuten, das mein Reloadwert ungefähr 6% vom korrekten Wert
abweicht?

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.