PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied zwischen TXCIE und UDRIE



p_mork
14.05.2007, 14:02
Hallo,

kann mir jemand erkären, wo der unterschied zwischen TXCIE und UDRIE beim UART liegt? Ich habe das Datenblatt an der Stelle mehrmals gelesen, versteh es aber trotzdem nicht. Der eine IRQ wird ja ausgelöst, wenn gerde ein Byte gesendet wurde, der andere, wenn das Datenregister leer ist. Wenn ein Byte aber versendet wurde, dann ist ja auch das Datenregister leer?!? Welcher IRQ wird denn jetzt wann ausgelöst?

Hoffe mir kann einer helfen...

MfG Mark

AVRfan
14.05.2007, 14:45
Hallo,

der inhalt des Datenregisters wird nach der schreibe-aktion zum schiebe register übergeben, wenn das schiebe register fertig ist. An diesen moment ist das Datenregister schon wieder frei (UDRE interrupt wird ausgelöst) aber es wurde noch keinen bit auf der TXD ausgang gesendet. Erst wenn das letzte bit von das schiebe register zur TXD geschrieben ist wird der TX complete interrupt ausgelöst.

Mann kann der UDRE interrupt benützen um schneller die nächsten daten zur UART zu schicken. Mit der TX complete interrupt könnte einen kleine pause zwischen bytes entstehen.

Achte bitte darauf dass der UDE interrupt immer wieder ausgelöst wird so lange das Datenregister leer ist, der TX complete interrupt wird pro byte einmal ausgelöst.

Martin.

p_mork
14.05.2007, 15:48
Hallo AVRfan,

danke für die Erklärung.


Achte bitte darauf dass der UDE interrupt immer wieder ausgelöst wird so lange das Datenregister leer ist...

Soll das heißen es gibt dann so eine Art Dauerinterrupt solange bis man ihn abstellt??

MfG Mark

AVRfan
14.05.2007, 16:13
Hallo,


Soll das heißen es gibt dann so eine Art Dauerinterrupt solange bis man ihn abstellt?? So ungefähr.. wenn der interrupt handler keine neue daten in UDR schreibt und zurück kehrt im haupt programm wird einen neuen interrupt erzeugt.

Meiner meinung nach sollte mann also diesen interrupt einschalten wenn aus einen puffer daten zur UART geschickt werden mussen und der interrupt ausschalten wenn das letzte byte zur UDR geschrieben wird.

Martin.