-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Probleme mit dem Uart

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2006
    Alter
    32
    Beiträge
    14

    Probleme mit dem Uart

    Anzeige

    Hallo Leute,

    Code:
    uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1);
    wer kann mir sagen was die Klammern mit dem uintXX_t genau bedeuten/bewirken?

    Wenn ich die Zeile mit BAUD 38400 verwende geht alles einwand frei,

    setze ich aber 9600 ein, geht nichts mehr.

    danach geht es so weiter

    Code:
        UBRRH = (uint8_t) (ubrr>>8);
        UBRRL = (uint8_t) (ubrr);
    Mfg
    FiTus

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Das sind casts, also Typumwandlungen bzw. besagen, in welchem Typ berechnet wird.

    F_CPU passt üblicherweise nicht in 16 Bit rein, daher wird die Berechnung in 32 Bit gemacht. Das Ergebnis past in 16 Bit rein (sollte es zumindest, wenn nicht, hat man unsinnige Werte angegeben). Je nachdem, um welche Objekte es sich in der Zuweisung handelt, wird die Auswertung auf dem Host erledigt (zur Compilezeit durch constant folding etc) oder zur Laufzeit durch das Programm. Letzteres, falls einer der Werte zur Compilezeit nicht bekannt ist.

    Hast du einen Baud-Kristall? Ansonsten ist evtl. die Toleranz zu groß und du must im double speed mode betreiben. Ist die Gegenseite richtig eingestellt?

    AVR-Baudraten-Rechner (JavaScript)
    Disclaimer: none. Sue me.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2006
    Alter
    32
    Beiträge
    14
    Hast du einen Baud-Kristall? Ansonsten ist evtl. die Toleranz zu groß und du must im double speed mode betreiben. Ist die Gegenseite richtig eingestellt?
    Baud-Kristall? was ist das?

    naja bei 38400 (aus c) geht es ja auch, und als ich die funktion in assembler direkt programmiert habe ging es mit 9600 baud auch. also die gegenstelle passt

    am speed mode hab ich nix verändert.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    hmmm. ich nehme an, du hast den Code aus RN-Wissen. Wie sieht denn dein Listfile (oder asm) aus?

    Baud-Kristalle sind Quarze mit "krummen" Frequenzen, mit denen sich übliche Baudraten besonders gut reproduzieren lassen.
    Disclaimer: none. Sue me.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2006
    Alter
    32
    Beiträge
    14
    richtig, das ist der code aus rn-wissen. ich verwende auf meinem testboard noch den internen 8Mhz oszi. später kommt dann wahrscheinlich ein 8 mhz quarz ran. (chip atmega16)

    was sollte ich im listfile sehen, sollte da was auffällig sein?

    Mfg
    FiTus

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Ich würde nur mal schauen, ob der Code so aussieht wie er soll. Hast du es schon mal mit den UBRR-Werten wie im asm-Programm versucht? Ich nehme mal an es ist ein Rundungsproblem in C.
    Disclaimer: none. Sue me.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    15.06.2006
    Alter
    32
    Beiträge
    14
    im anhang sind die files
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    51
    Beiträge
    1.195
    Bei 38,4 und 9,6 kBd ist der Fehler bei 8Mhz derselbe (0,2%). Findet man im Datenblatt. Allerdings kann es sein, dass die 8MHz nicht 100% stimmen und dann kommt es immer auf die Applikation an.

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Der Code scheint auf 38400 zu passen, wohl ein Problem mit der Generierung. Wirf mal die Objekte und das Zeug weg (make clean)
    Disclaimer: none. Sue me.

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Öhm...da steht auch noch die 38400 in der Quelle. Die muss natürlich von einem Spezialisten auf 9600 umgestellt werden..
    Disclaimer: none. Sue me.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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