mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA 644 - UART um den Faktor 8 langsamer als berechnet


Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier einen Mega 644P auf einem Pollin-Funkevalboard bei 12 MHz 
am laufen. Schnell etwas Code vom Mega8 portiert, u.a. ein paar Routinen 
für die UART. Alles funkioniert beinahe wie erwartet - wäre da nicht ein 
kleiner Schönheitsfehler: die Baudrate auf der UART ist um den Faktor 8 
langsamer, als nach Formel aus dem Datenblatt berechnet.

Ich schreibe also den Wert 77 für 9600 Baud ins UBRR0-Register - und 
erhalte oh Wunder exakt 1200 Baud an der Schnittstelle. Ich habe 
inzwischen sogar die Frequenz des Quarzes angezweifelt - aber der Oszi 
zeigt ein einwandfreies Signal mit 12 MHz an den Clock-Pins. Ebenso habe 
ich die Baudrate nachgemessen, ein Bit ist knapp eine ms lang, also 1200 
Baud.

Nach stundenlagem Brüten über dem Datenblatt bin ich mittlerweile recht 
ratlos - daher hier mal mein Code zur UART-Initialisierung, vielleicht 
fällt jemandem ja was dran auf...
#define UART_BAUD    9600
#define bauddivider (uint)(F_CPU / UART_BAUD / 16 - 0.5)
...
UBRR0 = bauddivider;
UCSR0A = 0;
UCSR0B = (1<<TXEN0);
UCSR0C = (1 << UCSZ01)|(1 << UCSZ00);

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CKDIV8 Fuse?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CKDIV8 Fuse abschalten.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define UART_BAUD           9600UL
#define UBRR_UART0       ( (F_CPU/(16*BAUDRATE_UART0))-1)

so gehts zumindest bei mir

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf exernen Takt bzw. Quarz umfusen.

Autor: foobar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[quote]
CKDIV8 Fuse
[/quote]
Was für ne geile Falle. Und das Ding ist zu allem Überfluss auch noch 
aktiv, wenn es auf 0 steht ;)

Besten Dank, jetzt läuft alles wie gewohnt.

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.