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;
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
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
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 :)
@ 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
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.
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
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?
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.