Gast
#47901
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?
|
Anzeige
|
USART vs. UART
Gast
#47901
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?
Gast
#47902
datenblatt lesen und Register- und Bit-Namen anpassen ;)
Gast
#47903
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???
Gast
#47904
Baudrate und die Anzahl der Daten- und Stopbits stimmen überein? MfG Andreas Jäger
Gast
#47905
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?
Gast
#47906
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
Gast
#47907
Schau dir zu Sicherheit die CKDIV8 Fuse noch mal an.
Gast
#47908
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.
Gast
#47909
Fusebits: CKSEL0 : 1 CKSEL1 : 0 CKSEL2 : 1 CKSEL3 : 1 SUT0 : 1 SUT1 : 0 CKOUT : 1 CKDIV8 : 0
Gast
#47910
das gleiche problem hatte ich auch mal. bei mir hat ein geschirmtes kabel den erfolg gebracht.
Gast
#47911
Problem hat sich gelöst. CKDIV8 muss 0 sein Antwort schreiben |
Anzeige
|