[Algoritmo] Mutua esclusione multipla. Non ci riesco...

Scusate l'assenza ma ero in una micro-vacanza. Tra l'altro la sera delle prove, in realtà, non ho potuto provare granchè perchè il macchinario era impegnato in manutenzione.

C'è una novità, mi è venuto in mente che ci può essere un problema di natura Hardware-Software.

Il ciclo dello SLAVE che legge i dati in arrivo dalla I2C, NON lo fa in polling, ma con questa funzione:

Wire.onReceive(receiveEvent);

Che mi pare funzioni su un Interrupt lanciato dalla periferica interna I2C dell'ATmega328.

Ho il forte sospetto che quando c'è un'interruzione multipla, di 7-8 contati, il sistema MASTER spedisce continuamente i dati che pesca in Polling dalle seriali, verso lo SLAVE in I2C, però quest'ultimo non riesce mai a portare a termine la funzione Highlander() perchè continua ad essere interrotta dall'Interrupt dell I2C.

E' plausibile questo?

Nel caso ho ipotizzato qualcosa del genere:

Se_ArrivaDatoI2C() { //////sto dando dei nomi a caso per rendere l'idea
cli(); ////disabilito gli Interrupt, così non mi danno fastidio durante la ricerca
Highlander(); //// Funzione che mi tira fuori il primo contatto della serie
sli(); riattivo gli interrupt
} //esco dalla funzione di recupero del dato

Può andare?