mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART vs. UART


Autor: Sebastian Rupsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie bekomme ich UART0 an einem Mega162 zum laufen? Die
Beispielprogramme vom Tutorial funktionieren nicht.

Und wo genau ist der Unterschied zwischen USART und UART?

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
datenblatt lesen und Register- und Bit-Namen anpassen ;)

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, hab ich getan, aber wenn ich die Zahl 155 sende kommt beim PC 128
128 000 an. Bei 1 kommt 128 000 an und bei 0 und 255 kommt garnichts
an.

Warum das???

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Baudrate und die Anzahl der Daten- und Stopbits stimmen überein?

MfG
Andreas Jäger

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Baudrate wird berechnet mit:

.equ CLOCK = 8000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ldi temp1, LOW(UBRRVAL)
        out UBRR0L, temp1
        ldi temp1, HIGH(UBRRVAL)
        out UBRR0H, temp1

        sbi UCSR0B,TXEN                    ; TX aktivieren

Der AVR läuft mit einem 8 MHz Quarz. Ich hoffe natürlich, daß ich die
Fusebits richtig gesetzt habe, nicht daß der AVR den Takt halbiert oder
so. Kann man das mit den Fusebits?

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte eigentlich, ob die Baudrate, Anzahl Daten- und Stopbits mit
den Einstellungen am PC übereinstimmen (ist ein beliebter Fehler...).
Da ich AVR nicht kenne, kann ich Deine Fragen so nicht beantworten.

MfG
Andreas (PIC ist mein Leben) Jäger

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir zu Sicherheit die CKDIV8 Fuse noch mal an.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha,
ich habe jetzt alle Baudraten getestet und bei 1200 funktionierte es
dann. Warum 1200? Ich hatte doch angegeben, daß ich eine Baudrate von
9600 haben will. 1200 ist ein 8tel von 9600, also wird mein AVR wohl
nur mit 1/8 von 8 MHz, also 1 MHz laufen, oder?

Wenn ich jedoch die Konstante CLOCK von 8000000 auf ändere 1000000
bekomme ich bei eine Baudrate von 1200 keinen Wert mehr, bei 4800 250
und bei 9600 219, obwohl ich 155 gesendet habe.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fusebits:

CKSEL0 : 1
CKSEL1 : 0
CKSEL2 : 1
CKSEL3 : 1
SUT0   : 1
SUT1   : 0
CKOUT  : 1
CKDIV8 : 0

Autor: Tobias Breckle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das gleiche problem hatte ich auch mal. bei mir hat ein geschirmtes
kabel den erfolg gebracht.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem hat sich gelöst.

CKDIV8 muss 0 sein

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.