mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Baudrate Atmega168


Autor: Dave_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Kann mir jemand von euch verraten, wie ich die Richtige Baudrate beim
ATmega168 einstellen kann. Die Baudrate ist 19200 KBaud.

Wozu dienen UBRRnH und UBRRnL und wie werden sie richtig
initialisiert?

David

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie´s im Datenblatt steht.Das Register ist ein Teiler für den
Haupttakt.Den musst du also schonmal wissen.Dann wird beides (also
Haupttakt und gewünschte Baudrate) in die Formel im Datenblatt
eingesetzt und schon weisst du,welchen Wert du reinschreiben musst.Per
WinAVR (GCC) kannst du einfach

UBR = Wert;

schreiben,bei Assembler musst du noch die Reihenfolge von Low und
Highpart beachten.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[Ironie]

Zu dem Thema gibts super Infos im Datenblatt. Das kostet bei
www.atmel.com zwar satte 0,00 Euro, aber das isses echt Wert ;o)

[/Ironie]


Gruß,
Magnetus

Autor: Dave_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das grobe weiß ich auch. Das Probelm ist, daß ich versuche mit einem
ATMEGA168 Daten an ein Terminal zu senden und dieses emfpängt nur
komsiche zeichen. Jetz weiß ich nicht ob ich die Bautrate richtig
gestetzt habe, weil ich nicht weiß was ich in den UBRRnH und was in den
 UBRRnL schreiben soll. Was heißt das wenn eine Zahl da steht und dann
>>8 z.B. BAUD >> 8 was im USERS Manuel so steht?

David

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste deinen Code,LIES & VERSUCH ZUMINDEST das Datenblatt ZU VERSTEHEN.
Atmel drückt sich gemessen an anderen Herstellern nun wirklich noch
ganz brauchbar aus.Sogar Beispiele sind in selbigem zu finden.

Das Forum hier dient in erster Linie zum lernen und Erfahrungen
austauschen.Um Arbeit/Hausaufgaben an andere zu degradieren ist es der
verkehrte Ort.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Was heißt das wenn eine Zahl da steht und dann
>>8 z.B. BAUD >> 8 was im USERS Manuel so steht?"

Ich versteh die Frage nicht.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Baudratenquarz verwendet?

...

Autor: Dave_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Ja ich weiß es schon.  Habe das Datenblatt ausführlichst studiert.
Ich habe es auch schon geschafft daß der Controller die daten empfängt.
Das Problem ist daß ich es nicht senden kann. Ich weiß nicht woran es
liegt. Habe ein Max232 zwischen Controller und Computer geschalten und
versuche in einer einfachen endlosschleife einfach das zeichen 'a' zu
senden, damit es im terminal auftaucht. Nachdem ich den genzen tag
verschwendet habe und außer daß irgendwelche Y auftauchen taucht das
gewünschte a nicht auf. Ich vermute daß es an der Bautrate liegt, darum
habe ich nachgefragt.

Beispiel USARS Manuell

void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRnH = (unsigned char)(baud>>8);  <-------- Was heißt das??
UBRRnL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRnB = (1<<RXENn)|(1<<TXENn);
/* Set frame format: 8data, 2stop bit */
UCSRnC = (1<<USBSn)|(3<<UCSZn0);


Die Daten empfangen tue ich mir der einstellung. UBRR0L = 8. 115200und
für UBRR0H gebe ich 0 ein. aber da mein Terminal maximal 19400 Baud
kann muß ich doch bei 16 Mhz UBRR0L = 51 eingeben. was muß ich für
UBRR0H eingeben?

Fest steht es lauft nicht und ich suche nach lösungen vielleicht ist es
eine kleinigkeit, bitte um verständniss.

David

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Baudratenquarz verwendet?

Ich meinte damit:

- Hast Du einen Quarz an den AVR angeschlossen?
- Ist die Frequenz des Quarzes für Baudraten geeignet
  (z.B. 3,6864MHz)
- Hast du die entsprechenden Fusebits eingestellt, damit der AVR den
  Quarz auch benutzt?

Die C-Syntax kenne ich nicht, ich arbeite in Assembler.

Aber UBBRnH und UBBRnL stehen für das H-Byte und L-Byte des
UART-Vorteiler-Registers, wobei H und L für Highbyte und Lowbyte stehen
und n für die Nummer des UART. Da der Mega168 nur über U(S)ART0 verfügt,
ist n natürlich 0.

Du musst Deinen Baudratenwert also in Highbyte und Lowbyte zerlegen und
das Highbyte in UBBR0H schreiben, das Lowbyte in UBBR0L.

...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Du musst Deinen Baudratenwert also in Highbyte und Lowbyte zerlegen
> und das Highbyte in UBBR0H schreiben, das Lowbyte in UBBR0L.

@Dave

... und genau das macht der Code

UBRRnH = (unsigned char)(baud>>8);  <-------- Was heißt das??
UBRRnL = (unsigned char)baud;

Das >> steht für 'nach rechts schieben' und zwar um 8 Bits.
Also eine Division durch 256.

Die Frage ist jetzt allerdings: welchen Wert hat 'baud'?

Ach ja: Es ist im übrigen nicht der Fall, dass in 'baud' die
gewünschte Baudrate stehen soll. Du hast das Datenblatt studiert.
Dann ist dir sicherlich auch aufgefallen, dass es da eine
Formel gibt, nach der sich der zu setzende Wert aus der
Baudrate und der verwendeten Taktfrequenz errechnet.
D.h. Du gehst mit deiner Baudrate und der Taktfrequenz in die
Formel hinein, kriegst einen Wert heraus und dieser Wert
wird dann in die Register UBRRnH und UBRRnL nach obiger
Methode gesetzt.

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.