1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Update the driver cfg structures for the EXTI changes. Make the drivers call

the pios_exti_init instead of their individual implementations.
This commit is contained in:
James Cotton 2012-01-23 12:16:02 -06:00
parent b2a292e9c4
commit 9a12299074
14 changed files with 113 additions and 168 deletions

View File

@ -30,6 +30,9 @@
*/
#include "pios.h"
#if defined(PIOS_INCLUDE_BMA180)
#include "fifo_buffer.h"
static uint32_t PIOS_SPI_ACCEL;
@ -40,7 +43,6 @@ static int32_t PIOS_BMA180_SelectBW(enum bma180_bandwidth bw);
static int32_t PIOS_BMA180_SetRange(enum bma180_range range);
static int32_t PIOS_BMA180_Config();
static int32_t PIOS_BMA180_EnableIrq();
static void PIOS_BMA180_IRQHandler(void);
#define PIOS_BMA180_MAX_DOWNSAMPLE 10
static int16_t pios_bma180_buffer[PIOS_BMA180_MAX_DOWNSAMPLE * sizeof(struct pios_bma180_data)];
@ -60,15 +62,7 @@ int32_t PIOS_BMA180_Init(const struct pios_bma180_cfg * cfg)
fifoBuf_init(&pios_bma180_fifo, (uint8_t *) pios_bma180_buffer, sizeof(pios_bma180_buffer));
/* Configure EOC pin as input floating */
GPIO_Init(cfg->drdy.gpio, &cfg->drdy.init);
/* Configure the End Of Conversion (EOC) interrupt */
SYSCFG_EXTILineConfig(cfg->eoc_exti.port_source, cfg->eoc_exti.pin_source);
EXTI_Init(&cfg->eoc_exti.init);
/* Enable and set EOC EXTI Interrupt to the lowest priority */
NVIC_Init(&cfg->eoc_irq.init);
PIOS_EXTI_Init(cfg->exti_cfg);
if(PIOS_BMA180_Config() < 0)
return -1;
@ -364,7 +358,7 @@ int32_t PIOS_BMA180_Test()
/**
* @brief IRQ Handler. Read data from the BMA180 FIFO and push onto a local fifo.
*/
static void PIOS_BMA180_IRQHandler(void)
void PIOS_BMA180_IRQHandler(void)
{
const static uint8_t pios_bma180_req_buf[7] = {BMA_X_LSB_ADDR | 0x80,0,0,0,0,0};
uint8_t pios_bma180_dmabuf[8];
@ -401,24 +395,7 @@ static void PIOS_BMA180_IRQHandler(void)
}
/**
* The physical IRQ handler
* Soon this will be generic in pios_exti and the BMA180 will register
* against it
*/
int32_t bma180_irq = 0;
void EXTI4_IRQHandler(void)
{
if (EXTI_GetITStatus(dev_cfg->eoc_exti.init.EXTI_Line) != RESET) {
bma180_irq++;
PIOS_BMA180_IRQHandler();
EXTI_ClearITPendingBit(dev_cfg->eoc_exti.init.EXTI_Line);
}
}
#endif /* PIOS_INCLUDE_BMA180 */
/**
* @}
* @}

View File

@ -54,15 +54,7 @@ void PIOS_HMC5883_Init(const struct pios_hmc5883_cfg * cfg)
{
dev_cfg = cfg; // store config before enabling interrupt
/* Configure EOC pin as input floating */
GPIO_Init(cfg->drdy.gpio, &cfg->drdy.init);
/* Configure the End Of Conversion (EOC) interrupt */
SYSCFG_EXTILineConfig(cfg->eoc_exti.port_source, cfg->eoc_exti.pin_source);
EXTI_Init(&cfg->eoc_exti.init);
/* Enable and set EOC EXTI Interrupt to the lowest priority */
NVIC_Init(&cfg->eoc_irq.init);
PIOS_EXTI_Init(cfg->exti_cfg);
int32_t val = PIOS_HMC5883_Config(cfg);
@ -404,37 +396,6 @@ void PIOS_HMC5883_IRQHandler(void)
pios_hmc5883_data_ready = true;
}
/**
* The physical IRQ handler
* Soon this will be generic in pios_exti and the BMA180 will register
* against it. Right now this is crap!
*/
#if defined(PIOS_INCLUDE_MPU6000)
extern void PIOS_MPU6000_IRQHandler();
#elif defined(PIOS_INCLUDE_L3GD20)
extern void PIOS_L3GD20_IRQHandler();
#endif
void EXTI9_5_IRQHandler(void)
{
if (EXTI_GetITStatus(dev_cfg->eoc_exti.init.EXTI_Line) != RESET) {
PIOS_HMC5883_IRQHandler();
EXTI_ClearITPendingBit(dev_cfg->eoc_exti.init.EXTI_Line);
}
#if defined(PIOS_INCLUDE_MPU6000)
if (EXTI_GetITStatus(EXTI_Line8) != RESET) {
PIOS_MPU6000_IRQHandler();
EXTI_ClearITPendingBit(EXTI_Line8);
}
#elif defined(PIOS_INCLUDE_L3GD20)
if (EXTI_GetITStatus(EXTI_Line8) != RESET) {
PIOS_L3GD20_IRQHandler();
EXTI_ClearITPendingBit(EXTI_Line8);
}
#endif
}
#endif /* PIOS_INCLUDE_HMC5883 */
/**

View File

@ -68,15 +68,8 @@ void PIOS_L3GD20_Init(const struct pios_l3gd20_cfg * new_cfg)
PIOS_L3GD20_Config(cfg);
PIOS_SPI_SetPrescalar(pios_spi_gyro, SPI_BaudRatePrescaler_16);
/* Configure EOC pin as input floating */
GPIO_Init(cfg->drdy.gpio, &cfg->drdy.init);
/* Configure the End Of Conversion (EOC) interrupt */
SYSCFG_EXTILineConfig(cfg->eoc_exti.port_source, cfg->eoc_exti.pin_source);
EXTI_Init(&cfg->eoc_exti.init);
/* Enable and set EOC EXTI Interrupt to the lowest priority */
NVIC_Init(&cfg->eoc_irq.init);
/* Set up EXTI */
PIOS_EXTI_Init(new_cfg->exti_cfg);
// An initial read is needed to get it running
struct pios_l3gd20_data data;

