void LSM9DS0::setUpGyroscope(void)
{
// Set Up the Configuration for the Gyroscope Control Register 1
/*
// Set the Output Data Rate
uint8_t config1 = lsm_gyrodatarate;
// Set the Power Down Mode Enable
config1 |= lsm_gyromode;
// Set the Gyroscpe Z-Axis Enable
config1 |= lsm_gyrozen;
// Set the Gyroscpe Y-Axis Enable
config1 |= lsm_gyroyen;
// Set the Gyroscpe X-Axis Enable
config1 |= lsm_gyroxen;
*/
uint8_t config1 = LSM9DS0_REG_GYRO_CTRL_REG1_PD_NORMAL | // Normal Mode
LSM9DS0_REG_GYRO_CTRL_REG1_ZEN_ENABLE | // Gyroscope Z-Axis Enabled
LSM9DS0_REG_GYRO_CTRL_REG1_YEN_ENABLE | // Gyroscope Y-Axis Enabled
LSM9DS0_REG_GYRO_CTRL_REG1_XEN_ENABLE; // Gyroscope X-Axis Enabled
config1 |= lsm_gyrodatarate; // Output Data Rate and Bandwidth Selection
// Write the configuration to the Gyroscope Control Register 1
writeRegister(lsm_i2cAddressG, LSM9DS0_REG_GYRO_CTRL_REG1, config1);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
// Set Up the Configuration for the Gyroscope Control Register 4
/*
// Set the Block Data Update
uint8_t config4 = lsm_gyroblockdata;
// Set the Big/Little Endian Data Selection
config4 |= lsm_gyroendiandata;
// Set the Full Scale Selection
config4 |= lsm_gyroscale;
// Set the Self-Test Enable
config4 |= lsm_gyroselftest;
// Set the SPI Serial Interface Mode Selection
config4 |= lsm_gyrospiwire;
*/
uint8_t config4 = LSM9DS0_REG_GYRO_CTRL_REG4_BDU_CONTINUOUS | // Continuous Update
LSM9DS0_REG_GYRO_CTRL_REG4_BLE_LSB | // Data LSB @ Lower Address
LSM9DS0_REG_GYRO_CTRL_REG4_ST_NORMAL | // Normal Mode
LSM9DS0_REG_GYRO_CTRL_REG4_SIM_4WIRE; // 4-Wire Interface
config4 |= lsm_gyroscale; // Full-Scale Selection
// Write the configuration to the Gyroscope Control Register 4
writeRegister(lsm_i2cAddressG, LSM9DS0_REG_GYRO_CTRL_REG4, config4);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
}
/**************************************************************************/
/*
Sets up the Accelerometer
*/
/**************************************************************************/
void LSM9DS0::setUpAccelerometer(void)
{
// Set Up the Configuration for the Accelerometer/Magnetometer Control Register 1
/*
// Set the Acceleration Output Data Rate
uint8_t config1 = lsm_acceldatarate;
// Set the Block Data Update for Acceleration and Magnetic Data
config1 |= lsm_accelmagblockdata;
// Set the Acceleration Z-Axis Enable
config1 |= lsm_accelzen;
// Set the Acceleration Y-Axis Enable
config1 |= lsm_accelyen;
// Set the Acceleration X-Axis Enable
config1 |= lsm_accelxen;
*/
uint8_t config1 = LSM9DS0_REG_ACCELMAG_CTRL_REG1_BDU_CONTINUOUS | // Continuous Update
LSM9DS0_REG_ACCELMAG_CTRL_REG1_AZEN_ENABLE | // Acceleration Z-Axis Enabled
LSM9DS0_REG_ACCELMAG_CTRL_REG1_AYEN_ENABLE | // Acceleration Y-Axis Enabled
LSM9DS0_REG_ACCELMAG_CTRL_REG1_AXEN_ENABLE; // Acceleration X-Axis Enabled
config1 |= lsm_acceldatarate; // Acceleration Data Rate Configuration
// Write the configuration to the Accelerometer/Magnetometer Control Register 1
writeRegister(lsm_i2cAddressXM, LSM9DS0_REG_ACCELMAG_CTRL_REG1, config1);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
// Set Up the Configuration for the Accelerometer/Magnetometer Control Register 2
/*
// Set the Accelerometer Anti-Alias Filter Bandwidth
uint8_t config2 = lsm_accelbandwidth;
// Set the Acceleration Full-Scale Selection
config2 |= lsm_accelrange;
// Set the Acceleration Self-Test Enable
config2 |= lsm_sccelselftest;
// Set the SPI Serial Interface Mode Selection
config2 |= lsm_accelmagspiwire;
*/
uint8_t config2 = LSM9DS0_REG_ACCELMAG_CTRL_REG2_ABW_773 | // 773 Hz, Accelerometer Anti-Alias Filter Bandwidth
LSM9DS0_REG_ACCELMAG_CTRL_REG2_AST_NORMAL | // Normal Mode
LSM9DS0_REG_ACCELMAG_CTRL_REG2_SIM_4WIRE; // 4-Wire Interface
config2 |= lsm_accelrange; // Acceleration Full-Scale Selection
// Write the configuration to the Accelerometer/Magnetometer Control Register 2
writeRegister(lsm_i2cAddressXM, LSM9DS0_REG_ACCELMAG_CTRL_REG2, config2);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
}
/**************************************************************************/
/*
Sets up the Magnetometer
*/
/**************************************************************************/
void LSM9DS0::setUpMagnetometer(void)
{
// Set Up the Configuration for the Accelerometer/Magnetometer Control Register 5
/*
// Set the Temperature Sensor Enable
uint8_t config5 = lsm_tempsensor;
// Set the Magnetic Resolution Selection
config5 |= lsm_magresolution;
// Set the Magnetic Data Rate Selection
config5 |= lsm_magdatarate;
// Set the Latch Interrupt Request on INT2_SRC Register
config5 |= lsm_magintr2latch;
// Set the Latch Interrupt Request on INT1_SRC Register
config5 |= lsm_magintr1latch;
*/
uint8_t config5 = LSM9DS0_REG_ACCELMAG_CTRL_REG5_TEMP_ENABLED | // Temperature Sensor Enabled
LSM9DS0_REG_ACCELMAG_CTRL_REG5_M_RES_HIGH; // Magnetic Resolution High
config5 |= lsm_magdatarate; // Magnetic Data Rate Selection
// Write the configuration to the Accelerometer/Magnetometer Control Register 5
writeRegister(lsm_i2cAddressXM, LSM9DS0_REG_ACCELMAG_CTRL_REG5, config5);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
// Set Up the Configuration for the Accelerometer/Magnetometer Control Register 6
// Set the Magnetic Full-Scale Selection
uint8_t config6 = lsm_maggain;
// Write the configuration to the Accelerometer/Magnetometer Control Register 6
writeRegister(lsm_i2cAddressXM, LSM9DS0_REG_ACCELMAG_CTRL_REG6, config6);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
// Set Up the Configuration for the Accelerometer/Magnetometer Control Register 7
uint8_t config7 = LSM9DS0_REG_ACCELMAG_CTRL_REG7_AHPM_NORMAL | // Normal Mode
LSM9DS0_REG_ACCELMAG_CTRL_REG7_AFDS_BYPASS | // Internal Filter Bypassed
LSM9DS0_REG_ACCELMAG_CTRL_REG7_MLP_MODR | // Magnetic Data Rate is Configured by MODR Bits
LSM9DS0_REG_ACCELMAG_CTRL_REG7_MD_CONTINUOUS; // Continuous-Conversion Mode
// Set the Magnetic Sensor Mode
config7 |= lsm_magmode;
// Write the configuration to the Accelerometer/Magnetometer Control Register 7
writeRegister(lsm_i2cAddressXM, LSM9DS0_REG_ACCELMAG_CTRL_REG7, config7);
// Wait for the configuration to complete
delay(lsm_conversionDelay);
}