Warnung bei USART-Init

Gast #1912801
Lesenswert?

Hallo µC.net!

Ich bin gerade dabei, mich mit der Benutzung der USART-Schnittstelle 
meines ATmega644 vertraut zu machen. Zur Initialisierung habe ich 
folgende Zeilen geschrieben:
1
#define BAUD 2400
2
#define UBRR_VAL ((AVR_CLOCK_FREQUENCY+BAUD*8)/(BAUD*16)-1)
3
#define BAUD_REAL (AVR_CLOCK_FREQUENCY/(16*(UBRR_VAL+1)))    //Reale Baudrate
4
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)              //Fehler in Promille
5

6
#if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))                    //max. +/-10 Promille Fehler
7
  #error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
8
#endif
9

10
void uart_init(void)
11
{
12
UBRR0 = UBRR_VAL;
13
// ...
14
}

... Das klappt auch so weit. Bis auf die Warnung "Integer Overflow", die 
bei "UBRR0 = UBRR_VAL;" auftritt. Allerdings habe ich den Anspruch, 
warnungsfrei kompilieren zu können.

Ich hoffe, ihr wisst, wie man es besser machen kann. Freu' mich!

Gruß,
Kinners

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