Da ich recht viele Sachen ausprobiert habe, bin ich mir nich 100% sicher ob es daran liegt, aber ich vermute, dass es an dem sleep-Befehl liegt. Nach der Initialisierung wird 1 sec gewartet, erst dann beginnt die Kommunikation. Dies muss wohl so sein, da der Temperatursensor (Slave) Zeit benötigt.
Wie gesagt, das ist nur meine Vermutung, da das Programm nicht mehr funktioniert, wenn ich diesen Befehl auskommentiere. Allerdings habe ich davor ja auch schon I2C mit Polling programmiert, welches ja auch funktioniert hat. Bei diesem Programm war allerdings kein warten nötig, obwohl die gleichen Bausteine verwendet wurden.
Ansonsten entspricht das Programm soweit dem Code zu Beginn des Problems, bis auf die Änderungsvorschläge des Forums.