Hallo,
hast Du genau diese Zeilen oben verwendet ?
Wo kommt das BAUD in dieser Gleichung her :
((clock/(16*BAUD))-1)
![]()
Hallo,
kann es sein, das der gcc-Compiler irgendwie bei der Berechnung von Werten in der #define-Direktive Probleme macht?
Ich hab versucht das UART einzustellen und da gabs immer Fehler bei der Übertragung:
Der Controller arbeitet (wie zu am Code zu sehen) mit einem Takt von 12MHz.Code:#define clock 12000000 #define baud_rate 9600 #define ubbr_value ((clock/(16*BAUD))-1) /* ... */ UBBR = (unsigned char) ubbr_value; /* ... */
Ich habs mit und ohne Type-Cast versucht, allerdings hats überhaupt nix gebracht.
Also hab ichs mal mit nem Taschenrechner per Hand (nach obiger Gleichung) berechnet und UBBR auf 77 gesetzt. Dann hats Problemlos funktioniert.
Hat von euch schonmal jemand etwas ähnliches bemerkt? Fand ich nämlich etwas merkwürdig.
Ich hab übrigens das letzte Release von Source-Forge geladen...
Hallo,
hast Du genau diese Zeilen oben verwendet ?
Wo kommt das BAUD in dieser Gleichung her :
((clock/(16*BAUD))-1)
![]()
BAUD ist baud_rate... Ist im Code selber richtig geschrieben![]()
![]()
Intern wird mit 16 Bit gerechnet, wenn du nix anderes sagst.
UBRR =? (uint8_t) ((uint32_t) F_CPU/...)
Disclaimer: none. Sue me.
Lesezeichen