Ich hab mir mal die Mühe gemacht und die Fehler-Codes aufgedröselt (weil das sonst nervt)
Das ist zwar Bascom, aber du kennst dich sicher aus so aus
Code:
Sub Twi_show_state(byref State As Byte)
   Print Hex(state);
   Select Case State
   Case &H08 : Print " Start "
   Case &H10 : Print " Start Rep "

   Case &HA0 : Print " Stop / Rep Start  "

   Case &HA8 : Print " Sla R Received Acked "
   Case &H60 : Print " Sla W Received Acked "
   Case &H70 : Print " Gca Received Acked "

   Case &H80 : Print " SR Sla Data Received Acked "
   Case &H90 : Print " SR Gca Data Received Acked "
   Case &H88 : Print " SR Sla Data Received Not Acked "
   Case &H98 : Print " SR Gca Data Received Not Acked "
   Case &HB8 : Print " ST Data Transmitted Acked "
   Case &HC0 : Print " ST Data Transmitted Not Acked "
   Case &HC8 : Print " ST Last Data Transm Acked "
   Case &H18 : Print " MT Sla W Transmitted Acked "
   Case &H40 : Print " MT Sla R Transmitted Acked "
   Case &H20 : Print " MT Sla W Transmitted Not Acked"
   Case &H48 : Print " MT Sla R Transmitted Not Acked "
   Case &H38 : Print " MT Lost Or Sla R / W Not Acked "
   Case &H68 : Print " MT Lost / Sla W Received Acked "
   Case &H78 : Print " MT Lost / Gca Received Acked "
   Case &HB0 : Print " MT Lost / Sla R Received Acked "
   Case &H28 : Print " MT Data Transmitted Acked "
   Case &H30 : Print " MT Data Transmitted No Acked "
   Case &H50 : Print " MT Data Received Acked "
   Case &H58 : Print " MT Data Received Not Acked "
   Case Twi_timeout : Print " M  Timeout"
   Case Twi_m_busy : Print " TWI Busy"
   Case Twi_buserr : Print " Bus Error"
   Case Else : Print " ??"
   End Select

End Sub
In deinem Fall heisst das, das sich dein Slave irgendwie nicht angesprochen gefühlt hat (no ACK)

(adresse falsch ?)