Forum: Mikrocontroller und Digitale Elektronik AVR USART 1,8 x langsamer :-(


von Karel M. (marsalek)


Lesenswert?

Hallo zusammen,
am STK600 laufen meine AVRs (getestet habe ich MEGA16 sowie 2560) über 
USART mit ca. 5200 b/s anstatt mit den voreingestellten 9600 b/s :-(

Die Baudrate ist in UBRRH/L richtig gesetzt (laut Datenblatt sowie nach 
den zahlreichen Beispielen im Netz). Da ich unter Eclipse mit GCC 
programmiere, wird die FOSC in Projekteingeschaften eingestellt und 
nicht im Code. Dort habe ich sie auf 1843200 Hz gesetzt.

Geflasht wird mit AVRStudio, wo der externe Oszillator auf 1843200 Hz 
eingestellt wird und die uP Fuse auf irgendein ExtClock gesetzt wird. Am 
STK600 ist der CLK-Umschalter auch auf ExtClock gestellt.

Das Programm soll nur das empfangene Zeichen zurück ans Hyperterminal 
über COM1 schicken. Der PC/Hyperterminal ist auf 9600 8N1 eingestellt 
und laut Oszi sind die vom PC versandten Daten OK. ABER, die Daten, die 
der Mikroprozessor verschickt, laufen nur mit ca. 5200 b/s. Der Faktor 
ist hier genau 1,8..., was mich vermuten lässt, dass der uP denkt, mit 
1,8432 MHz zu laufen, läuft aber nur mit 1,0 MHz. Wo kann ich es 
nachprüfen?

Die Daten, die der uP empfängt, entsprechen den versandten auch nicht 
immer richtig, da es zur fehlerhaften Erkennung kommt, vermutlich durch 
die falsche USART Frequenz.

Wenn ich unter Eclipse schreibe
"#DEFINE FOSC 1843200", bekomme ich ein Warning, dass die Konstante 
schonmal definiert wurde, also es wird wohl doch das übernommen, was man 
in den Project Properties setzt.

Bitte um eure Troubleshooting Tipps
Karel

von Gast (Gast)


Lesenswert?

> irgendein ExtClock
Was genau?

Was passiert wenn du FOSC einfach auf 1000000 stellst?

Einfach mal kreativ sein und ausprobieren.

von KelleRassel (Gast)


Lesenswert?

Den Clock sollte man immer nachpruefen wenn man Zweifel an der Frequenz 
hat. Man kann zB ein Scope am XTal2 anhaengen, so vorhanden. alternativ 
einen Timerinterrupt auf zB 10ms stellen und an einem Portpin einen puls 
rauslassen. Dann mit dem scope diesen Puls anschauen.

von kaffeetas (Gast)


Lesenswert?

Tipps zu später Stunde:

-Fusebits
-Datenblatt

dann läufts bestimmt!

Grüße
 kaffeetas

von Al Bundee (Gast)


Lesenswert?

> was mich vermuten lässt, dass der uP denkt, mit
> 1,8432 MHz zu laufen, läuft aber nur mit 1,0 MHz.

Dat Datenblatt sacht:

>> The default clock source setting is therefore the 1 MHz Internal RC
>> Oscillator with longest startup time.

> Wo kann ich es nachprüfen?

Bei den Fuses, denn die dürften nicht stimmen.

von Karel M. (marsalek)


Lesenswert?

Danke Jungs,
direktes Setzten FOSC auf 1000000 hat geholfen. Es hat unter Eclipse 
irgendwo gehakt.

Karel

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.