-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Baudrate Problem

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33

    Baudrate Problem

    Anzeige

    Hallo,

    Mega32 @ 14,745600 MHz

    Ich habe ein Problem mit der Baudrate. Bei einer Baudrate bis 28800 läuft alles super nur was drüber geht Funktioniert es nicht mehr.

    Laut dieser Tabelle http://www.gjlay.de/helferlein/avr-uart-rechner.html sollte eine Baudrate von 115.2k kein Problem sein.

    An was kann das liegen?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Du mußt auch sicher sein, daß du innerhalb einer Bitbreite die Zeichen aus der UART wegräumen kannst, sonst klappt es natürlich auch nicht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33
    mhh hab hier mal ein test Programm:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 14745600
    $baud = 38400
    
    
    Print "34"
    Print "254"
    Print "9"
    Print "32"
    Print "255"
    Print "9"
    Print "32"
    Print "255"
    Print "9"
    Print "32"
    Print "255"
    Print "9"
    Print "32"
    Print "255"
    Print "9"
    Print "32"
    Print "255"
    Print "9"
    Print "35"
    Print "256"
    Print "9"
    
    
    End
    Der Terminal spürt dann das aus:
    Code:
    34
    254
    9
    32
    25%
    9
    32
    255
    9
    32
    "55
    9
    32
    255
    9
    32
    255
    9
    35
    256
    9
    Oder

    Code:
    34
     54
    9
    ªªBPÊjPš’jP’jRÊjRšjR’ªjRÈjR’jRªªjPÊj˜’jP’ªªjRÊJPšªHP’ª²jRŠjRþ

    An was kann das liegen?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ah, ja. Vergiß, was ich bis jetzt gesagt habe.
    DAS ist ein typischer Baudratenfehler
    gehäufte Sonderzeichen deuten darauf hin, dass der Sender ein zu schnell ist (weil das Stop-bit noch als 2^^7 interpretiert wird).
    Seltsam, daß am Anfang ein paar Zeichen um ein Haar noch zu stimmen scheinen, erst dann kommt stabiler Schrott.
    Fragen
    1 das ist ja irgendein gängiges Terminal-Programm ?
    2 normales (PC) COm-Port oder irgendein USB/RS232 Fuzzy ?
    3 µC Quartz korrekt (mit 22 µF) verdrahtet
    3 µC Fuses irgendwie mystisch ?

    Is leider so mit Kommunikationsproblemen. Wenn zwei sich nicht verstehen, kann es genauso sein,
    daß der eine undeutlich nuschelt
    oder daß der andere hörbehindert ist. (ganz schlimm: beides)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33
    Erst mal danke für die schnelle Antwort.

    zu 1: getestet mit Bascom Terminal, HTerm und mit eigenen Terminal
    zu 2: Normaler COM Anschluss
    zu 3: Ja
    zu 4: Fuses sind für meine Begriffe korrekt.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    *murmel,murmel*
    Tscha, Ohne Gewähr (passieren kann aber nix):
    NACH der $BAUD= anweisung setze mal andere Werte in das UBRR Register
    In deinem Fall (Quartz & 38k4 Baud) sollte er ja "23" reinschreiben (ev. mit Simulator überprüfen --> Register display), kann aber auch "47" sein

    Schreib ev. einfach mal
    UBRR = 24 (oder höher), dann sollte er langsamer werden.

    Ist nur ein Versuch, und kann nur helfen, wenn du mit dem QUartz Pech hast und er etwas höher schwingt von wegen Toleranz.

    Dein Programm oben ist ja recht übersichtlich, da kann ja nix falsch sein.
    Ich weiss nicht, ob der MAX232 bei irgendwelchen Fehlern sowas produzieren könnte, glaub' eher nicht.

    Very strange, geht alles ein wenig in ein esoterisches Bereich, da ist dann ALLES möglich

    EDIT: sollte das wirklich was helfen, dann solltest du einen anderen Quartz versuchen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33
    Danke für einen Tipp!

    Ich habe es mal getestet:

    $Baud=38400
    UBRR = 24

    Dann kam folgendes raus:

    Code:
    "@@ @@@ @@@ @@@0@@@ @@@ @ @@ø
    Habe dann mal bissl mit der UBRR Einstellung rum gespielt und bei UBRR=22
    hat es dann Funktioniert.

    Und das kann jetzt am Quarz liegen?

    //EDIT

    Hab das mal mit einer hören Baudrate probiert aber da geht es gar nicht.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Wenn man das Bit setzt für "Double-Speed" UCSRA (das Bit heißt U2X), hast du höhere Zahlen, da geht es vielleicht besser einzustellen
    (dein normalwert wäre dann UBRR=47 für 38400)
    (--> Mega-Datasheet)

    Aber immerhin, das Ganze zeigt, daß der Quartz nicht genau schwingt.
    Ist wohl besser, du probierst einen anderen, das ist ja kein Leben, weil ja so auch kein Timer mehr genau ist.

    Also, viel Spaß !
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Man sollte eventuell man mit 2 Stoppbits probieren. Mit nur einem Stopbit kann es ziehmlich lange dauern um den Empfänger wieder syncron zu kriegen. Wenn der Enpfänger schlecht ist, kann es sogar passieren, das der Empfänger das komplettte stoppbit abwartet und dann aus dem Takt kommt wenn der Sender nur etwas schneller ist.

    Bei den hohen Baudraten müssen auch die Pegelwandler und Kabel dafür geeignet sein. Eigentlich sollten die Tolleranzen von Quarzen bei weitem nicht so groß sein, das es bei der UART probleme geben kann. Das müßte schon versehnetlich ein föllig falscher Quarz (z.B. 13 MHz sein). Im Prinzip könnte die UART Frequenzfehler bis fast 10 % vertragen. Der wird aber Aufgeteilt für den Sender, Empfänger (Frequenz und Quatisierung) und Unsicherheiten durch die Treiber und Kabel.

    Könnte es sein der M32 gar nicht mit dem Quarz läuft, sondern immer nich den internen RC Oszillator nimmt ?

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    hm also ich verstehe leider nciht viel von bascom, aber ich hatte etwa denselben effekt als ich mit 8N2 gesendet habe das terminal aber nur auf 8N1 eingestellt war, bis zu ner gewissen geschwindigkeit hat der COM Port das noch gefressen, aber manchmal isser ausm takt gekommen, vor allem wenn die baudrate hoch war

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •