UARTs erstes Zeichen

Gast #3070391
Lesenswert?

Hi,

Es geht um das Infineon C515C: Wenn alle Konfigurationen für die 
serielle Schnittstelle vorgenommen wurde, wird TI=1 gesetzt, mit der 
Begründung:
"Damit wird das erste UART-Zeichen gesendet".

Im manual heißt es aber nur, dass es reicht, wenn man in SBUF schreibt. 
Wofür jetzt das TI=1, das eigentlich seitens der Hardware gesetzt wird, 
sobald was empfangen wurde?

Kann mir da jemand helfen?
Gast #3070407
Lesenswert?

Ohne den C515C zu kennen, würde ich sagen: Logisch!
Wie willst Du sonst feststellen, ob Du erneut ein Zeichen ausgeben 
kannst?
Wahrscheinlich wird das Bit beim Schreiben in den Puffer gelöscht. Ob 
das automatisch geschieht oder durch einen Extrabefehl verrät Dir sicher 
das Handbuch.
Gast #3070408
Lesenswert?

Das ist mir schon klar. Es wird automatisch von der Hardware gesetzt, 
sobald ein Byte gesendet wurde. Doch ich versteh nicht wieso man TI=1 
setzen soll, obwohl:
1. Es automatisch von der Hardware gesetzt
und
2. Noch überhaupt nichts in SBUF geschrieben wurde??
Gast #3070417
Lesenswert?

Ahso ich habs selber schon herausgefunden: Es hat nichts mit der 
Hardwareimplementierung zu tun. Die Bibliotheksfunktionen (printf..) von 
Keil sind polling-basiert und darauf angewiesen, dass eben TI=1 ist, als 
Flag dafür, dass SBUF frei ist..
Gast #3070425
Lesenswert?

Soein Mechanismus dient zum "anschmeissen" der Übertragung.

In der ISR, die bei TI=1 ausgelöst wird, wird wenn noch Zeichen zu 
senden sind ein weiteres Zeichen gesendet.
Nach dem ersten Zeichen wird der Interrupt von selbst ausgelöst.
Das erste Mal muss er "von Hand" gesetzt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren