Comunicazione I2C: inviare dati differenti, ma come?

Ciao a tutti.
Sto tentando di capire come lavorare con la libreria I2C di Arduino.

Tentando di informarmi su come fare da internet, ho trovato una discussione in cui si parlava del blocco di Arduino, qualora in fase di trasmissione dati avvenisse qualche interruzione. Questo, da quel che ho capito, é causato da cicli while() della libreria, che non hanno un timeout per evitare questa cosa.
Ho cercato su internet informazioni riguardo all'esistenza di una libreria alternativa ma compatibile alla Wire, oppure una Wire revisionata, ma non ho trovato niente. Ho solo trovato un post in cui si modificavano due file della libreria, aggiungendo un timeout di 1000ms con un if.
Come devo fare per evitare il blocco? Sarebbe catastrofico se avvenisse al Mega.

Grazie in anticipo