#define - Overflow

Gast #5043754
Lesenswert?

casten ist cool. Das sollte unbedingt immer gemacht werden. Ob sinnvoll 
oder nicht, egal. Ein Programm ohne cast taucht nisch und statische 
Code-Analyse eh schei...

> Kann ich ...
> Ist ja ganz klar ...
=> ???
#5043852
Lesenswert?

Jan H. schrieb:
> Klappt.
Kann es sein das du so etwas suchst?
1
#define BAUDRATE 115200ul
2
#define BAUD_REGISTER_VALUE  ((F_CPU+BAUDRATE*8)/(BAUDRATE*16)-1)
3
#define BAUD_REAL (F_CPU/(16*(BAUD_REGISTER_VALUE+1)))      // Reale Baudrate 
4
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUDRATE)         // Fehler in Promille, 1000 = kein Fehler.
5
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
6
  #error Baudratenfhler! Abweichung zu gross! 
7
#endif 
8
#if (BAUD_REGISTER_VALUE>255)
9
  #error Fehler bei Baudratenberechnung! 
10
#endif
Persönliche Seite #5043881
Lesenswert?

Ingo L. schrieb:
> Jan H. schrieb:
>> Klappt.
> Kann es sein das du so etwas suchst?
...Code...

Warum selber machen, wenn es in der Toolchain genau so etwas schon gibt?
Siehe 
http://www.nongnu.org/avr-libc/user-manual/group__util__setbaud.html

Nebenbei hat doch das UBRR (zumindest auf neueren AVRs) 12 Bit, wodurch 
die Abfrage auf >255 falsch erscheint.

Mit freundlichen Grüßen,
N.G.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren