Forum: Mikrocontroller und Digitale Elektronik UART funktioniert nur mit internem Oszillator!


von Mathias Müller (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe ein "etwas" seltsames UART-Problem...

Testkonfiguration:
- STK500
- Mega16
- 1 * Hilgraeve HyperTerminal von 1998 unter Windows 98
  1 * Hilgraeve HyperTerminal Ver. 6.3 unter Windows XP

Also, fogendes Problem tritt auf:

Benutze ich das alte Hyper-Terminal mit dem internen 8 MHz Oszillator
funktioniert eigentlich alles wunderbar, die Startmeldung wird
ausgegeben und ich kann Befehle eintippen ( z.B. led1_on ).
Setze ich jedoch die Fuses für den externen Oszillator (8MHz-Quarz auf
dem STK500) erhalt ich nur noch "Zeichensalat".

Das neue Hyper-Terminal zeigt mir, egal ob mit internem oder externem
Oszillator, keine Zeichenketten an. Es wird also beispielsweise keine
Startmeldung ausgegeben. Tippe ich einzelne Zeichen ein werden diese
jedoch angezeigt?!

Ich verstehe die Welt nicht mehr, normalerweise sollte man doch einen
Externen Quarz benutzen und bei mir funktioniert es nur mit dem intern
en...

Ich habe wegen der Kompilierbarkeit mal das komplette Projekt angehängt
( soll eigentlich eine Art Debug-Monitor werden ). Bitte nicht wegen des
schlechten Stils meckern, das ganze befindet sich noch im pre-pre alpha
Stadium und ist noch etwas konfus und unvollständig ;-)
Interessant sind eigentlich auch nur die Dateien uart.c, uart.h und die
main.c.

von Mathias Müller (Gast)


Lesenswert?

Ups, hab' noch etwas vergessen, das Makro zur Baudratenberechnung
befindet sich in config.h ( muss ich unbedingt noch verschieben... )

von Mathias Müller (Gast)


Lesenswert?

Niemand eine Idee?

Bin wirklich am Verzweifeln...

von Daniel (x2) (Gast)


Lesenswert?

Setzt du "External Crystal Oscillator"?

Und...hast du das STK umgejumpert um den Quarz zu benutzen?

von Mathias Müller (Gast)


Lesenswert?

Bis jetzt hatte ich immer "Ext. Clock" eingestellt, hab's jetz mal
mit "Ext. Crystal/Reonator High Freq." probiert (wo liegt da
eigentlich der Unterschied?), mit dem gleichen Ergebnis: einzelne
Zeichen kann ich eingeben und ich bekomme auch das Echo, es werden
jedoch keine Zeichenketten ausgegeben und "Enter" funktioniert auch
nicht.

Die Jumper sollten richtig gesteckt sein, wie gesagt, mit einzelnen
Zeichen geht's ja...

von Daniel (x2) (Gast)


Lesenswert?

Der Unterschied liegt in der Beschaltung des Atmegas. Für Quarze nimmst
du andere als für reine Taktquellen. Ich verwende "Ext. Crystal Medium
Freq. 16k + 0 ms".

Wenn die Jumper auch richtig sind, hab ich grad keine Ahnung. Hab
leider keine Zeit, deinen Quellcode anzuschauen.

von Mathias Müller (Gast)


Lesenswert?

"Hab
leider keine Zeit, deinen Quellcode anzuschauen"

Kann ich verstehen ;-), trotzdem vielen Dank!

von Conlost (Gast)


Lesenswert?

Hallo,

welchen seriellen Anschluß auf den STK500 verwendest du?
Der obere ist für das STK500 der untere ist für den Controller
der in einem der Sockerl steckt.

Für externen Quarzoszillator muß der Jumper "OSCSEL" auf 1-2
stecken.

Für externen Quarz muß der Jumper "OSCSEL" auf 2-3 stecken und
es muß ein Quarz im Sockel "CRYSTAL" stecken.

Der Jumper "XTAL1" muß gesteckt sein.

Falls der Controller in einem der Sockel mit RS232 angesprochen
werden soll, dann muß noch von "PD1" und "PD2" eine Verbindung
nach "RS232" RXD,TXD hergestellt werden.

Es grüsst,
Arno

von Cosmic (Gast)


Lesenswert?

Hallo,

hatte eine ähnliches Problem: beim Hyperterminal kamen immer nur wirre
Zeichenketten an.
Hab dann mal im Programm und im Hyperterminal die Bautrate von 9600 auf
4800 gesetzt und siehe da es funktioniert. Hab vorher jede Einstellung
mit den Fusebits und jede Möglichkeit (int. ext. Oscillator) probiert.
Das hat mich jetzt zwei Tage gekostet. Aber manchmal ist es einfach so
eine blöde Einstellung. Bei mir klappt jede Bautrate bis 4800, darüber
hab ich nur Buchstabensalat.

Mfg

Cosmic

von Mathias Müller (Gast)


Lesenswert?

Oh mann, ich hab' den Fehler gefunden: Ich hatte bei der
Initialisierung teilweise "UCSRB" und "UCSRC" vertauscht!
Das Problem sitzt eben doch meistens vor dem Bildschirm...

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.