Forum: Mikrocontroller und Digitale Elektronik Unterschied TXC und UDRE


von Benedikt (Gast)


Lesenswert?

Eigentlich sollte es ja egal sein, ob man bei einem mega8515 wartet bis
das TXC oder UDRE Bit im UCSRA Register gesetzt wird.
In der Simulation kommt das auch hin, in der Praxis kommen mit TXC nur
etwa 9-10% der Daten an, was vermuten lässt das schon vor Ende der
Übertragung neue Daten in UDR geladen werden. 10% sind nämlich genau 1
bit der Übertragung... Es scheint so, also wenn das TXC Bit bereits
nach dem Startbit gesetzt und nicht erst am Ende der Übertragung...

out udr, Daten
warte:
sbis UCSRA, udre
rjmp warte
cbi UCSRA, udre

bzw.

out udr, Daten
warte:
sbis UCSRA, txc
rjmp warte
cbi UCSRA, txc

von dave (Gast)


Lesenswert?

wenn du ins datenblatt schaust, dann wirste genau diesen code hier
finden...

USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA,UDRE
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDR,r16
ret

wie wärs, wenn du diese cbi einfach mal weglässt? probiers mal aus..
denn: "executed, or it can be cleared by writing a one to its bit
location." ... liegt glaub ich an nand-struktur..

dave

von Benedikt (Gast)


Lesenswert?

jetzt geht es:
mit sbi UCSRA, txc anstelle des cbi UCSRA, txc

Weglassen geht nicht, da das Bit dann immer gesetzt bleibt, wenn der
Interrupt aus ist.

von dave (Gast)


Lesenswert?

also bei mir läufts auch so gut...
(is die routine von hier)
serial_out:
  sbis UCSRA,UDRE
  rjmp serial_out
  out UDR, temp1
  ret

vielleicht liegts auch daran, dass dus umgedreht hast.

dave

von Benedikt (Gast)


Lesenswert?

Ist irgendein UART Interrupt aktiviert ?

von dave (Gast)


Lesenswert?

nöö,

geht die version bei dir nicht?

so steht se im tutorial:
serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das
nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm

dave

von Benedikt (Gast)


Lesenswert?

Ok, es geht.
Anscheinend wird das UDRE Bit automatisch gelöscht wenn UDR beschrieben
wird.

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.