Forum: Mikrocontroller und Digitale Elektronik Die Funktion von Flush() bei UART


von Markus W. (Gast)


Lesenswert?

Hallo leute

wozu dient der Flush()  bei Uart
1
static inline void rs485_flush() 
2
{ 
3
   while (UCSR0B & (1 << UDRIE0)); 
4
}
danke

von Hc Z. (mizch)


Lesenswert?

Der Code ist so unvollständig.  Es dürfte woanders einen Teil geben, der 
UDRIE0 abschaltet, wenn alle Zeichen übergeben oder gesendet sind 
(vermutlich im Sende-Interrupt).  Auf dieses Ereignis wird gewartet.

von Chris H. (wuselwutz)


Lesenswert?

Bezieht sich wohl auf AVR U(S)ART.

Die Funktion rs485_flush(), wie sie oben dargestellt ist, wartet darauf, 
dass ein Zeichen versendet wurde. Nachzulesen in jedem AVR Datasheet.

von STK500-Besitzer (Gast)


Lesenswert?

>Die Funktion rs485_flush(), wie sie oben dargestellt ist, wartet darauf,
>dass ein Zeichen versendet wurde.

Neee, es geht ums "UDRIE", nicht um "UDRE".
Die Schleife "wartet" bis der UDR-Interrupt abgeschaltet wurde.
Das macht bei RS485 aber relativ wenig Sinn, wenn das TXC-Flag nicht 
beachtet wird.
Erst dann darf zwischen Senden und Empfangen umgeschaltet werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.