Forum: Mikrocontroller und Digitale Elektronik USART-Problem


von Winni (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

ich habe aus dem Tutorial den Quellcode für UART, Sender ohne Änderung
in mein ASM übernommen. Ich benutze einen Mega8515. Kompilieren ohne
Fehler. Aber wenn ich z.B. HTerm starte kommt nur Müll an (siehe Bild).
Also keine Zeichenfolge "Test". Hab schon den ganzen Abend das
Problem. Auf dem Stk500 ist ein 4MHz Quarz , Jumper auch richtig.
Board-Takt softwaremäßig gestoppt. Sollt also gehen.
Kein Plan woran das liegt.
Jemand eine Idee?

von A.K. (Gast)


Lesenswert?

Läuft der AVR auch mit 4MHz, d.h. sind die Fuses auf externen Takt
gesetzt?

von Winni (Gast)


Lesenswert?

aha, ich dahcte es mir..die Fuses.

Hab noch nie mit Fuses gespielt, da vorher nen 90S8515 hatte, der hatte
sowas nicht.

Also ich hab nen 4MHz HC18 Quarz auf den vorgesehenen Sockel gesteckt
(STK500).
Im Fuses-Menü sind ja elend viele Möglichkeiten. Laut Datenblatt S.35
müsste ich einstellen:
CKSEL3..1=111, CKOPT=1
Nur ich find dieses CKOPT im Fuses-Menü nirgends. Steht nur was von Low
Frequency, Medium Freq., High Freq.
ja welcher ist denn nun 4MHz ?

von Winni (Gast)


Lesenswert?

habs grad gefunden.. die vorletzte Einstellung ist es.

Mal ne andere Frage

wieso die Zeile:
sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist

und nicht so:
sbis UCSRA,TXC                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist

?

von Christian Rötzer (Gast)


Lesenswert?

Das TXC-Bit gibt an, dass das Sendeschieberegister leer ist, also keine
Daten mehr auf der "Strecke" sind. Ist dies der Fall, nimmt sich die
UART - falls vorhanden - das Datenbyte aus dem UDR und versendet
dieses. Der Sinn des Ganzen ist der, dass Du auch dann einen
zusammenhängenden Datenstrom erhältst, wenn Du das UDRE Bit nicht mit
100% CPU-Auslastung pollst. Du musst also nur mit der Bytedatenrate
pollen um trotzdem maximale Datengeschwindigkeit zu erhalten. Im
Interruptbetrieb verschwindet mit Interrupt auf UDRE die
Interrupt-Latenzzeit zwischen den Datenbytes.
Umgekehrt kannst Du mit dem TXC-Bit aber herausfinden, ob eine
Datenbyte physikalisch versendet wurde.

Grüße

Christian

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.