Unterschied TXC und UDRE

Gast #129776
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
Gast #129777
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
Gast #129781
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

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