MPU - 9150 compass data

By atheerlabs , 30 September 2013

hi,

I tried to get the data from the compass to the EXT_SENSE_DAT registers in the following way:

int MpuInit()
{
//Haupteinstellungen
//MpuWrite(MPU_ADR,MPU9150_O_PWR_MGMT_1, 0x80); //reset MPU
MpuWrite(MPU_ADR,MPU9150_O_PWR_MGMT_1, 0x01); //PLL with gyroscope reference
MpuWrite(MPU_ADR,MPU9150_O_INT_PIN_CFG, 0x00); //Bypass disable
MpuWrite(MPU_ADR,MPU9150_O_USER_CTRL, 0x20); //Master enable
MpuWrite(MPU_ADR,MPU9150_O_GYRO_CONFIG, 0x00);
MpuWrite(MPU_ADR,MPU9150_O_ACCEL_CONFIG, 0x00);
MpuWrite(MPU_ADR,MPU9150_O_SMPLRT_DIV, 0x00);


MpuWrite(MPU_ADR,MPU9150_O_I2C_MST_CTRL, 0x40);

//Slave 0
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV0_ADDR,0x8C); //Read
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV0_REG,MPU9150_MAGNO_HXL);
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV0_CTRL,0x86); //Slave enable, 6 databytes


//Slave 1
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV1_ADDR,0x0C); //Write
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV1_REG,MPU9150_MAGNO_CNTL);
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV1_CTRL,0x81); //Slave enable, 1 databyte
MpuWrite(MPU_ADR,MPU9150_O_I2C_SLV1_DO,0x01);

MpuWrite(MPU_ADR,0x01, 0x80); //I2C VDD
MpuWrite(MPU_ADR,MPU9150_O_I2C_MST_DELAY_CTRL, 0x03); //Delay
return 0;
}

The problem is, that the data of the compass is always zero...

Any ideas?

thx

christoph

phpbb Topic ID
15639