mikrocontroller.net

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


Autor: Karel Marsalek (marsalek)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> irgendein ExtClock
Was genau?

Was passiert wenn du FOSC einfach auf 1000000 stellst?

Einfach mal kreativ sein und ausprobieren.

Autor: KelleRassel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kaffeetas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tipps zu später Stunde:

-Fusebits
-Datenblatt

dann läufts bestimmt!

Grüße
 kaffeetas

Autor: Al Bundee (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karel Marsalek (marsalek)
Datum:

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

Karel

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.