/** * @brief Initialize the MPU6000 3-axis gyro sensor. * @return 0 for success, -1 for failure */ int32_t PIOS_MPU6000_Init(uint32_t spi_id, uint32_t slave_num, const struct pios_mpu60x0_cfg *cfg) { pios_mpu6000_dev = PIOS_MPU6000_alloc(); if (pios_mpu6000_dev == NULL) return -1; pios_mpu6000_dev->spi_id = spi_id; pios_mpu6000_dev->slave_num = slave_num; pios_mpu6000_dev->cfg = cfg; /* Configure the MPU6000 Sensor */ PIOS_SPI_SetClockSpeed(pios_mpu6000_dev->spi_id, 100000); PIOS_MPU6000_Config(cfg); PIOS_SPI_SetClockSpeed(pios_mpu6000_dev->spi_id, 3000000); pios_mpu6000_dev->threadp = PIOS_Thread_Create( PIOS_MPU6000_Task, "pios_mpu6000", MPU6000_TASK_STACK, NULL, MPU6000_TASK_PRIORITY); PIOS_Assert(pios_mpu6000_dev->threadp != NULL); /* Set up EXTI line */ PIOS_EXTI_Init(cfg->exti_cfg); #if defined(PIOS_MPU6000_ACCEL) PIOS_SENSORS_Register(PIOS_SENSOR_ACCEL, pios_mpu6000_dev->accel_queue); #endif /* PIOS_MPU6000_ACCEL */ PIOS_SENSORS_Register(PIOS_SENSOR_GYRO, pios_mpu6000_dev->gyro_queue); return 0; }
/** * @brief Initialize the MPU6000 3-axis gyro sensor. * @return 0 for success, -1 for failure */ int32_t PIOS_MPU6000_Init(uint32_t spi_id, uint32_t slave_num, const struct pios_mpu6000_cfg *cfg) { dev = PIOS_MPU6000_alloc(); if (dev == NULL) { return -1; } dev->spi_id = spi_id; dev->slave_num = slave_num; dev->cfg = cfg; /* Configure the MPU6000 Sensor */ PIOS_SPI_SetClockSpeed(dev->spi_id, PIOS_SPI_PRESCALER_256); PIOS_MPU6000_Config(cfg); PIOS_SPI_SetClockSpeed(dev->spi_id, PIOS_SPI_PRESCALER_16); /* Set up EXTI line */ PIOS_EXTI_Init(cfg->exti_cfg); return 0; }