Hallo Ernst,
Das kannst du nicht vergleichen!
I2C ist synchron, d.h. der Master erzeugt einen Clock und der Slave verändert seine Datenleitung dann mit den Flanken des Clocks. Dabei kann die CPU ach mal ein Nickerchen machen (Interrupts bedienen), wenn sich der Clock nicht ändert ist alles eingefrohren.
RS232 ist asynchron. Da wird einfach nach dem festgelegten Timing gedendet, egal ob der Empfänger gerade mithört oder nicht. Kommst du zu spät ist das Bit schon durch! Wann das Startbit kommt, weiss du auch nicht. Du musst den Pin also dauernd abfragen um das Startbit zu erkennen. Dann musst du die Mitte des Startbits finden und von dort aus alle 104µs (bei 9'600, Bit/s) abfragen. Dazu brauchst du einen Timerinterrupt und dieser darf nie durch eine andere Interruptroutine verzögert werden.
MfG Peter(TOO)
Lesezeichen