Hi, ich habe mich im Artikel bereits umgesehen: http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART Dennoch bekomme ich bei der Konstellation keine Ausgabe, alle anderen Baudraten sind kein Problem. Nutze die zweite Formel: #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) Sollte 6 ergeben. Ich bekomme immer ein ü statt einem A. Was kanns sein? Gruß, H.
...bin jetzt auf 16Mhz umgestiegen, läuft. Eine Info wäre trotzdemm sehr interessant. liegt wahrscheinlich ungünstig... H.
Hannes schrieb: > #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) > > Sollte 6 ergeben. Ich bekomme immer ein ü statt einem A. > > Was kanns sein? wo hast du denn diese schräge Formel her?
Hannes schrieb: > #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) > > Sollte 6 ergeben. Der genaue Wert ist 6.010... Indem du die 0.01... ignorierst, machst du einen Fehler von ca 16%. Das ist zu viel.
Bei 16MHz liegst du auch kräftig daneben (2% bzw 4% ). Besser mit 12MHz und double speed mode, das passt.
oops, falsch hingeguckt, die Formel stimmt schon. Der Fehler ist bei 12 übrigens geringer als bei 16MHz
Karl Heinz Buchegger schrieb: > Hannes schrieb: > >> #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) >> >> Sollte 6 ergeben. > > Der genaue Wert ist 6.010... > > Indem du die 0.01... ignorierst, machst du einen Fehler von ca 16%. > Das ist zu viel. Was hab ich'n da für einen Müll gerechnet. Wird Zeit fürs Bett
...tja, dies Thema - wie gesagt mit 16Mhz habe ich alle Zeichen auf dem
Schirm...und das obwohl der Fehler höher ist...
>>ignorierst, machst du einen Fehler von ca 16%
ich habe 0,1% als Fehler berechnet, nach der Formel, siehe Link oben!?
((7,0/7,01)-1)*100=0,1%
Bei 16Mhz:(8,18)
((9,0/9,18)-1)*100=1,9%
Das kann doch nicht sein...
Gruß,
H.
>>Was hab ich'n da für einen Müll gerechnet.
War gerad am Nachrechnen - jap!
Nacht.
Ich mach das jetzt noch fertig.
H
Datenblatt zu deinem Controller - Sektion UART - Seite "Tabellen mit Baudratensettings zu X verschiedenen Takten"
Nimm einfach nen Standardquarz, z.B. 11,0592 oder 14,7456MHz, dann klappt es super mit der UART. Ganzzahlige Quarze braucht man doch nur für CAN oder USB. Peter
Hi >Nimm einfach nen Standardquarz, z.B. 11,0592 oder 14,7456MHz, dann >klappt es super mit der UART. 115200Bd bei 12MHz ist bei Double Speet hinreichend genau (0,2% Fehler). MfG Spess
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.