View File

@ -68,12 +68,8 @@ void PIOS_MPU6000_Init(const struct pios_mpu6000_cfg * new_cfg)
PIOS_MPU6000_Config(cfg);
PIOS_SPI_SetPrescalar(pios_spi_gyro, SPI_BaudRatePrescaler_8);
/* Configure EOC pin as input floating */
GPIO_Init(cfg->drdy.gpio, &cfg->drdy.init);
/* Configure the End Of Conversion (EOC) interrupt */
SYSCFG_EXTILineConfig(cfg->eoc_exti.port_source, cfg->eoc_exti.pin_source);
EXTI_Init(&cfg->eoc_exti.init);
/* Set up EXTI line */
PIOS_EXTI_Init(&new_cfg->cfg);
/* Enable and set EOC EXTI Interrupt to the lowest priority */
NVIC_Init(&cfg->eoc_irq.init);

View File

@ -91,9 +91,7 @@ struct pios_bma180_data {
struct pios_bma180_cfg {
struct stm32_gpio drdy;
struct stm32_exti eoc_exti;
struct stm32_irq eoc_irq;
const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */
};
/* Public Functions */
@ -103,6 +101,7 @@ extern float PIOS_BMA180_GetScale();
extern int32_t PIOS_BMA180_ReadFifo(struct pios_bma180_data * buffer);
extern int32_t PIOS_BMA180_ReadAccels(struct pios_bma180_data * data);
extern int32_t PIOS_BMA180_Test();
extern void PIOS_BMA180_IRQHandler();
#endif /* PIOS_BMA180_H */

View File

@ -73,10 +73,7 @@ extern int32_t PIOS_BMP085_EOC;
struct pios_bmp085_cfg {
struct stm32_gpio drdy;
struct stm32_gpio xclr;
struct stm32_exti eoc_exti;
struct stm32_irq eoc_irq;
static const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */
uint32_t oversampling;
};

View File

@ -93,10 +93,7 @@
struct pios_hmc5883_cfg {
struct stm32_gpio drdy;
struct stm32_exti eoc_exti;
struct stm32_irq eoc_irq;
const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */
uint8_t M_ODR; /* OUTPUT DATA RATE --> here below the relative define (See datasheet page 11 for more details) */
uint8_t Meas_Conf; /* Measurement Configuration,: Normal, positive bias, or negative bias --> here below the relative define */
uint8_t Gain; /* Gain Configuration, select the full scale --> here below the relative define (See datasheet page 11 for more details) */
@ -110,7 +107,7 @@ extern bool PIOS_HMC5883_NewDataAvailable(void);
extern int32_t PIOS_HMC5883_ReadMag(int16_t out[3]);
extern uint8_t PIOS_HMC5883_ReadID(uint8_t out[4]);
extern int32_t PIOS_HMC5883_Test(void);
extern void PIOS_HMC5883_IRQHandler();
#endif /* PIOS_HMC5883_H */
/**

View File

@ -127,9 +127,8 @@ struct pios_l3gd20_data {
};
struct pios_l3gd20_cfg {
struct stm32_gpio drdy;
struct stm32_exti eoc_exti;
struct stm32_irq eoc_irq;
const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */
enum pios_l3gd20_range gyro_range;
};
@ -141,6 +140,7 @@ extern int32_t PIOS_L3GD20_ReadGyros(struct pios_l3gd20_data * buffer);
extern int32_t PIOS_L3GD20_ReadID();
extern uint8_t PIOS_L3GD20_Test();
extern float PIOS_L3GD20_GetScale();
extern void PIOS_L3GD20_IRQHandler();
#endif /* PIOS_L3GD20_H */

View File

@ -128,9 +128,7 @@ struct pios_mpu6000_data {
};
struct pios_mpu6000_cfg {
struct stm32_gpio drdy;
struct stm32_exti eoc_exti;
struct stm32_irq eoc_irq;
const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */
uint8_t Fifo_store; /* FIFO storage of different readings (See datasheet page 31 for more details) */
uint8_t Smpl_rate_div; /* Sample rate divider to use (See datasheet page 32 for more details) */
@ -151,6 +149,7 @@ extern int32_t PIOS_MPU6000_ReadID();
extern uint8_t PIOS_MPU6000_Test();
extern float PIOS_MPU6000_GetScale();
extern float PIOS_MPU6000_GetAccelScale();
extern void PIOS_MPU6000_IRQHandler(void);
#endif /* PIOS_MPU6000_H */

View File

@ -93,9 +93,7 @@
#include <pios_usb_hid.h>
#include <pios_debug.h>
#include <pios_gpio.h>
#if defined(PIOS_INCLUDE_EXTI)
#include <pios_exti.h>
#endif
#include <pios_wdg.h>
/* PIOS Hardware Includes (Common) */
@ -134,12 +132,12 @@
#if defined(PIOS_INCLUDE_IAP)
#include <pios_iap.h>
#endif
#if defined(PIOS_INCLUDE_ADXL345)
#include <pios_adxl345.h>
#endif
#if defined(PIOS_INCLUDE_BMA180)
#include <pios_bma180.h>
#endif
#if defined(PIOS_INCLUDE_FLASH)
#include <pios_flash_w25x.h>

View File

@ -59,9 +59,7 @@
651913381256C5240039C0A3 /* ahrs_spi_comm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_spi_comm.c; sourceTree = "<group>"; };
6519133A1256C52B0039C0A3 /* ahrs_comm_objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_comm_objects.h; sourceTree = "<group>"; };
6519133B1256C52B0039C0A3 /* ahrs_spi_comm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_spi_comm.h; sourceTree = "<group>"; };
651CF9E5120B5D8300EEFD70 /* pios_usb_hid_desc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_desc.c; sourceTree = "<group>"; };
651CF9E6120B5D8300EEFD70 /* pios_usb_hid_istr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_istr.c; sourceTree = "<group>"; };
651CF9E7120B5D8300EEFD70 /* pios_usb_hid_prop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_prop.c; sourceTree = "<group>"; };
651CF9E8120B5D8300EEFD70 /* pios_usb_hid_pwr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_pwr.c; sourceTree = "<group>"; };
651CF9EF120B700D00EEFD70 /* pios_usb_hid_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_desc.h; sourceTree = "<group>"; };
651CF9F0120B700D00EEFD70 /* pios_usb_hid_istr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_istr.h; sourceTree = "<group>"; };
@ -123,10 +121,8 @@
65904E54146128A500FD9482 /* op_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_config.h; sourceTree = "<group>"; };
65904E55146128A500FD9482 /* openpilot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = openpilot.h; sourceTree = "<group>"; };
65904E56146128A500FD9482 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = "<group>"; };
65904E57146128A500FD9482 /* taskmonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taskmonitor.h; sourceTree = "<group>"; };
65904E58146128A500FD9482 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = "<group>"; };
65904E59146128A500FD9482 /* revolution.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = revolution.c; sourceTree = "<group>"; };
65904E5A146128A500FD9482 /* taskmonitor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = taskmonitor.c; sourceTree = "<group>"; };
65904E5B146128A500FD9482 /* test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test.c; sourceTree = "<group>"; };
65904E5C146128A500FD9482 /* UAVObjects.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; path = UAVObjects.inc; sourceTree = "<group>"; };
65904E5F14613B6100FD9482 /* pios_i2c_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_i2c_config.h; sourceTree = "<group>"; };
@ -3834,7 +3830,6 @@
65904E50146128A500FD9482 /* inc */,
65904E58146128A500FD9482 /* pios_board.c */,
65904E59146128A500FD9482 /* revolution.c */,
65904E5A146128A500FD9482 /* taskmonitor.c */,
);
path = System;
sourceTree = "<group>";
@ -3848,7 +3843,6 @@
65904E54146128A500FD9482 /* op_config.h */,
65904E55146128A500FD9482 /* openpilot.h */,
65904E56146128A500FD9482 /* pios_config.h */,
65904E57146128A500FD9482 /* taskmonitor.h */,
);
path = inc;
sourceTree = "<group>";
@ -8526,9 +8520,7 @@
65643CB91413456D00A32F59 /* pios_tim.c */,
65E8F0EA11EFF25C00BBF654 /* pios_usart.c */,
65E8F0ED11EFF25C00BBF654 /* pios_usb_hid.c */,
651CF9E5120B5D8300EEFD70 /* pios_usb_hid_desc.c */,
651CF9E6120B5D8300EEFD70 /* pios_usb_hid_istr.c */,
651CF9E7120B5D8300EEFD70 /* pios_usb_hid_prop.c */,
651CF9E8120B5D8300EEFD70 /* pios_usb_hid_pwr.c */,
65003B31121249CA00C183DD /* pios_wdg.c */,
65E8F0EE11EFF25C00BBF654 /* startup_stm32f10x_HD.S */,

