Hast du schon versucht das Ergebnis vorher zusammenzusetzten und dieses dann gesamt an die Funktion zu übergeben?
Also in etwa so :
Code:
unsigned char ergebnis = data1 + data2 + ... + data8
I2c_start
...
...
...
i2c_write(ergebnis)
I2c_stop
Was du auch testen kannst wäre einen fixen wert zu übergeben (und schauen ob sich etwas verbessert)
Ein weiterer test wäre nicht mit addition sondern mit schieben (ergebnis = (data1<<0) | (data1<<1) | ... | (data8<<7) ).
In dataX steht dann eine 0 oder 1 je nachdem ob der Eingang low oder high ist.
MfG Hannes
Lesezeichen