линия данных может меняться при низком уровне клока, и только при низком. Исключения - старт- и стоп-условия. И вообще, на сайте филипса есть спецификация на I2C. Рекомендую с нее и начать. И мастер писать не софтовый, а использовать имеющийся в МК TWI (если это возможно)