Das ist nicht schlimm.
Allerdings ist bei 115200Baud die Auslastung der CPU schon heftig und
andere Interrupts müssen verdammt Rücksicht nehmen.
Die Software-UART sollte also immer die langsamere sein. Einfacher
wirds auch, wenn nur Halb-Duplex nötig.
Der Eingang sollte vorzugsweise der ICP sein, mindestens aber ein
externer Interrupt. Zum exakten Senden ist ein OC1x Pin ideal.
T1 sollte also nicht als PWM benötigt werden.
Das Prinzip ist einfach, der ICP erkennt das Startbit und merkt sich
die Startzeit. Zu der Startzeit 1,5 * Bitzeit addieren und in ein
OC1x-Register laden. Dann bei jedem Compare-Interrupt 1*Bitzeit
addieren und den Pin einlesen bis alle 8 Bits drin sind.
Senden ist ähnlich, zu dem anderen Compare immer 1*Bitzeit addieren und
im Interrupt das "set on compare", bzw. "clear on compare" je nach
dem zu sendenden Bit auslösen.
Da T1 ja ständig durchläuft ist er als Haupttimer (Overflow-Interrupt)
weiterhin verwendbar.
Bei Halp-Duplex ist auch noch der andere Compare-Interrupt frei.
Peter