UART funktioniert nur mit internem Oszillator!

Gast #320392
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.
Angehängte Dateien:
Gast #320396
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...
Gast #320397
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.
Gast #320399
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
Gast #320400
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren