www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterschied TXC und UDRE


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist irgendein UART Interrupt aktiviert ?

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.