Forum: Mikrocontroller und Digitale Elektronik USART gibt komische Zeichen aus


von Ralf (Gast)


Lesenswert?

Hallo,

ich bin noch ziehmlicher uC Anfänger und versuche mich gerade am Nachbau 
des SD Interface nach Ulrich Radig.

Ich hatte es schon so weit, dass ich die gewünschten Meldungen über das 
USART ausgegeben hatte. Dann habe ich einiges hin und her probiert. 
Jetzt bekomme ich nur noch eine Menge Sonderzeichen über das USART.

Offensichtlich habe ich irgendwo etwas bzgl. Taktfrequenz / Baudrate 
verstellt.

Aber ich finde es nicht! Folgendes ist der Stand der Dinge:

In der "usart.h" steht:

#ifndef F_CPU
  #define F_CPU 1000000UL

In AVR Studio habe ich im Programmierfenster im Reiter "Fuses" 
ausgewählt:
Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms, default value

Im Reiter "Advanced" steht die Frequenz auf 1MHz

In der Main.c initialisiere ich das USART mit:
usart_init(9600);

Mein Terminal steht auch auf 9600 ber zeigt nur Mist an.

Habe ich da noch irgendwo etwas übersehen?

Gruß
Ralf

von Ralf (Gast)


Lesenswert?

jetzt habe ich alles auf 4MHz umgestellt und es geht :-).

von Andreas H. (Gast)


Lesenswert?

Unabhängig von möglichen anderen Fehlern, zum ungefähr zweihundertsten 
mal in diesem Forum:

>Int. RC Osc. 1 MHz;

Das funktioniert nicht zuverlässig! Der interne RC-Oszillator ist zu 
ungenau. Wenn du den UART verwenden willst, kannst du das nur mit Quarz 
machen. Ändere das mal, erst dann kannst du weitere Fehler suchen.

von Marc S. (euro)


Lesenswert?

> #ifndef F_CPU
>  #define F_CPU 1000000UL


möglicherwese ist die Frequenz ja schon woanders mit 4 000 000 definiert 
? dann überliest dre comppiler diese definition einfach



und der RC ist schon genau genug. Allerdings bei ungefär Raumtemperatur 
und mit halbwegs exacten Grundbaudraten. Schaden kann ein Quarz 
natürlich nie...

von Klaus 2. (klaus2m5)


Lesenswert?

> jetzt habe ich alles auf 4MHz umgestellt und es geht :-).

Im Sommer gehts dann wieder nicht mehr.

> Unabhängig von möglichen anderen Fehlern, zum ungefähr zweihundertsten
mal in diesem Forum:

Eher zum tausendsten Mal.

von Simon K. (simon) Benutzerseite


Lesenswert?

Wenn man den internen RC Oszillator kalibriert ist er genau genug. 
Zumindest für 20°C. (Wenn man das mitgelieferte Calibration Word benutzt 
:-))

von rene (Gast)


Lesenswert?

Man kann den internen RC auch mit einem 32kHz quarz kalibrieren. Siehe :
http://www.ibrtses.com/embedded/avrosccal.html

von Klaus 2. (klaus2m5)


Lesenswert?

Wenn man natürlich die 100 Euro für den Quarz sparen will....

von Paul Baumann (Gast)


Lesenswert?

Bei 1 Mhz und 9600 Baud beträgt der Baudratenfehler schon 7%.
Bei 4 Mhz und 9600 Baud sind es nur noch 0,2%.

Das wird das hüpfende Komma, äh der springende Punkt sein. ;-)

MfG Paul

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.