diff --git a/flight/OpenPilot/System/inc/pios_board.h b/flight/OpenPilot/System/inc/pios_board.h index 187041d3b..ddbfdec3d 100644 --- a/flight/OpenPilot/System/inc/pios_board.h +++ b/flight/OpenPilot/System/inc/pios_board.h @@ -31,18 +31,18 @@ //------------------------ // DMA Channels Used //------------------------ -/* Channel 1 - */ -/* Channel 2 - SPI1 RX */ -/* Channel 3 - SPI1 TX */ -/* Channel 4 - SPI2 RX */ -/* Channel 5 - SPI2 TX */ -/* Channel 6 - */ -/* Channel 7 - */ -/* Channel 8 - */ -/* Channel 9 - */ -/* Channel 10 - */ -/* Channel 11 - */ -/* Channel 12 - */ +/* Channel 1 - */ +/* Channel 2 - SPI1 RX */ +/* Channel 3 - SPI1 TX */ +/* Channel 4 - SPI2 RX */ +/* Channel 5 - SPI2 TX */ +/* Channel 6 - */ +/* Channel 7 - */ +/* Channel 8 - */ +/* Channel 9 - */ +/* Channel 10 - */ +/* Channel 11 - */ +/* Channel 12 - */ //------------------------ // PIOS_LED @@ -53,19 +53,19 @@ #define PIOS_LED_LED2_GPIO_PORT GPIOC #define PIOS_LED_LED2_GPIO_PIN GPIO_Pin_13 #define PIOS_LED_LED2_GPIO_CLK RCC_APB2Periph_GPIOC -#define PIOS_LED_NUM 2 -#define PIOS_LED_PORTS { PIOS_LED_LED1_GPIO_PORT, PIOS_LED_LED2_GPIO_PORT } -#define PIOS_LED_PINS { PIOS_LED_LED1_GPIO_PIN, PIOS_LED_LED2_GPIO_PIN } -#define PIOS_LED_CLKS { PIOS_LED_LED1_GPIO_CLK, PIOS_LED_LED2_GPIO_CLK } +#define PIOS_LED_NUM 2 +#define PIOS_LED_PORTS { PIOS_LED_LED1_GPIO_PORT, PIOS_LED_LED2_GPIO_PORT } +#define PIOS_LED_PINS { PIOS_LED_LED1_GPIO_PIN, PIOS_LED_LED2_GPIO_PIN } +#define PIOS_LED_CLKS { PIOS_LED_LED1_GPIO_CLK, PIOS_LED_LED2_GPIO_CLK } //------------------------ // PIOS_I2C //------------------------ -#define PIOS_I2C_GPIO_PORT GPIOB -#define PIOS_I2C_SDA_PIN GPIO_Pin_11 -#define PIOS_I2C_SCL_PIN GPIO_Pin_10 -#define PIOS_I2C_DUTY_CYCLE I2C_DutyCycle_2 -#define PIOS_I2C_BUS_FREQ 400000 +#define PIOS_I2C_GPIO_PORT GPIOB +#define PIOS_I2C_SDA_PIN GPIO_Pin_11 +#define PIOS_I2C_SCL_PIN GPIO_Pin_10 +#define PIOS_I2C_DUTY_CYCLE I2C_DutyCycle_2 +#define PIOS_I2C_BUS_FREQ 400000 #define PIOS_I2C_TIMEOUT_VALUE 5000 #define PIOS_I2C_IRQ_EV_PRIORITY 2 #define PIOS_I2C_IRQ_ER_PRIORITY 2 @@ -77,18 +77,18 @@ #define PIOS_BMP085_EOC_GPIO_PIN GPIO_Pin_15 #define PIOS_BMP085_EOC_PORT_SOURCE GPIO_PortSourceGPIOG #define PIOS_BMP085_EOC_PIN_SOURCE GPIO_PinSource8 -#define PIOS_BMP085_EOC_CLK RCC_APB2Periph_GPIOC +#define PIOS_BMP085_EOC_CLK RCC_APB2Periph_GPIOC #define PIOS_BMP085_EOC_EXTI_LINE EXTI_Line15 #define PIOS_BMP085_EOC_IRQn EXTI15_10_IRQn //------------------------- // PIOS_USART1 (TELEM) //------------------------- -#define PIOS_USART1_ENABLED 1 -#define PIOS_USART1_USART USART2 +#define PIOS_USART1_ENABLED 1 +#define PIOS_USART1_USART USART2 #define PIOS_USART1_GPIO_PORT GPIOA -#define PIOS_USART1_RX_PIN GPIO_Pin_3 -#define PIOS_USART1_TX_PIN GPIO_Pin_2 +#define PIOS_USART1_RX_PIN GPIO_Pin_3 +#define PIOS_USART1_TX_PIN GPIO_Pin_2 #define PIOS_USART1_REMAP_FUNC { } #define PIOS_USART1_IRQ_CHANNEL USART2_IRQn #define PIOS_USART1_IRQHANDLER_FUNC void USART2_IRQHandler(void) @@ -114,11 +114,11 @@ //------------------------- // PIOS_USART3 (AUX) (RX5/RX6) //------------------------- -#define PIOS_USART3_ENABLED 0 -#define PIOS_USART3_USART USART1 +#define PIOS_USART3_ENABLED 0 +#define PIOS_USART3_USART USART1 #define PIOS_USART3_GPIO_PORT GPIOA -#define PIOS_USART3_RX_PIN GPIO_Pin_10 -#define PIOS_USART3_TX_PIN GPIO_Pin_9 +#define PIOS_USART3_RX_PIN GPIO_Pin_10 +#define PIOS_USART3_TX_PIN GPIO_Pin_9 #define PIOS_USART3_REMAP_FUNC { } #define PIOS_USART3_IRQ_CHANNEL USART1_IRQn #define PIOS_USART3_IRQHANDLER_FUNC void USART1_IRQHandler(void) @@ -129,108 +129,108 @@ //------------------------- // PIOS_USART //------------------------- -#define PIOS_USART_NUM 3 +#define PIOS_USART_NUM 3 #define PIOS_USART_RX_BUFFER_SIZE 1024 #define PIOS_USART_TX_BUFFER_SIZE 256 -#define PIOS_COM_DEBUG_PORT GPS +#define PIOS_COM_DEBUG_PORT GPS //------------------------- // SPI //------------------------- #define PIOS_SPI_IRQ_DMA_PRIORITY PIOS_IRQ_PRIO_HIGH -#define PIOS_SPI_NUM 2 -#define PIOS_SPI0_ENABLED 1 -#define PIOS_SPI0_PTR SPI1 +#define PIOS_SPI_NUM 2 +#define PIOS_SPI0_ENABLED 1 +#define PIOS_SPI0_PTR SPI1 #define PIOS_SPI0_DMA_RX_PTR DMA1_Channel2 #define PIOS_SPI0_DMA_TX_PTR DMA1_Channel3 #define PIOS_SPI0_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2) #define PIOS_SPI0_DMA_IRQ_CHANNEL DMA1_Channel2_IRQn -#define PIOS_SPI0_DMA_IRQHANDLER_FUNC void DMA1_Channel2_IRQHandler(void) +#define PIOS_SPI0_DMA_IRQHANDLER_FUNC void DMA1_Channel2_IRQHandler(void) #define PIOS_SPI0_RCLK1_PORT GPIOA -#define PIOS_SPI0_RCLK1_PIN GPIO_Pin_4 -#define PIOS_SPI0_SCLK_PORT GPIOA -#define PIOS_SPI0_SCLK_PIN GPIO_Pin_5 -#define PIOS_SPI0_MISO_PORT GPIOA -#define PIOS_SPI0_MISO_PIN GPIO_Pin_6 -#define PIOS_SPI0_MOSI_PORT GPIOA -#define PIOS_SPI0_MOSI_PIN GPIO_Pin_7 -#define PIOS_SPI1_ENABLED 1 -#define PIOS_SPI1_PTR SPI2 +#define PIOS_SPI0_RCLK1_PIN GPIO_Pin_4 +#define PIOS_SPI0_SCLK_PORT GPIOA +#define PIOS_SPI0_SCLK_PIN GPIO_Pin_5 +#define PIOS_SPI0_MISO_PORT GPIOA +#define PIOS_SPI0_MISO_PIN GPIO_Pin_6 +#define PIOS_SPI0_MOSI_PORT GPIOA +#define PIOS_SPI0_MOSI_PIN GPIO_Pin_7 +#define PIOS_SPI1_ENABLED 1 +#define PIOS_SPI1_PTR SPI2 #define PIOS_SPI1_DMA_RX_PTR DMA1_Channel4 #define PIOS_SPI1_DMA_TX_PTR DMA1_Channel5 #define PIOS_SPI1_DMA_RX_IRQ_FLAGS (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4) #define PIOS_SPI1_DMA_IRQ_CHANNEL DMA1_Channel4_IRQn -#define PIOS_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Channel4_IRQHandler(void) +#define PIOS_SPI1_DMA_IRQHANDLER_FUNC void DMA1_Channel4_IRQHandler(void) #define PIOS_SPI1_RCLK1_PORT GPIOB -#define PIOS_SPI1_RCLK1_PIN GPIO_Pin_12 -#define PIOS_SPI1_SCLK_PORT GPIOB -#define PIOS_SPI1_SCLK_PIN GPIO_Pin_13 -#define PIOS_SPI1_MISO_PORT GPIOB -#define PIOS_SPI1_MISO_PIN GPIO_Pin_14 -#define PIOS_SPI1_MOSI_PORT GPIOB -#define PIOS_SPI1_MOSI_PIN GPIO_Pin_15 +#define PIOS_SPI1_RCLK1_PIN GPIO_Pin_12 +#define PIOS_SPI1_SCLK_PORT GPIOB +#define PIOS_SPI1_SCLK_PIN GPIO_Pin_13 +#define PIOS_SPI1_MISO_PORT GPIOB +#define PIOS_SPI1_MISO_PIN GPIO_Pin_14 +#define PIOS_SPI1_MOSI_PORT GPIOB +#define PIOS_SPI1_MOSI_PIN GPIO_Pin_15 //------------------------- // PIOS_SDCARD //------------------------- -#define PIOS_SDCARD_SPI 0 +#define PIOS_SDCARD_SPI 0 //------------------------- // Delay Timer //------------------------- -#define PIOS_DELAY_TIMER TIM2 +#define PIOS_DELAY_TIMER TIM2 #define PIOS_DELAY_TIMER_RCC RCC_APB1Periph_TIM2 //------------------------- // Master Clock //------------------------- -#define PIOS_MASTER_CLOCK 72000000 +#define PIOS_MASTER_CLOCK 72000000 #define PIOS_PERIPHERAL_CLOCK (PIOS_MASTER_CLOCK / 2) //------------------------- // Interrupt Priorities //------------------------- -#define PIOS_IRQ_PRIO_LOW 12 // lower than RTOS -#define PIOS_IRQ_PRIO_MID 8 // higher than RTOS -#define PIOS_IRQ_PRIO_HIGH 5 // for SPI, ADC, I2C etc... +#define PIOS_IRQ_PRIO_LOW 12 // lower than RTOS +#define PIOS_IRQ_PRIO_MID 8 // higher than RTOS +#define PIOS_IRQ_PRIO_HIGH 5 // for SPI, ADC, I2C etc... #define PIOS_IRQ_PRIO_HIGHEST 4 // for USART etc... //------------------------- // Receiver PWM inputs //------------------------- -#define RECEIVER1_GPIO_PORT GPIOB -#define RECEIVER1_PIN GPIO_Pin_0 // PB0 -#define RECEIVER1_TIM_PORT TIM3 -#define RECEIVER1_CH TIM_Channel_3 // TIM3_CH3 -#define RECEIVER2_GPIO_PORT GPIOB -#define RECEIVER2_PIN GPIO_Pin_1 // PB1 -#define RECEIVER2_TIM_PORT TIM3 -#define RECEIVER2_CH TIM_Channel_4 // TIM3_CH4 -#define RECEIVER3_GPIO_PORT GPIOA -#define RECEIVER3_PIN GPIO_Pin_8 // PA8 -#define RECEIVER3_TIM_PORT TIM1 -#define RECEIVER3_CH TIM_Channel_1 // TIM1_CH1 -#define RECEIVER4_GPIO_PORT GPIOA -#define RECEIVER4_PIN GPIO_Pin_0 // PA0 -#define RECEIVER4_TIM_PORT TIM5 -#define RECEIVER4_CH TIM_Channel_1 // TIM5_CH1 -#define RECEIVER5_GPIO_PORT GPIOA -#define RECEIVER5_PIN GPIO_Pin_10 // PA10 -#define RECEIVER5_TIM_PORT TIM1 -#define RECEIVER5_CH TIM_Channel_3 // TIM1_CH3 -#define RECEIVER6_GPIO_PORT GPIOA -#define RECEIVER6_PIN GPIO_Pin_9 // PA9 -#define RECEIVER6_TIM_PORT TIM1 -#define RECEIVER6_CH TIM_Channel_2 // TIM1_CH2 -#define RECEIVER7_GPIO_PORT GPIOB -#define RECEIVER7_PIN GPIO_Pin_4 // PB4 -#define RECEIVER7_TIM_PORT TIM3 -#define RECEIVER7_CH TIM_Channel_1 // TIM3_CH1 -#define RECEIVER8_GPIO_PORT GPIOB -#define RECEIVER8_PIN GPIO_Pin_5 // PB5 -#define RECEIVER8_TIM_PORT TIM3 -#define RECEIVER8_CH TIM_Channel_2 // TIM3_CH2 -#define NUM_RECEIVER_INPUTS 6 +#define RECEIVER1_GPIO_PORT GPIOB +#define RECEIVER1_PIN GPIO_Pin_0 // PB0 +#define RECEIVER1_TIM_PORT TIM3 +#define RECEIVER1_CH TIM_Channel_3 // TIM3_CH3 +#define RECEIVER2_GPIO_PORT GPIOB +#define RECEIVER2_PIN GPIO_Pin_1 // PB1 +#define RECEIVER2_TIM_PORT TIM3 +#define RECEIVER2_CH TIM_Channel_4 // TIM3_CH4 +#define RECEIVER3_GPIO_PORT GPIOA +#define RECEIVER3_PIN GPIO_Pin_8 // PA8 +#define RECEIVER3_TIM_PORT TIM1 +#define RECEIVER3_CH TIM_Channel_1 // TIM1_CH1 +#define RECEIVER4_GPIO_PORT GPIOA +#define RECEIVER4_PIN GPIO_Pin_0 // PA0 +#define RECEIVER4_TIM_PORT TIM5 +#define RECEIVER4_CH TIM_Channel_1 // TIM5_CH1 +#define RECEIVER5_GPIO_PORT GPIOA +#define RECEIVER5_PIN GPIO_Pin_10 // PA10 +#define RECEIVER5_TIM_PORT TIM1 +#define RECEIVER5_CH TIM_Channel_3 // TIM1_CH3 +#define RECEIVER6_GPIO_PORT GPIOA +#define RECEIVER6_PIN GPIO_Pin_9 // PA9 +#define RECEIVER6_TIM_PORT TIM1 +#define RECEIVER6_CH TIM_Channel_2 // TIM1_CH2 +#define RECEIVER7_GPIO_PORT GPIOB +#define RECEIVER7_PIN GPIO_Pin_4 // PB4 +#define RECEIVER7_TIM_PORT TIM3 +#define RECEIVER7_CH TIM_Channel_1 // TIM3_CH1 +#define RECEIVER8_GPIO_PORT GPIOB +#define RECEIVER8_PIN GPIO_Pin_5 // PB5 +#define RECEIVER8_TIM_PORT TIM3 +#define RECEIVER8_CH TIM_Channel_2 // TIM3_CH2 +#define NUM_RECEIVER_INPUTS 8 //------------------------- // Servo outputs @@ -248,25 +248,25 @@ #define PIOS_SERVO_NUM_OUTPUTS 8 #define PIOS_SERVO_NUM_TIMERS PIOS_SERVO_NUM_OUTPUTS #define PIOS_SERVO_UPDATE_HZ 50 -#define PIOS_SERVOS_INITIAL_POSITION 1500 +#define PIOS_SERVOS_INITIAL_POSITION 1500 //------------------------- // ADC //------------------------- -#define ADC_GPIO_PORT GPIOC -#define ADC_Z_PIN GPIO_Pin_0 // ADC123_IN10 -#define ADC_A_PIN GPIO_Pin_1 // ADC123_IN11 -#define ADC_B_PIN GPIO_Pin_2 // ADC123_IN12 -#define ADC_Z_CHANNEL ADC_Channel_10 -#define ADC_A_CHANNEL ADC_Channel_11 -#define ADC_B_CHANNEL ADC_Channel_12 -#define NUM_ADC_PINS 4 // 3 but actually 4 because of temp sensor -#define ADC_IRQ_PRIO PIOS_IRQ_PRIO_HIGH +#define ADC_GPIO_PORT GPIOC +#define ADC_Z_PIN GPIO_Pin_0 // ADC123_IN10 +#define ADC_A_PIN GPIO_Pin_1 // ADC123_IN11 +#define ADC_B_PIN GPIO_Pin_2 // ADC123_IN12 +#define ADC_Z_CHANNEL ADC_Channel_10 +#define ADC_A_CHANNEL ADC_Channel_11 +#define ADC_B_CHANNEL ADC_Channel_12 +#define NUM_ADC_PINS 4 // 3 but actually 4 because of temp sensor +#define ADC_IRQ_PRIO PIOS_IRQ_PRIO_HIGH //------------------------- // USB //------------------------- -#define PIOS_USB_ENABLED 1 +#define PIOS_USB_ENABLED 1 #define PIOS_USB_DETECT_GPIO_PORT GPIOC #define PIOS_USB_DETECT_GPIO_PIN GPIO_Pin_4 #define PIOS_IRQ_USB_PRIORITY PIOS_IRQ_PRIO_MID diff --git a/flight/PiOS/STM32F10x/pios_servo.c b/flight/PiOS/STM32F10x/pios_servo.c index eb8e531d0..099c63c87 100644 --- a/flight/PiOS/STM32F10x/pios_servo.c +++ b/flight/PiOS/STM32F10x/pios_servo.c @@ -122,6 +122,7 @@ void PIOS_Servo_SetHz(uint16_t onetofour, uint16_t fivetoeight) TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; + #if 0 /* Clipping */ if(onetofour > 500) { onetofour = 500; @@ -129,6 +130,7 @@ void PIOS_Servo_SetHz(uint16_t onetofour, uint16_t fivetoeight) if(fivetoeight > 500) { fivetoeight = 500; } + #endif TIM_TimeBaseStructure.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1; TIM_TimeBaseStructure.TIM_Period = ((1000000 / onetofour) - 1); @@ -141,53 +143,53 @@ void PIOS_Servo_SetHz(uint16_t onetofour, uint16_t fivetoeight) /** * Set servo position -* \param[in] Servo Servo number (0-7) +* \param[in] Servo Servo number (1-8) * \param[in] Position Servo position in milliseconds */ void PIOS_Servo_Set(uint8_t Servo, uint16_t Position) { - /* Make sure servo exists */ - if (Servo < PIOS_SERVO_NUM_OUTPUTS && Servo >= 0) - { - /* Clip servo position */ - if(Position < Settings.Servos.PositionMin) { - Position = Settings.Servos.PositionMin; - } - if(Position > Settings.Servos.PositionMax) { - Position = Settings.Servos.PositionMax; - } - - /* Update the position */ - ServoPosition[Servo] = Position; - - switch(Servo) - { - case 0: + /* Make sure servo exists */ + if (Servo < PIOS_SERVO_NUM_OUTPUTS && Servo >= 0) + { + /* Clip servo position */ + if(Position < Settings.Servos.PositionMin) { + Position = Settings.Servos.PositionMin; + } + if(Position > Settings.Servos.PositionMax) { + Position = Settings.Servos.PositionMax; + } + + /* Update the position */ + ServoPosition[Servo] = Position; + + switch(Servo) + { + case 1: TIM_SetCompare1(TIM4, Position); break; - case 1: + case 2: TIM_SetCompare2(TIM4, Position); break; - case 2: + case 3: TIM_SetCompare3(TIM4, Position); break; - case 3: + case 4: TIM_SetCompare4(TIM4, Position); break; - case 4: + case 5: TIM_SetCompare1(TIM8, Position); break; - case 5: + case 6: TIM_SetCompare2(TIM8, Position); break; - case 6: + case 7: TIM_SetCompare3(TIM8, Position); break; - case 7: + case 8: TIM_SetCompare4(TIM8, Position); break; - } - } + } + } } #endif