Hallo zusammen,
ich hab mir mal Bascom gezogen und ein bisschen rumgespielt. Jetzt
wollte ich mal das obligatorische "Hallo Welt" an den Konsolenemu
senden. Doch dort kommen nur seltsame Zeichen an.
Mein Code sieht so aus:
1
$regfile = "m8515.dat"
2
$crystal = 8000000
3
$baud = 9600
4
5
DO
6
Print "Hallo Welt"
7
Wait 1
8
Loop
Jetzt hab ich zur Verbindung das Programmierkabel verwendet. PD0 und PD1
sind wie im Handbuch mit den RS232-Spare Pins verbunden.
Warum bekomme ich so seltsame Zeichen? Ich würde sie gerne hier
darstellen, nur copy und paste geht nicht, da anderer PC, und auf der
Tastertur gibts die nicht.
Dennis Brenzel schrieb:> Warum bekomme ich so seltsame Zeichen?
Also bei seltsamen Zeichen würde ich zu erst mal sagen:
Baudratenproblem. Die Baudraten von Empfänger und Sender stimmen also
nicht überein.
Ansonsten wären ein paar mehr Informationen nicht schlecht:
- Welchen µC verwendet?
- Welche Taktquelle am µC?
- Eventuell Nullmodemkabel verwendet?
- Massen verbunden?
- µC sicher korrekt mit dem PC verbunden, also vermutlich über
Pegelwandler?
µC ist der mit dem STK500 mitgelieferte ATmega8515L.
Taktquelle ist intern.
Wenn das mitgelieferte Programmierkabel Nullmodem ist, dann ja.
Massen sind verbunden.
µC auch sicher verbunden.
Baudrate ist auf beiden Seiten 9600.
Dennis Brenzel schrieb:> Taktquelle ist intern.
Ja, und da wird vermutlich das Problem liegen: Verwende mal einen
externen Quarz oder einen Quarzoszillator, dann wird es vermutlich
passen.
weil jetzt gleich alle sagen werden, dass der zu ungenau ist...
jungs, für 9600 bei zimmertemperatur auf einem stk tut ers schon.
10eur, dass das problem woanders liegt.
> Welches Fusebit muss ich denn auf welchen Wert stellen, damit er> bei 8MHz taktet? Ich dachte, dass diese Rate standartmäßig eingestellt> sei.
Das RTFM vom mega8515 sagt, dass per default 1.0MHz eingestellt ist
(Fußnote 1 in Tabelle 12 in [1]). Ergo stell mal die Fuses richtig ein,
dann klappt das auch mit dem UART :-)
HTH
[1] http://atmel.com/dyn/resources/prod_documents/doc2512.pdf
der atmel, der beim stk500 mitgeliefert wird, hat ein demoprogramm
drauf.
daher lässt sich nicht mit sicherheit sagen, ob die fuses nicht dafür
angepasst wurden.
> daher lässt sich nicht mit sicherheit sagen, ob die fuses nicht dafür> angepasst wurden.
Ui, da hat potenziell schon jemand an den Fuses rumgespielt? ..noch ein
Grund mehr, die gemäß RTFM auf bekannte (und gewünschte) Werte zu setzen
;-)
Ansonsten kann ich nur auf die AVR-Checkliste verweisen [1]
HTH und nix für ungut
[1] http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART
Naja, ich bin ja schon auf 9600. Viel weniger kann ich im Bascom nicht
einstellen. Da werd ich wohl auf
>>7,3728 MHz
externen Oszi umsteigen müssen. Es war auch nur mal zum ausprobieren.
Hi
>DAS kann jetzt der zu schlechte interne oszillator sein.>wenn du mit der baudrate runtergehst und die fehler dabei weniger>werden, wars das.
Begründung!
MfG Spess
Dennis Brenzel schrieb:> So, hab jetzt den internen Takt auf 8 MHz gestellt. War in der Tat auf 1> MHz.
Ich verstehe nicht, warum du nicht das angebotene Feature vom STK500
einer wählbare externe Taktfrequenz, natürlich quarzstabil, nutzt. Z.B.
auf den angebotenen 3.686MHz, damit sollte eine UART-Verbindung mit 9600
problemlos möglich sein.
Alternativ kannst du versuchen herauszubekommen, auf welcher Frequenz
dein Oszillator tatsächlich schwingt (Pin toggeln lassen und messen) und
dann die Parameter für die UART-Register entsprechend anpassen.
spess53 schrieb:>>wenn du mit der baudrate runtergehst und die fehler dabei weniger>>werden, wars das.>> Begründung!
tatsache, die dürfte sich sehr schwierig gestalten... war eine antwort
rein nach bauchgefühl.
sorry, mein fehler.
spess53 schrieb:>>war da am STK kein Quarz dabei?>> Lt. Handbuch und meiner Erinnerung, nicht.
Der hier benötigte Quarz steckt am internen Controller des STK500 und
der hat einen per Studio programmierbaren und per Jumper auf den
Takteingang des steckbaren Controllers durchschaltbaren Taktausgang, der
bis 3,68MHz geht. Also kann man ebendiesen Takt verwenden, wenn man mit
UART arbeitet.
Hi
>Der Quarz steckt am internen Controller des STK500....
Meine Aussage bezog sich auf:
>ich meine mich zu erinnern, dass da in der Packung, gleich neben dem Manual>einer war.>und der hat einen per Studio programmierbaren und per Jumper auf den>steckbaren Controller >durchschaltbaren Taktausgang, der bis 3,68xxxMHz>geht.
Auch schon mal nachgemessen?
MfG Spess
spess53 schrieb:> Auch schon mal nachgemessen?
Ok, der ist der Bezeichnung im Schaltbild nach zu schliessen wohl ein
Kermikschwinger. Für UART ist dieses Detail irrelevant.
Hi
Du brauchst mit das STK500 nicht erklären. Ich hatte vor etlichen Jahren
mal die angezeigten Frequenzen nachgemessen. Und wenn ich mich recht
erinnere gab es da, für mich unakzeptable, Differenzen.
MfG Spess
spess53 schrieb:> Du brauchst mit das STK500 nicht erklären.
Habe ich deshalb auch nicht ;-).
> Ich hatte vor etlichen Jahren> mal die angezeigten Frequenzen nachgemessen. Und wenn ich mich recht> erinnere gab es da, für mich unakzeptable, Differenzen.
Yep, mir kam deine Frage auch komisch vor (deshalb der Edit). Und habe
mal die Bezeichnung von dem Ding gegoogelt. Das Manual nennt das zwar
einen crystal, aber die Bezeichnung passt zu einem handelsüblichen
Keramikschwinger und der darf schon seine 0,5% Abweichung haben. Für
eine Uhr ist das nix, für UART ist es ok.