Цитата(GDI @ Jul 2 2012, 15:26)

Тут клещи нужны. Вы задайте правильно вопрос, может и сами в процессе ответ найдете. Опишите проблему целиком, почему нужно догадываться что Вы там делали? Я вот не вижу что Вы ждете Аск после i2c_start(SAD_W);, а судя по даташиту его нужно ждать. А после "Low_P = " надо наоборот, не ждать Аск от слейва, а мастером Аск давать. Но я не силен в АВРГЦЦ, тожет i2c_start уже ждет Аск сама, а i2c_readAck отправляет Аск слейву.
Не пробовали по одному байту данные читать?
проблема оказлась в том, что при передаче адреса читаемого регистра нужно установить старшый битик в 1, чтобы прцес пошел с атоинкрементом адресов
#define I2C_AUTO_INCREMENT 0x80
i2c_start(SAD_W);
i2c_write(I2C_AUTO_INCREMENT|PRESS_OUT_L);
i2c_start(SAD_R);
Low_P = i2c_readAck();
Hi_P = i2c_readAck();
Low_T = i2c_readAck();
Hi_T = i2c_readNak();
i2c_stop();