Also TWINT darfste nicht deaktivieren sonst ist klar das bei zwei Bytes nix mehr funktioniert - der Empfang läuft ja in der Interrupt Routine! Das wird nur einmal zu beginn in der task_I2CTWI angestoßen.
Die ISR wird ausserdem sobald der Rep Start ausgeführt wurde wieder aufgerufen und landet im state TWI_REP_START, da dort kein break ist läufts dann in die nächsten Zustände rein (ja ist absichtlich so).
Ggf. setz doch mal no_rep_start=1 da in dem Zustand oder alternativ in der neuen if bedingung in DATA_ACK.
Lesezeichen