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.
Ups, hab' noch etwas vergessen, das Makro zur Baudratenberechnung befindet sich in config.h ( muss ich unbedingt noch verschieben... )
Niemand eine Idee? Bin wirklich am Verzweifeln...
Setzt du "External Crystal Oscillator"? Und...hast du das STK umgejumpert um den Quarz zu benutzen?
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...
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.
"Hab leider keine Zeit, deinen Quellcode anzuschauen" Kann ich verstehen ;-), trotzdem vielen Dank!
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.