www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART und Mega169


Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht 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.

#ifndef F_CPU
#define F_CPU 8000000L   //systemtakt in Hz
#endif

#define BAUD 9600      //Baudrate 

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

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

int main(void)
{    
  //Bautrate setzen durch makro  
  //UBRR = UBRR_VAL;
  
  UBRRH = UBRR_VAL >> 8;    // interger overflow 
  UBRRL = UBRR_VAL & 0xFF;
  
  // UART enable TX 
  UCSRB |= (1<<TXEN);
  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.

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Behebt ein "#define BAUD 9600L" statt "#define BAUD 9600" das Problem?
9600 * 8 ist ja größer als 32767 (0x7fff bzw. der Größte der Wert den 
ein AVR-GCC-int annehmen kann).
Sieht nach schlecht abgeschrieben aus ;)
da 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu... 
stehts nämlich richtig...

hth. Jörg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber der Butterfly hat doch von Haus aus eine UART Funktion mit der man 
einen Namen über die serielle Schnittstelle in den Butterfly schicken 
kann. Wie machen die das denn?

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AFAIK kalibrieren die den internen Oszillator am Uhrenquarz..
Hier hast du was dazu zu lesen ;)
http://www.siwawi.arubi.uni-kl.de/avr_projects/#bf_app

Und eben die Butterfly-Doku, z.B. im AVR-Studio unter 'help' ;)

hth. Jörg

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe.
Hab ich auch schon gefunden gehabt.
Klappt super bis jetzt und es ist ja nur zum üben... wenn ich mal was 
richtiges mache kann ich mir ja ein Quarz dran löten.

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jabber,
ich hab auch mal was mit dem butterfly gemacht :
http://www.ibrtses.com/embedded/avrosccal.html

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.