Forum: Mikrocontroller und Digitale Elektronik UARTs erstes Zeichen


von Lens (Gast)


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?

von Lens (Gast)


Lesenswert?

Sorry bessere mich aus:
TI wird gesetzt sobald ein Byte gesendet wurde.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lens schrieb:
> TI wird gesetzt sobald ein Byte gesendet wurde.
Richtig, deshalb heißt das Ding auch "Transmit Interrupt".
Gut, dass wir darüber gesprochen haben...  ;-)

von amateur (Gast)


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.

von Lens (Gast)


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??

von Lens (Gast)


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..

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lens schrieb:
> Doch ich versteh nicht wieso man TI=1 setzen soll
Mit dem Schreiben von TI=1 wird das Interruptflag zurückgesetzt...

von Bastler (Gast)


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.

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.