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?