Hallo,
ich kann nur versuchen, das Datenblatt zu interpretieren, da ich selber praktisch noch nicht mit dem Transmit Complete interrupt gearbeitet habe.
Die USART hat einen Transmitt Buffer zu Aufnahme eines zu sendenden Bytes und ein Schieberegister zum seriellen Aussenden des zu übertragenden Bytes. Man schreibt das zu übertragende Byte in den Transmit Buffer (UDR). Ist das Schieberegister leer, also bereit ein Byte seriell auszusenden, wird das Byte automatisch, ohne Zutun des Programmierers in das Sendeschieberegister geschrieben und ausgesendet. Ist das komplette Byte gesendet UND noch keine neues Byte im Transmit Buffer - also wenn noch keine weiteren Daten zum Senden bereitstehen, wird das TXC Flag gesetzt.
Wenn Du also fünf Bytes so schnell es geht sendest, also immer den Transmit Buffer gefüllt hältst, wird das TXC nur einmal am Ende der Übertragung gesetzt. Übergibst Du die fünf Bytes aber langsamer als sie gesendet werden könnten in den Transmit Buffer, wird das Flag öfter gesetzt. Ein Transmit Complete interrupt wird aber nur ausgeführt wenn er auch enabled ist. Falls Du die Funktion benötigst, würde ich für eindeutige Verhältnisse das TXC-Flag vor Beginn einer Übertragung löschen.
Auf der anderen Seite scheint es nur bei Halfduplex Verbindungen von Bedeutung zu sein, da es für den Transmit Buffer
empty (Data Register Empty(UDREn)) ja einen eigenes Interruptflag gibt.
GrußZitat von Datenblatt-doc8059.pdf
Searcher
Lesezeichen