Цитата(joint931 @ May 16 2011, 20:57)

Подскажите кто-нибудь в чем ошибка в процедуре чтения данных с магнитометра:
Код
i2c_start();
i2c_write(0x3C); // write mag
i2c_write(0x03); // Select register OUT_X_L_M
i2c_start(); // repeated start
i2c_write(0x3D); // read mag
ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB)
ACC_Data[1] = i2c_read();//read OUT_X_L_M (LSB)
ACC_Data[2] = i2c_read();//read OUT_Y_H_M (MSB)
ACC_Data[3] = i2c_read();//read OUT_Y_L_M (LSB)
ACC_Data[4] = i2c_read();//read OUT_Z_H_M (MSB)
ACC_Data[5] = i2c_read(0);//read OUT_Z_L_M (LSB) NACK
i2c_stop();
Инициализация проходит нормально, но ACC_Data[0]..[5] на выходе получаются со значениями 255.
получается считать данные из адреса WHO IS?
попробуй прочитать по байтно
вот так, из каждого адреса
i2c_write(0x3C); // write mag
i2c_write(0x03); // Select register OUT_X_L_M
i2c_start(); // repeated start
i2c_write(0x3D); // read mag
ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB) NACK
i2c_stop();
если получится, нужно протокол править в процедуре