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
Lesezeichen