From a6fc5c91902a7a2b406dad1b37ebc96af45c20d2 Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Sun, 7 Sep 2014 22:44:15 +0200 Subject: [PATCH] OP-1477 - Fixes for multi device support of HMC5x driver --- flight/targets/boards/gpsplatinum/board_hw_defs.c | 8 ++++++-- .../targets/boards/gpsplatinum/firmware/inc/pios_config.h | 3 +-- flight/targets/boards/gpsplatinum/firmware/pios_board.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/flight/targets/boards/gpsplatinum/board_hw_defs.c b/flight/targets/boards/gpsplatinum/board_hw_defs.c index 683ddc027..1f1820b70 100644 --- a/flight/targets/boards/gpsplatinum/board_hw_defs.c +++ b/flight/targets/boards/gpsplatinum/board_hw_defs.c @@ -205,10 +205,14 @@ void PIOS_SPI_mag_flash_irq_handler(void) #endif /* PIOS_INCLUDE_FLASH */ #if defined(PIOS_INCLUDE_HMC5X83) +pios_hmc5x83_dev_t onboard_mag; #include "pios_hmc5x83.h" #ifdef PIOS_HMC5x83_HAS_GPIOS +bool pios_board_mag_handler(){ + PIOS_HMC5x83_IRQHandler(onboard_mag); +} static const struct pios_exti_cfg pios_exti_mag_cfg __exti_config = { - .vector = PIOS_HMC5x83_IRQHandler, + .vector = pios_board_mag_handler, .line = EXTI_Line7, .pin = { .gpio = GPIOB, @@ -243,7 +247,7 @@ static const struct pios_hmc5x83_cfg pios_mag_cfg = { #ifdef PIOS_HMC5x83_HAS_GPIOS .exti_cfg = &pios_exti_mag_cfg, #endif - .M_ODR = PIOS_HMC5x83_ODR_75, + .M_ODR = PIOS_HMC5x83_ODR_30, .Meas_Conf = PIOS_HMC5x83_MEASCONF_NORMAL, .Gain = PIOS_HMC5x83_GAIN_1_9, .Mode = PIOS_HMC5x83_MODE_CONTINUOUS, diff --git a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h index 204658d64..9e48c8fe5 100644 --- a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h +++ b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h @@ -82,9 +82,8 @@ // #define PIOS_INCLUDE_MPU6000 // #define PIOS_MPU6000_ACCEL /* #define PIOS_INCLUDE_HMC5843 */ -/* #define PIOS_INCLUDE_HMC5883 */ #define PIOS_INCLUDE_HMC5X83 -/* #define PIOS_HMC5883_HAS_GPIOS */ +#define PIOS_HMC5X83_HAS_GPIOS /* #define PIOS_INCLUDE_BMP085 */ /* #define PIOS_INCLUDE_MS5611 */ /* #define PIOS_INCLUDE_MPXV */ diff --git a/flight/targets/boards/gpsplatinum/firmware/pios_board.c b/flight/targets/boards/gpsplatinum/firmware/pios_board.c index 7d7e6bf74..cdc5bfb1c 100644 --- a/flight/targets/boards/gpsplatinum/firmware/pios_board.c +++ b/flight/targets/boards/gpsplatinum/firmware/pios_board.c @@ -75,7 +75,7 @@ void PIOS_Board_Init(void) #ifdef PIOS_INCLUDE_HMC5X83 PIOS_SPI_SetClockSpeed(pios_spi_mag_flash_id, SPI_BaudRatePrescaler_16); - PIOS_HMC5x83_Init(&pios_mag_cfg, pios_spi_mag_flash_id, 0); + onboard_mag = PIOS_HMC5x83_Init(&pios_mag_cfg, pios_spi_mag_flash_id, 0); if (PIOS_Flash_Jedec_Init(&flash_id, pios_spi_mag_flash_id, 1)) { PIOS_DEBUG_Assert(0); }