From 0cb6b13d3364c8db533b30426731ad8d8d7d4f60 Mon Sep 17 00:00:00 2001 From: James Cotton Date: Mon, 23 Jan 2012 23:45:40 -0600 Subject: [PATCH] Add BMA180 to CopterControl 3D. Had to reduce the stack space by 256 bytes. Some can be reclaimed by making the BMA180 allocate its fifo dynamically but I'll do that later when it uses FreeRTOS queues for the FIFO. --- flight/CopterControl/Makefile | 1 + .../CopterControl/System/inc/FreeRTOSConfig.h | 2 +- flight/CopterControl/System/inc/pios_config.h | 1 + flight/CopterControl/System/pios_board.c | 43 ++++++++++++++++++- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/flight/CopterControl/Makefile b/flight/CopterControl/Makefile index ece021e1d..67acbaede 100644 --- a/flight/CopterControl/Makefile +++ b/flight/CopterControl/Makefile @@ -226,6 +226,7 @@ SRC += $(PIOSCOMMON)/pios_flashfs_objlist.c SRC += $(PIOSCOMMON)/pios_flash_w25x.c SRC += $(PIOSCOMMON)/pios_adxl345.c SRC += $(PIOSCOMMON)/pios_l3gd20.c +SRC += $(PIOSCOMMON)/pios_bma180.c SRC += $(PIOSCOMMON)/pios_com.c SRC += $(PIOSCOMMON)/pios_i2c_esc.c SRC += $(PIOSCOMMON)/pios_bmp085.c diff --git a/flight/CopterControl/System/inc/FreeRTOSConfig.h b/flight/CopterControl/System/inc/FreeRTOSConfig.h index 68bb9da0e..996726133 100644 --- a/flight/CopterControl/System/inc/FreeRTOSConfig.h +++ b/flight/CopterControl/System/inc/FreeRTOSConfig.h @@ -31,7 +31,7 @@ #define configTICK_RATE_HZ ( ( portTickType ) 1000 ) #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 48 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 54 * 256) ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 53 * 256) ) #define configMAX_TASK_NAME_LEN ( 16 ) #define configUSE_TRACE_FACILITY 0 #define configUSE_16_BIT_TICKS 0 diff --git a/flight/CopterControl/System/inc/pios_config.h b/flight/CopterControl/System/inc/pios_config.h index 53f2d86b9..332421c78 100644 --- a/flight/CopterControl/System/inc/pios_config.h +++ b/flight/CopterControl/System/inc/pios_config.h @@ -75,6 +75,7 @@ #define PIOS_INCLUDE_BL_HELPER #define PIOS_INCLUDE_ADXL345 +#define PIOS_INCLUDE_BMA180 #define PIOS_INCLUDE_L3GD20 #define PIOS_INCLUDE_FLASH diff --git a/flight/CopterControl/System/pios_board.c b/flight/CopterControl/System/pios_board.c index 3ecfb53d4..395809dca 100644 --- a/flight/CopterControl/System/pios_board.c +++ b/flight/CopterControl/System/pios_board.c @@ -1141,6 +1141,44 @@ uint32_t pios_com_vcp_id; uint32_t pios_com_gps_id; uint32_t pios_com_bridge_id; +/** + * Configuration for the BMA180 chip + */ +#if defined(PIOS_INCLUDE_BMA180) +#include "pios_bma180.h" +static const struct pios_exti_cfg pios_exti_bma180_cfg __exti_config = { + .vector = PIOS_BMA180_IRQHandler, + .line = EXTI_Line13, + .pin = { + .gpio = GPIOC, + .init = { + .GPIO_Pin = GPIO_Pin_13, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IPU, + }, + }, + .irq = { + .init = { + .NVIC_IRQChannel = EXTI15_10_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .exti = { + .init = { + .EXTI_Line = EXTI_Line13, // 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 L3GD20 chip */ @@ -1199,7 +1237,6 @@ void PIOS_Board_Init(void) { } PIOS_Flash_W25X_Init(pios_spi_flash_accel_id, 1); - PIOS_ADXL345_Init(pios_spi_flash_accel_id, 0); PIOS_FLASHFS_Init(); @@ -1700,6 +1737,7 @@ void PIOS_Board_Init(void) { if(0) { PIOS_ADC_Init(); + PIOS_ADXL345_Init(pios_spi_flash_accel_id, 0); } else { // Revision 2 with L3GD20 gyros, start a SPI interface and connect to it @@ -1711,6 +1749,9 @@ void PIOS_Board_Init(void) { PIOS_L3GD20_Attach(pios_spi_gyro_id); PIOS_L3GD20_Init(&pios_l3gd20_cfg); + + PIOS_BMA180_Attach(pios_spi_flash_accel_id); + PIOS_BMA180_Init(&pios_bma180_cfg); } break; default: