Ejemplo n.º 1
0
void ICACHE_FLASH_ATTR user_init(void) {
	uart_div_modify(0, UART_CLK_FREQ / BAUD);

	wifi_set_opmode(STATION_MODE);
	wifi_station_connect();

	/*** I²C init ***/
	i2c_master_gpio_init();
	mpu9250_init();
	ak8963_init();

	os_delay_us(10000);
	i2c_scanbus();

	/*** LCD Init ***/
	ssd1306_init(0);
	ssd1306_text_small(10, 10, "Init...");
	ssd1306_flip();

	// ~Charge input
	PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
	gpio_output_set(0, 0, 0, BIT13);

	// Button inputs
	buttons_init();

	ak8963_calibration_start(10000, on_ak8963_calibration);

	os_printf("Startup\r\n");
}
Ejemplo n.º 2
0
void mpu9250_i2c_init(struct Mpu9250_I2c *mpu, struct i2c_periph *i2c_p, uint8_t addr)
{
  /* set i2c_peripheral */
  mpu->i2c_p = i2c_p;

  /* slave address */
  mpu->i2c_trans.slave_addr = addr;
  /* set inital status: Success or Done */
  mpu->i2c_trans.status = I2CTransDone;

  /* set default MPU9250 config options */
  mpu9250_set_default_config(&(mpu->config));

  mpu->data_available = false;
  mpu->config.initialized = false;
  mpu->config.init_status = MPU9250_CONF_UNINIT;

  /* "internal" ak8963 magnetometer */
  ak8963_init(&mpu->akm, i2c_p, MPU9250_MAG_ADDR);
  /* mag is declared as slave to call the configure function,
   * regardless if it is an actual MPU slave or passthrough
   */
  mpu->config.nb_slaves = 1;
  /* set callback function to configure mag */
  mpu->config.slaves[0].configure = &imu_mpu9250_configure_mag_slave;
  /* read the mag directly for now */
  mpu->config.i2c_bypass = true;

  mpu->slave_init_status = MPU9250_I2C_CONF_UNINIT;
}
Ejemplo n.º 3
0
void enter_cmps_mode()
{
	xprintf("\r\nEnter the compass mode...\r\n");
	oled_cmps_mode();
	
	ak8963_init();
	ak8963_cs1_mode();
}
Ejemplo n.º 4
0
void sensor_init()
{
	nrf_gpio_cfg_input(4, NRF_GPIO_PIN_PULLDOWN);
	nrf_gpio_cfg_input(5, NRF_GPIO_PIN_PULLDOWN);
	nrf_gpio_cfg_input(6, NRF_GPIO_PIN_PULLDOWN);
	
	MMA845x_Init();
	bmp180_init_interface();
	bmi055_init();
	ak8963_init();
}
Ejemplo n.º 5
0
/**
 * Navstik IMU initializtion of the MPU-60x0 and HMC58xx
 */
void imu_impl_init(void)
{
  /* MPU-60X0 */
  mpu60x0_i2c_init(&imu_bebop.mpu, &(BEBOP_MPU_I2C_DEV), MPU60X0_ADDR);
  imu_bebop.mpu.config.smplrt_div = BEBOP_SMPLRT_DIV;
  imu_bebop.mpu.config.dlpf_cfg = BEBOP_LOWPASS_FILTER;
  imu_bebop.mpu.config.gyro_range = BEBOP_GYRO_RANGE;
  imu_bebop.mpu.config.accel_range = BEBOP_ACCEL_RANGE;

  /* AKM8963 */
  ak8963_init(&imu_bebop.ak, &(BEBOP_MAG_I2C_DEV), AK8963_ADDR);
}
Ejemplo n.º 6
0
/**
 * Navstik IMU initializtion of the MPU-60x0 and HMC58xx
 */
void imu_bebop_init(void)
{
  /* MPU-60X0 */
  mpu60x0_i2c_init(&imu_bebop.mpu, &(BEBOP_MPU_I2C_DEV), MPU60X0_ADDR);
  imu_bebop.mpu.config.smplrt_div = BEBOP_SMPLRT_DIV;
  imu_bebop.mpu.config.dlpf_cfg = BEBOP_LOWPASS_FILTER;
  imu_bebop.mpu.config.gyro_range = BEBOP_GYRO_RANGE;
  imu_bebop.mpu.config.accel_range = BEBOP_ACCEL_RANGE;

  /* AKM8963 */
  ak8963_init(&imu_bebop.ak, &(BEBOP_MAG_I2C_DEV), AK8963_ADDR);

#if BEBOP_VERSION2
  //the magnetometer of the bebop2 is located on the gps board,
  //which is under a slight angle
  struct FloatEulers imu_to_mag_eulers =
          {0.0, RadOfDeg(8.5), 0.0};
  orientationSetEulers_f(&imu_to_mag_bebop, &imu_to_mag_eulers);
#endif

}