/*reset sensors*/ imu_status_t imu_sensor_reset(void) { if(LSM6DS3_IO_Init() != imu_status_ok) { printf("lsm6ds3 io init error\n"); return imu_status_fail; } /* Configure interrupt lines */ LSM6DS3_IO_ITConfig(); /*Config LSM303AGR interrupt lines*/ LSM303AGR_IO_ITConfig(); printf("IT IO Config\n"); if(lsm6ds3_fifo_sensor_enable() != imu_status_ok) { printf("sensor fifoenable error\n"); return imu_status_fail; } printf("sensor enable\n"); if(imu_sensor_magneto_interrupt_enable() != imu_status_ok) { printf("imu_sensor_magneto_interrupt_enable\n"); return imu_status_fail; } return imu_status_ok; }
/*reset sensors*/ imu_status_t imu_sensor_reset(void) { uint8_t tempReg[2] = {0,0}; if(LSM6DS3_IO_Init() != imu_status_ok) { printf("lsm6ds3 io init error\n"); return imu_status_fail; } /* Configure interrupt lines */ LSM6DS3_IO_ITConfig(); printf("IT IO Config\n"); /*soft reset*/ if(imu_sensor_lsm6ds3_soft_reset() != imu_status_ok) { printf("lsm6ds3 reset error\n"); return imu_status_fail; } printf("sensor reset\n"); imu_sensor_read_fifo_status(); /*clear fifo data*/ imu_sensor_clear_fifo(); imu_sensor_read_fifo_status(); /*set fifo water mark level*/ if(imu_sensor_fifo_threshold_level(2046) != imu_status_ok) { //1.2kBytes printf("sensor fifo water mark setting error\n"); return imu_status_fail; } printf("fifo water mark level set over\n"); /*enable fifo interrupt*/ if(imu_sensor_fifo_threshold_interrupt() != imu_status_ok ) { printf("sensor fifo interrupt setting error\n"); return imu_status_fail; } printf("fifo threshold interrupt set over\n"); if(lsm6ds3_fifo_sensor_enable() != imu_status_ok) { printf("sensor fifoenable error\n"); return imu_status_fail; } printf("sensor enable\n"); return imu_status_ok; }