Naturalmente, dato che già il "mutex", che ho previsto nel programma di test, esclude l'utilizzo simultaneo del bus I2C da parte di più task (quindi, uno solo di quelli che usano detto bus, è in stato di esecuzione, mentre gli altri sono bloccati sul "mutex"), senza modificare la libreria Wire, è possibile portare i task che usano il bus I2C ad una priorità più alta degli altri task per evitare che vengano interrotti da task a priorità più bassa.
Questo può andare bene o meno a seconda dei casi ...
...in particolare, nel programma di test che sto utilizzando, uno dei task, sfruttando la matrice di LED che è presente su Arduino UNO R4 WiFi, crea un'animazione continua su detti LED e, dato che uno dei task che usa il bus I2C aggiorna lo schermo di un display OLED (cosa che richiede un certo numero di operazioni che impiegano del tempo) ... si vede chiaramente l'animazione arrestarsi un attimo durante l'aggiornamento del OLED e poi ripartire.
Invece, con la modifica proposta alla libreria Wire, NON occorre cambiare le priorità e tutto gira in modo fluido senza interruzioni apprezzabili ![]()
Guglielmo