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?
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... ;-)
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.
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??
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..
Lens schrieb: > Doch ich versteh nicht wieso man TI=1 setzen soll Mit dem Schreiben von TI=1 wird das Interruptflag zurückgesetzt...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.