enoritz
07.03.2006, 19:18
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:
#define clock 12000000
#define baud_rate 9600
#define ubbr_value ((clock/(16*BAUD))-1)
/* ... */
UBBR = (unsigned char) ubbr_value;
/* ... */
Der Controller arbeitet (wie zu am Code zu sehen) mit einem Takt von 12MHz.
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...
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:
#define clock 12000000
#define baud_rate 9600
#define ubbr_value ((clock/(16*BAUD))-1)
/* ... */
UBBR = (unsigned char) ubbr_value;
/* ... */
Der Controller arbeitet (wie zu am Code zu sehen) mit einem Takt von 12MHz.
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...