From ae9f30c7297fed511978626de69b2885e2cc6cde Mon Sep 17 00:00:00 2001 From: Alessio Morale Date: Wed, 1 Oct 2014 02:07:46 +0200 Subject: [PATCH] OP-1477 - Fix mag exti config, set correct rate, set correct SPI speed for hmc5x83. Note: GPIO is disabled as it seems there is some issues with Exti on PB0 --- flight/modules/gpsp/gps9maghandler.c | 10 +++++++++- flight/pios/common/pios_hmc5x83.c | 1 + flight/targets/boards/gpsplatinum/board_hw_defs.c | 8 ++++---- .../boards/gpsplatinum/firmware/inc/pios_config.h | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/flight/modules/gpsp/gps9maghandler.c b/flight/modules/gpsp/gps9maghandler.c index 610d9f74b..0d49f3295 100644 --- a/flight/modules/gpsp/gps9maghandler.c +++ b/flight/modules/gpsp/gps9maghandler.c @@ -29,14 +29,22 @@ #include #include #include "inc/gps9protocol.h" - +#define MAG_RATE_HZ 30 extern pios_hmc5x83_dev_t onboard_mag; void handleMag() { +#ifdef PIOS_HMC5X83_HAS_GPIOS if (!PIOS_HMC5x83_NewDataAvailable(onboard_mag)) { return; } +#else + static uint32_t lastUpdate = 0; + if(PIOS_DELAY_DiffuS(lastUpdate) < (1000000 / MAG_RATE_HZ)){ + return; + } + lastUpdate = PIOS_DELAY_GetRaw(); +#endif static int16_t mag[3]; if (PIOS_HMC5x83_ReadMag(onboard_mag, mag) == 0) { diff --git a/flight/pios/common/pios_hmc5x83.c b/flight/pios/common/pios_hmc5x83.c index 73b4902d9..ab9abc58d 100644 --- a/flight/pios/common/pios_hmc5x83.c +++ b/flight/pios/common/pios_hmc5x83.c @@ -401,6 +401,7 @@ static int32_t pios_hmc5x83_spi_claim_bus(pios_hmc5x83_dev_data_t *dev) if (PIOS_SPI_ClaimBus(dev->port_id) < 0) { return -1; } + PIOS_SPI_SetClockSpeed(dev->port_id, SPI_BaudRatePrescaler_16); PIOS_SPI_RC_PinSet(dev->port_id, dev->slave_num, 0); return 0; } diff --git a/flight/targets/boards/gpsplatinum/board_hw_defs.c b/flight/targets/boards/gpsplatinum/board_hw_defs.c index 0772f0cef..8fa93f3d9 100644 --- a/flight/targets/boards/gpsplatinum/board_hw_defs.c +++ b/flight/targets/boards/gpsplatinum/board_hw_defs.c @@ -214,11 +214,11 @@ bool pios_board_mag_handler() } static const struct pios_exti_cfg pios_exti_mag_cfg __exti_config = { .vector = pios_board_mag_handler, - .line = EXTI_Line7, + .line = EXTI_Line0, .pin = { .gpio = GPIOB, .init = { - .GPIO_Pin = GPIO_Pin_7, + .GPIO_Pin = GPIO_Pin_0, .GPIO_Speed = GPIO_Speed_Level_3, .GPIO_Mode = GPIO_Mode_IN, .GPIO_OType = GPIO_OType_OD, @@ -227,14 +227,14 @@ static const struct pios_exti_cfg pios_exti_mag_cfg __exti_config = { }, .irq = { .init = { - .NVIC_IRQChannel = EXTI4_15_IRQn, + .NVIC_IRQChannel = EXTI0_1_IRQn, .NVIC_IRQChannelPriority = PIOS_IRQ_PRIO_LOW, .NVIC_IRQChannelCmd = ENABLE, }, }, .exti = { .init = { - .EXTI_Line = EXTI_Line7, // matches above GPIO pin + .EXTI_Line = EXTI_Line0, // matches above GPIO pin .EXTI_Mode = EXTI_Mode_Interrupt, .EXTI_Trigger = EXTI_Trigger_Rising, .EXTI_LineCmd = ENABLE, diff --git a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h index 389e6176c..b618482af 100644 --- a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h +++ b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h @@ -83,7 +83,7 @@ // #define PIOS_MPU6000_ACCEL /* #define PIOS_INCLUDE_HMC5843 */ #define PIOS_INCLUDE_HMC5X83 -#define PIOS_HMC5X83_HAS_GPIOS +//#define PIOS_HMC5X83_HAS_GPIOS /* #define PIOS_INCLUDE_BMP085 */ /* #define PIOS_INCLUDE_MS5611 */ /* #define PIOS_INCLUDE_MPXV */