X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdrivers%2Fao_mpu9250.c;h=09b65bfa749c8cd7de7b1e5f6ff712d5cc602c74;hb=8a830c7f9ed41565c72edb85852e2df8bfa351f5;hp=ae8dacd0a2eee8544e6de5e8061c316ffaacf17b;hpb=8d65e7b367712075a42d26c6d4bbff474dc1ae14;p=fw%2Faltos diff --git a/src/drivers/ao_mpu9250.c b/src/drivers/ao_mpu9250.c index ae8dacd0..09b65bfa 100644 --- a/src/drivers/ao_mpu9250.c +++ b/src/drivers/ao_mpu9250.c @@ -26,8 +26,6 @@ static uint8_t ao_mpu9250_configured; -extern uint8_t ao_sensor_errors; - #ifndef AO_MPU9250_I2C_INDEX #define AO_MPU9250_SPI 1 #else @@ -36,7 +34,11 @@ extern uint8_t ao_sensor_errors; #if AO_MPU9250_SPI -#define ao_mpu9250_spi_get() ao_spi_get(AO_MPU9250_SPI_BUS, AO_SPI_SPEED_1MHz) +#ifndef AO_MPU9250_SPI_SPEED +#define AO_MPU9250_SPI_SPEED ao_spi_speed(1000000) /* 1MHz max SCLK */ +#endif + +#define ao_mpu9250_spi_get() ao_spi_get(AO_MPU9250_SPI_BUS, AO_MPU9250_SPI_SPEED) #define ao_mpu9250_spi_put() ao_spi_put(AO_MPU9250_SPI_BUS) #define ao_mpu9250_spi_start() ao_spi_set_cs(AO_MPU9250_SPI_CS_PORT, \ @@ -63,7 +65,7 @@ _ao_mpu9250_reg_write(uint8_t addr, uint8_t value) #else ao_i2c_get(AO_MPU9250_I2C_INDEX); ao_i2c_start(AO_MPU9250_I2C_INDEX, MPU9250_ADDR_WRITE); - ao_i2c_send(d, 2, AO_MPU9250_I2C_INDEX, TRUE); + ao_i2c_send(d, 2, AO_MPU9250_I2C_INDEX, true); ao_i2c_put(AO_MPU9250_I2C_INDEX); #endif } @@ -80,9 +82,9 @@ _ao_mpu9250_read(uint8_t addr, void *data, uint8_t len) #else ao_i2c_get(AO_MPU9250_I2C_INDEX); ao_i2c_start(AO_MPU9250_I2C_INDEX, MPU9250_ADDR_WRITE); - ao_i2c_send(&addr, 1, AO_MPU9250_I2C_INDEX, FALSE); + ao_i2c_send(&addr, 1, AO_MPU9250_I2C_INDEX, false); ao_i2c_start(AO_MPU9250_I2C_INDEX, MPU9250_ADDR_READ); - ao_i2c_recv(data, len, AO_MPU9250_I2C_INDEX, TRUE); + ao_i2c_recv(data, len, AO_MPU9250_I2C_INDEX, true); ao_i2c_put(AO_MPU9250_I2C_INDEX); #endif } @@ -100,9 +102,9 @@ _ao_mpu9250_reg_read(uint8_t addr) #else ao_i2c_get(AO_MPU9250_I2C_INDEX); ao_i2c_start(AO_MPU9250_I2C_INDEX, MPU9250_ADDR_WRITE); - ao_i2c_send(&addr, 1, AO_MPU9250_I2C_INDEX, FALSE); + ao_i2c_send(&addr, 1, AO_MPU9250_I2C_INDEX, false); ao_i2c_start(AO_MPU9250_I2C_INDEX, MPU9250_ADDR_READ); - ao_i2c_recv(&value, 1, AO_MPU9250_I2C_INDEX, TRUE); + ao_i2c_recv(&value, 1, AO_MPU9250_I2C_INDEX, true); ao_i2c_put(AO_MPU9250_I2C_INDEX); #endif return value; @@ -361,7 +363,7 @@ _ao_mpu9250_setup(void) } if (st_tries == ST_TRIES) - ao_sensor_errors = 1; + AO_SENSOR_ERROR(AO_DATA_MPU9250); /* Set up the mag sensor */ @@ -372,7 +374,7 @@ _ao_mpu9250_setup(void) } if (mag_tries == MAG_TRIES) - ao_sensor_errors = 1; + AO_SENSOR_ERROR(AO_DATA_MPU9250); /* Select continuous mode 2 (100Hz), 16 bit samples */ @@ -472,10 +474,9 @@ ao_mpu9250_read(void) uint8_t addr; uint8_t val; - ao_cmd_hex(); + addr = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - addr = ao_cmd_lex_i; ao_mpu9250_spi_get(); val = _ao_mpu9250_reg_read(addr); ao_mpu9250_spi_put(); @@ -488,14 +489,12 @@ ao_mpu9250_write(void) uint8_t addr; uint8_t val; - ao_cmd_hex(); + addr = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - addr = ao_cmd_lex_i; - ao_cmd_hex(); + val = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - val = ao_cmd_lex_i; printf("Addr %02x val %02x\n", addr, val); ao_mpu9250_spi_get(); _ao_mpu9250_reg_write(addr, val); @@ -508,10 +507,9 @@ ao_mpu9250_mag_read(void) uint8_t addr; uint8_t val; - ao_cmd_hex(); + addr = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - addr = ao_cmd_lex_i; ao_mpu9250_spi_get(); val = _ao_mpu9250_mag_reg_read(addr); ao_mpu9250_spi_put(); @@ -524,14 +522,12 @@ ao_mpu9250_mag_write(void) uint8_t addr; uint8_t val; - ao_cmd_hex(); + addr = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - addr = ao_cmd_lex_i; - ao_cmd_hex(); + val = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - val = ao_cmd_lex_i; printf("Addr %02x val %02x\n", addr, val); ao_mpu9250_spi_get(); _ao_mpu9250_mag_reg_write(addr, val); @@ -567,7 +563,7 @@ ao_mpu9250_init(void) */ ao_cur_task = &ao_mpu9250_task; - ao_spi_get(AO_MPU9250_SPI_BUS, AO_SPI_SPEED_1MHz); + ao_mpu9250_spi_get(); ao_cur_task = NULL; #endif ao_cmd_register(&ao_mpu9250_cmds[0]);