Man kann beide Interrupt-gesteuert laufen lassen. Vom Aufwand her kommt mir RS232 einfacher vor; weil man hier keine Zustandsunterscheidung vom TWI braucht (Slave Receiver, Slave Transmitter, Master Receiver, Master Transmitter etc...)

Beim RS232 könnte man noch nen FIFO einbauen (Code gibts glaub ich auch im Wiki hier), so dass man mit einer Funktion entweder einen Ascii-Code vom empfangenen Zeichen bekommt oder eben -1, falls nix neues da ist.

Beim I2C/TWI kann man sich aber mitunter eine Protokollstruktur sparen, da hier keine "Steuerzeichen" benötigt werden, um eine neue Übertragung zu erkennen.