diff --git a/flight/targets/boards/spracingf3evo/board_hw_defs.c b/flight/targets/boards/spracingf3evo/board_hw_defs.c index 035b3301e..b614f77fb 100644 --- a/flight/targets/boards/spracingf3evo/board_hw_defs.c +++ b/flight/targets/boards/spracingf3evo/board_hw_defs.c @@ -510,46 +510,18 @@ const struct pios_servo_cfg pios_servo_cfg = { #if defined(PIOS_INCLUDE_PPM) #include -static const struct pios_tim_channel pios_tim_ppm_uart[] = { - TIM_SERVO_CHANNEL_CONFIG(TIM2, 4, A, 10), - TIM_SERVO_CHANNEL_CONFIG(TIM8, 1, A, 15), - TIM_SERVO_CHANNEL_CONFIG(TIM2, 4, B, 11) -}; +static const struct pios_tim_channel pios_tim_ppm = TIM_SERVO_CHANNEL_CONFIG(TIM8, 1, A, 15); -const struct pios_ppm_cfg pios_ppm_uart_cfg[] = { - [0] = { - .tim_ic_init = { - .TIM_ICPolarity = TIM_ICPolarity_Rising, - .TIM_ICSelection = TIM_ICSelection_DirectTI, - .TIM_ICPrescaler = TIM_ICPSC_DIV1, - .TIM_ICFilter = 0x0, - }, - /* Use only the first channel for ppm */ - .channels = &pios_tim_ppm_uart[0], - .num_channels = 1, - }, - [1] = { - .tim_ic_init = { - .TIM_ICPolarity = TIM_ICPolarity_Rising, - .TIM_ICSelection = TIM_ICSelection_DirectTI, - .TIM_ICPrescaler = TIM_ICPSC_DIV1, - .TIM_ICFilter = 0x0, - }, - /* Use only the first channel for ppm */ - .channels = &pios_tim_ppm_uart[1], - .num_channels = 1, - }, - [2] = { - .tim_ic_init = { - .TIM_ICPolarity = TIM_ICPolarity_Rising, - .TIM_ICSelection = TIM_ICSelection_DirectTI, - .TIM_ICPrescaler = TIM_ICPSC_DIV1, - .TIM_ICFilter = 0x0, - }, - /* Use only the first channel for ppm */ - .channels = &pios_tim_ppm_uart[2], - .num_channels = 1, +const struct pios_ppm_cfg pios_ppm_cfg = { + .tim_ic_init = { + .TIM_ICPolarity = TIM_ICPolarity_Rising, + .TIM_ICSelection = TIM_ICSelection_DirectTI, + .TIM_ICPrescaler = TIM_ICPSC_DIV1, + .TIM_ICFilter = 0x0, }, + /* Use only the first channel for ppm */ + .channels = &pios_tim_ppm, + .num_channels = 1, }; #endif /* PIOS_INCLUDE_PPM */ diff --git a/flight/targets/boards/spracingf3evo/firmware/pios_board.c b/flight/targets/boards/spracingf3evo/firmware/pios_board.c index af9dfda79..12876fdcd 100644 --- a/flight/targets/boards/spracingf3evo/firmware/pios_board.c +++ b/flight/targets/boards/spracingf3evo/firmware/pios_board.c @@ -214,19 +214,15 @@ void PIOS_Board_Init(void) [HWSPRACINGF3EVOSETTINGS_UARTPORT_MAVLINK] = PIOS_BOARD_IO_UART_MAVLINK, }; - const struct pios_ppm_cfg *ppm_cfg = 0; - for (unsigned int i = 0; i < HWSPRACINGF3EVOSETTINGS_UARTPORT_NUMELEM; ++i) { if(boardHwSettings.UARTPort[i] < NELEMENTS(uart_function_map)) { PIOS_BOARD_IO_Configure_UART(&pios_usart_cfg[i], uart_function_map[boardHwSettings.UARTPort[i]]); - if(boardHwSettings.UARTPort[i] == HWSPRACINGF3EVOSETTINGS_UARTPORT_PPM) { - ppm_cfg = &pios_ppm_uart_cfg[i]; - } } } - if(ppm_cfg) { - PIOS_BOARD_IO_Configure_PPM_RCVR(ppm_cfg); + /* allow PPM on uart2 only, to avoid uart1&3 TIM2_CH4 conflict with output PWMSync, OneShot and MultiShot modes */ + if(boardHwSettings.UARTPort[1] == HWSPRACINGF3EVOSETTINGS_UARTPORT_PPM) { + PIOS_BOARD_IO_Configure_PPM_RCVR(&pios_ppm_cfg); } #ifndef PIOS_ENABLE_DEBUG_PINS diff --git a/shared/uavobjectdefinition/hwspracingf3evosettings.xml b/shared/uavobjectdefinition/hwspracingf3evosettings.xml index 999e74af8..a20fe20e6 100644 --- a/shared/uavobjectdefinition/hwspracingf3evosettings.xml +++ b/shared/uavobjectdefinition/hwspracingf3evosettings.xml @@ -1,7 +1,7 @@ Seriously Pro SPRacingF3 EVO hardware configuration. - +