Archiv verlassen und diese Seite im Standarddesign anzeigen : Baudrate und Frequenz
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
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
Hm, wie meinst du das mit den Compilern? Also bei mir hat das nicht funktioniert, einfach ne niedrigere Baud anzugeben.
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
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
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?
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.