Hallo,

Du schreibst immer 0x96 als SlaveAdresse, beim lesen muss man das RW-Bit darin setzen, damit der Daten raus rückt.

Und ich glaub das mit dem | 0xFF kommt nicht gut in i2c_receivebyte, denn danach sind alle Bits gesetzt !