Forum: Compiler & IDEs Warnung bei USART-Init


von Kinners Anjou (Gast)


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

von Kinners Anjou (Gast)


Lesenswert?

Okay. Man nehme ein Datenblatt und... Halleluja ;D

Steht wie immer alles im Text. Wollte ich nur erwähnen, falls jemand das 
gleiche Problem hat wie ich.

Kapitel: 1. USART

Gruß,
Kinners

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
Noch kein Account? Hier anmelden.