15.6.3. Interrupts und Flags des Senders
Der USART Sender hat zwei Flags, die folgende Stati kennzeichnen: USART Data Register Empty (UDRE) und Transmit Complete (TXC). Beide Flags können zum Erzeugen eines Interrupts verwendet werden.
Das Data Register Empty Flag (UDRE) signalisiert, dass der Sendebuffer zur Aufnahmen neuer Daten bereit ist. Dieses Bit wird gesetzt, wenn der Sendebuffer leer ist und wird gelöscht, wenn der Sendebuffer zu sendende Daten enthält, die noch nicht in das Schieberegister übernommen wurden. Um die Kompatibilität zu zukünftigen Bausteinen sicherzustellen, sollte das Bit immer auf Null gesetzt werden, wenn in das UCSRA Register geschrieben wird.
Wenn das Data Register Empty Interrupt Enable (UDRIE) Bit im UCSRB Register auf 1 gesetzt wird, wird der entsprechende Interrupt so lange ausgeführt wie das UDRE Flag gesetzt ist, vorausgesetzt, dass die Interrupts global freigegeben sind. Das UDRE Falg wird gelöscht, indem in das UDR geschrieben wird. Wenn eine Interruptgesteuerte Datenübertragung verwendet wird, muss die Interrupt Routine entweder ein neues Datum in das UDR schreiben um das UDRE Flag zu löschen oder den Data Register Empty Interrupt sperren, da sonst ein neuer Interrupt ausgelöst wird, sobald die Interruptroutine beendet wurde.
Das Transmit Complete (TXC) Flag wird gesetzt, wenn ein vollständiger Frame aus dem Schieberegister des Senders übertragen wurde und keine weiteren Daten im Sendebuffer vorhanden sind. Das TXC Flag wird automatisch gelöscht, wenn der Transmit Complete Interrupt ausgeführt wird, oder indem einen 1 in das Bit geschrieben wird. Das TXC Bit ist hilfreich bei halb-duplex Schnittstellen (wie dem RS485 Standard), bei denen die sendende Einheit in den Empfangsmodus gehen muss um den Kommunikationsbus im Anschluss an eine erfolgte Übertragung freizugeben.
Wenn das Transmit Complete Interrupt Enable (TXCIE) Bit im UCSRB gesetzt ist, wird der USART Transmit Complete Interrupt ausgeführt, sobald das TXC Flag gesetzt wird, vorausgesetzt, die Interrupts sind global freigegeben. Wenn der Interrupt verwendet wird, muss die Interruptroutine des TXC Falg nicht extra löschen, da dies automatisch geschieht, wenn die Interruptroutine ausgeführt wird.