Hallo,

Code:
int main (void)  {   

void initSRF02(void){  } 
void stopSRF02(void){  } 
void task_SRF02(void) { }

...
}

Das ist schonmal gefährlich.
Auch wenn C solche Spielereien erlaubt wie Funktionen in Funktionen zu deklarieren,
sollte man sowas nicht tun.


allerdings fängt die RP6Lib dieses auch nicht ab
Es gibt einen Handler dafür (void I2C_transmissionError(uint8_t errorState))
wo man darauf reagieren kann wenn man mag.

Wenn so ein Fehler auftritt, dann stimmt meist sowieso was überhaupt nicht mit dem Programm

z.B. sowas:
mir fällt auf das du z.B. I2CTWI_initMaster nicht aufrufst.


Da viele Ressourcen in aufwändige Fehlerbehandlung zu investieren ist nicht sonderlich sinnvoll.
Man könnte ggf. alle weiteren Übertragungen beim ersten Fehler anhalten... dazu einfach
ein while(true); in den error Handler setzen

MfG,
SlyD