UART und Mega169

#683901
Lesenswert?

hallo, mein Ziel ist es über UART was an den PC zu schicken.
Ich habe mich ans Tutorial gehalten und bekomme jetzt eine Warnung und 
den  Fehler das der Baudratenfehler zu groß ist.

Die Warnung lautet: interger overflow in expression
und bezieht sich auf die zuweisung der Bautrate in die Register UBRRH 
und  UBRRL.

1
#ifndef F_CPU
2
#define F_CPU 8000000L   //systemtakt in Hz
3
#endif
4

5
#define BAUD 9600      //Baudrate 
6

7
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)  //clever runden
8
#define BAUD_REAL (F_CPU/(16*UBRR_VAL+1))    //Reale Baudrate
9
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000)  //Rehler in Promille 
10

11
#if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))
12
  #error Sysematiser Fehler der Baudrate grösser 1% und damit zu hoch!
13
#endif
14

15
int main(void)
16
{    
17
  //Bautrate setzen durch makro  
18
  //UBRR = UBRR_VAL;
19
  
20
  UBRRH = UBRR_VAL >> 8;    // interger overflow 
21
  UBRRL = UBRR_VAL & 0xFF;
22
  
23
  // UART enable TX 
24
  UCSRB |= (1<<TXEN);
25
  UCSRC |= (0<<UMSEL) | (3<<UCSZ0);

bis auf die Register habe ich gegentlich nichts geändert.
Wobei die laut datenblatt eigentlich anderst (UBRRH0 UBRRL0) heißen aber 
die bezeichung mag er auch nicht.
#683924
Lesenswert?

@ Jabber Wock (jabber)

>Ich habe mich ans Tutorial gehalten und bekomme jetzt eine Warnung und
>den  Fehler das der Baudratenfehler zu groß ist.

Dann wird das wohl so sein.

>Die Warnung lautet: interger overflow in expression
>und bezieht sich auf die zuweisung der Bautrate in die Register UBRRH
>und  UBRRL.

Lass das mit der Umschreibung von Fehlermeldungen. Kopier die 1:1 hier 
rein.

MFG
Falk
#683934
Lesenswert?

Ok danke, damit ist die Warnung schon mal weg.
Hab ich wohl verschluckt das L.

Aber was bleibt ist die Fehler in der Bautrate. Wie bekomme ich die hin?
Der butterfly arbeitet ja mit dem internen RC, muss da noch was gemacht 
werden?
Ich habe irgendwo gelesen das die zu ungenau sind.

mfg
Jabber
#683943
Lesenswert?

@ Jabber Wock (jabber)

>Aber was bleibt ist die Fehler in der Bautrate. Wie bekomme ich die hin?

Mit dem richtign Quarz bzw. einer niedrigeren Baudrate. Wobei 9500 Baud 
bei 8MHz machbar sind. Schau mal, ob du nicht F_CPU in den 
Projekteinstllungen noch definiert hast.

>Der butterfly arbeitet ja mit dem internen RC, muss da noch was gemacht
>werden?

IHN VERGESSEN!

>Ich habe irgendwo gelesen das die zu ungenau sind.

EBEN!

AVR-Tutorial: UART

MFG
Falk

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