18 Jul 2007 14:03 Problem in macro value generation Hallo zusammen, ich benutze C30 compiler für dsPIC30 (ich glaube dass es grundsätzlich gcc oder?) ich habe Problem als ich diese macro automatisch gemacht habe: #define XTAL 7500000U #define PLL_MULTIPLIER 8U #define CLOCK_POSTSCALER 1U #define F_OSC (XTAL * PLL_MULTIPLIER)/CLOCK_POSTSCALER #define FCY F_OSC/4U #define UART_BAUD 9600U #define UART1_BRG (FCY/(16U * UART_BAUD) - 1U) ich habe dafür erwartet: UART1BRG = (UINT16) (((7.5M*8/4)/(16*9600)) - 1) (= ca. 97 ) aber was ich für mein UART baud rate register bekommen habe, ist immer 0x298 (664 decimal)? Warum ist das so? Danke für die Hilfe.
#define XTAL 7500000UL #define F_OSC ((XTAL * PLL_MULTIPLIER)/CLOCK_POSTSCALER) #define FCY (F_OSC/4U)
Ich habe die Lösung gefunden, man muss "UL" (unsigned long) benutzen. Die folgende Kode funktionert bei mir: #define XTAL 7500000UL #define PLL_MULTIPLIER 16UL #define CLOCK_POSTSCALER 1UL #define F_OSC ((XTAL * PLL_MULTIPLIER)/CLOCK_POSTSCALER) #define FCY (F_OSC/4UL) #define UART_BAUD 9600UL #define UART1_BRG (UINT16) ((FCY/(16UL * UART_BAUD)) - 1UL) Ich habe gedacht dass der Kompiler ein variant von gcc war.
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.