View File

@ -51,7 +51,7 @@
#define PIOS_INCLUDE_USART
//#define PIOS_INCLUDE_USB_HID
//#define PIOS_INCLUDE_GPIO
//#define PIOS_INCLUDE_EXTI
#define PIOS_INCLUDE_EXTI
#define PIOS_INCLUDE_RTC
#define PIOS_INCLUDE_WDG

View File

@ -1394,9 +1394,12 @@ uint32_t pios_com_telem_rf_id;
/**
* Sensor configurations
*/
#if defined(PIOS_INCLUDE_HMC5883)
#include "pios_hmc5883.h"
static const struct pios_hmc5883_cfg pios_hmc5883_cfg = {
.drdy = {
static const struct pios_exti_cfg pios_exti_hmc5883_cfg __exti_config = {
.vector = PIOS_HMC5883_IRQHandler,
.line = EXTI_Line5,
.pin = {
.gpio = GPIOB,
.init = {
.GPIO_Pin = GPIO_Pin_5,
@ -1406,17 +1409,7 @@ static const struct pios_hmc5883_cfg pios_hmc5883_cfg = {
.GPIO_PuPd = GPIO_PuPd_NOPULL,
},
},
.eoc_exti = {
.pin_source = EXTI_PinSource5,
.port_source = EXTI_PortSourceGPIOB,
.init = {
.EXTI_Line = EXTI_Line5, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
.eoc_irq = {
.irq = {
.init = {
.NVIC_IRQChannel = EXTI9_5_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
@ -1424,21 +1417,45 @@ static const struct pios_hmc5883_cfg pios_hmc5883_cfg = {
.NVIC_IRQChannelCmd = ENABLE,
},
},
.exti = {
.init = {
.EXTI_Line = EXTI_Line5, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
};
static const struct pios_hmc5883_cfg pios_hmc5883_cfg = {
.exti_cfg = &pios_exti_hmc5883_cfg,
.M_ODR = PIOS_HMC5883_ODR_75,
.Meas_Conf = PIOS_HMC5883_MEASCONF_NORMAL,
.Gain = PIOS_HMC5883_GAIN_1_9,
.Mode = PIOS_HMC5883_MODE_CONTINUOUS,
};
#endif /* PIOS_INCLUDE_HMC5883 */
/**
* Configuration for the MS5611 chip
*/
#if defined(PIOS_INCLUDE_MS5611)
#include "pios_ms5611.h"
static const struct pios_ms5611_cfg pios_ms5611_cfg = {
.oversampling = 1,
};
#endif /* PIOS_INCLUDE_MS5611 */
/**
* Configuration for the BMA180 chip
*/
#if defined(PIOS_INCLUDE_BMA180)
#include "pios_bma180.h"
static const struct pios_bma180_cfg pios_bma180_cfg = {
.drdy = {
static const struct pios_exti_cfg pios_exti_bma180_cfg __exti_config = {
.vector = PIOS_BMA180_IRQHandler,
.line = EXTI_Line4,
.pin = {
.gpio = GPIOC,
.init = {
.GPIO_Pin = GPIO_Pin_4,
@ -1448,17 +1465,7 @@ static const struct pios_bma180_cfg pios_bma180_cfg = {
.GPIO_PuPd = GPIO_PuPd_NOPULL,
},
},
.eoc_exti = {
.pin_source = EXTI_PinSource4,
.port_source = EXTI_PortSourceGPIOC,
.init = {
.EXTI_Line = EXTI_Line4, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
.eoc_irq = {
.irq = {
.init = {
.NVIC_IRQChannel = EXTI4_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
@ -1466,11 +1473,29 @@ static const struct pios_bma180_cfg pios_bma180_cfg = {
.NVIC_IRQChannelCmd = ENABLE,
},
},
.exti = {
.init = {
.EXTI_Line = EXTI_Line4, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
};
static const struct pios_bma180_cfg pios_bma180_cfg = {
.exti_cfg = &pios_exti_bma180_cfg,
};
#endif /* PIOS_INCLUDE_BMA180 */
/**
* Configuration for the MPU6000 chip
*/
#if defined(PIOS_INCLUDE_MPU6000)
#include "pios_mpu6000.h"
static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
.drdy = {
static const struct pios_exti_cfg pios_exti_mpu6000_cfg __exti_config = {
.vector = PIOS_MPU6000_IRQHandler,
.line = EXTI_Line8,
.pin = {
.gpio = GPIOD,
.init = {
.GPIO_Pin = GPIO_Pin_8,
@ -1480,17 +1505,7 @@ static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
.GPIO_PuPd = GPIO_PuPd_NOPULL,
},
},
.eoc_exti = {
.pin_source = EXTI_PinSource8,
.port_source = EXTI_PortSourceGPIOD,
.init = {
.EXTI_Line = EXTI_Line8, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
.eoc_irq = {
.irq = {
.init = {
.NVIC_IRQChannel = EXTI9_5_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -1498,6 +1513,18 @@ static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
.NVIC_IRQChannelCmd = ENABLE,
},
},
.exti = {
.init = {
.EXTI_Line = EXTI_Line8, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
};
static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
.exti_cfg = &pios_exti_mpu6000_cfg,
.Fifo_store = PIOS_MPU6000_FIFO_TEMP_OUT | PIOS_MPU6000_FIFO_GYRO_X_OUT | PIOS_MPU6000_FIFO_GYRO_Y_OUT | PIOS_MPU6000_FIFO_GYRO_Z_OUT,
// Clock at 8 khz, downsampled by 8 for 1khz
.Smpl_rate_div = 7,
@ -1508,10 +1535,16 @@ static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
.gyro_range = PIOS_MPU6000_SCALE_500_DEG,
.filter = PIOS_MPU6000_LOWPASS_256_HZ
};
#endif /* PIOS_INCLUDE_MPU6000 */
/**
* Configuration for L3GD20 chip
*/
#if defined(PIOS_INCLUDE_L3GD20)
#include "pios_l3gd20.h"
static const struct pios_l3gd20_cfg pios_l3gd20_cfg = {
.drdy = {
static const struct pios_exti_cfg pios_exti_l3gd20_cfg __exti_config = {
.vector = PIOS_L3GD20_IRQHandler,
.line = EXTI_Line8,
.pin = {
.gpio = GPIOD,
.init = {
.GPIO_Pin = GPIO_Pin_8,
@ -1521,17 +1554,7 @@ static const struct pios_l3gd20_cfg pios_l3gd20_cfg = {
.GPIO_PuPd = GPIO_PuPd_NOPULL,
},
},
.eoc_exti = {
.pin_source = EXTI_PinSource8,
.port_source = EXTI_PortSourceGPIOD,
.init = {
.EXTI_Line = EXTI_Line8, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
.eoc_irq = {
.irq = {
.init = {
.NVIC_IRQChannel = EXTI9_5_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -1539,8 +1562,21 @@ static const struct pios_l3gd20_cfg pios_l3gd20_cfg = {
.NVIC_IRQChannelCmd = ENABLE,
},
},
.exti = {
.init = {
.EXTI_Line = EXTI_Line8, // matches above GPIO pin
.EXTI_Mode = EXTI_Mode_Interrupt,
.EXTI_Trigger = EXTI_Trigger_Rising,
.EXTI_LineCmd = ENABLE,
},
},
};
static const struct pios_l3gd20_cfg pios_l3gd20_cfg = {
.exti_cfg = &pios_exti_l3gd20_cfg,
.gyro_range = PIOS_L3GD20_SCALE_500_DEG,
};
#endif /* PIOS_INCLUDE_L3GD20 */
/**
* PIOS_Board_Init()