ну ладно..отличается-не отличается...главное что у меня не работает, хотя - и не отличается...

а зачем вы делаете release_sda(см коммент в коде)
u_int i2c_read_byte(u_int ack)
{
u_int a, data;
data = 0;
for(a = 0; a < 8; a++)
{
i2c_force_scl();
i2c_qp_dly();
i2c_release_sda(); // ВОТ ТУТ???
i2c_qp_dly();
i2c_release_scl();
i2c_hp_dly();
data <<= 1;
if(i2c_read_sda()) data |= 1;
}
i2c_force_scl();
i2c_qp_dly();
if(!ack) i2c_force_sda();
else i2c_release_sda();
i2c_qp_dly();
i2c_release_scl();
i2c_hp_dly();
return data;
}
вроде, при вашем подходе вы должны сразу перевести порт на читку из sda бита до цикла, а потом 8 раз клокать и просто читать биты, вставляя их в байт.
Сообщение отредактировал merk0 - Mar 18 2009, 00:43