UART klemmt

Gast #136652
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;
Gast #136653
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
Gast #136654
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
Gast #136655
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 :)
Gast #136656
@ 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
Gast #136657
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.
Gast #136659
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
Gast #136660
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

Eine eigene Frage? Dieser Thread ist über 21 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.