Forum: Mikrocontroller und Digitale Elektronik USART vs. UART


von Sebastian Rupsch (Gast)


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?

von mmerten (Gast)


Lesenswert?

datenblatt lesen und Register- und Bit-Namen anpassen ;)

von Sebastian (Gast)


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???

von Andreas Jäger (Gast)


Lesenswert?

Baudrate und die Anzahl der Daten- und Stopbits stimmen überein?

MfG
Andreas Jäger

von Sebastian (Gast)


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?

von Andreas Jäger (Gast)


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

von mmerten (Gast)


Lesenswert?

Schau dir zu Sicherheit die CKDIV8 Fuse noch mal an.

von Sebastian (Gast)


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.

von Sebastian (Gast)


Lesenswert?

Fusebits:

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

von Tobias Breckle (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

Problem hat sich gelöst.

CKDIV8 muss 0 sein

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.