-         

Ergebnis 1 bis 8 von 8

Thema: Baudrate und Frequenz

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270

    Baudrate und Frequenz

    Anzeige

    Hallo,
    ich hab ne Frage zur seriellen Kommunikation, und zwar, kann ich mit 16Mhz AVR-Takt z.B. mit 9600 Baud senden oder geht das nicht?
    Bisher hats so einigermaßen mit 38400? Baud bei 16 Mhz geklappt, nur ne niedrigere Senderate wäre mir lieber.
    Gruß
    Spurius

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Würde sagen, langsamer geht immer. CAVE: ganz listige Kompiler drehen beim Ändern der Baudrate auch an der Einstellung Start - Bits - Stop
    'rum, hab' ich gehört. 8N1 ist das Übliche. mfg

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Hm, wie meinst du das mit den Compilern? Also bei mir hat das nicht funktioniert, einfach ne niedrigere Baud anzugeben.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Nicht böse sein, ich muß das fragen: Hast Du deinem terminal auch erzählt, daß du die Baudrate änderst ?
    Welchen Compiler verwendest du, bzw. wie gibst du die Baudrate an ?
    mfg

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    kann ich mit 16Mhz AVR-Takt z.B. mit 9600 Baud senden oder geht das nicht?
    Na klar, kein Thema.
    Ein Blick in das Handbuch deines AVR-Chips hilft da Wunder.
    Beim AtMega-8 zum Beispiel ist die Formel für
    den Wert der UBBR-Register: ubbr=(fosc / (baudrate * 16))-1
    fosc ist in deinem Fall 16MHz.

    für 9600 Baud ergibt sich damit der Wert 103,
    der in das Register UBBRL eingetragen werden muss.
    dann noch eine 0 in das UBBR-Register, und ab sofort
    läuft der USART mit 9600 Baud.

    Gruß Jan

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Hey cool, danke!

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Also, habs ausprobiert und es klappt.
    UBRRL=103
    UBBRH=0
    Nun würde mich noch interessieren, wie du darauf kommst? Ich hab mir jetzt mal das Datenblatt angeschaut, wo steht, dass man ubbrl mit dem wert füllen soll? und wo, dass man ubbrh eine 0 verpassen soll?
    Und warum nimmst du die formel für die asynchrone Kommunikation?

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    wo steht, dass man ubbrl mit dem wert füllen soll? und wo, dass man ubbrh eine 0 verpassen soll?
    auf Seite 133 stehen die Formeln für die Berechnung der Wertes für das Register UBBR.
    Und darunter steht das dieses Register 12-Bit weit ist,
    und aus den 8-Bit-Registern UBBRL und UBBRH besteht.
    wie sollte man auch in ein einzelnes 8-Bit Register Werte > 255 eintragen ?
    und bei 103 ist halt das obere Byte 0, bei 12 Bit.
    Also trägt man 0 ein.
    Warum sollte das dort stehen ? Bei anderen (niedrigen) Baudraten
    kommt da ja auch was anderes rein.

    Und warum nimmst du die formel für die asynchrone Kommunikation?
    Da der USART fast nur für RS-232 Schnittstellen benutzt wird,
    bevorzuge ich die Formel für die asynchrone Übertragungsart,
    da es sich bei der RSR232 um eine asynchrone Übertragung handelt.

    Schöne Grüße... Jan

Berechtigungen

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