Цитата(Дима 128 @ Sep 21 2011, 17:02)

i2cSendStart();
_delay_ms(100);
i2cSendByte(0xd0);
_delay_ms(100);
i2cSendByte(0);
_delay_ms(100);
i2cSendStart();
_delay_ms(100);
i2cSendByte(0xd1);
_delay_ms(100);
sek= i2cGetReceivedByte();
min= i2cGetReceivedByte();
hour= i2cGetReceivedByte();
i2cSendStop();
А вы пробовали проверить значение ACK бита которое отдает вам DS1307? Это дало бы какую то информацию. И неплохо знать что какой ACK вы отдаете при чтении.
Еще вот что я думаю. После передачи D0, 00 вы передаете сразу старт условие. А может стоило бы сначала стоп передать?