1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

Cleanup Softserial/LedStrip timer clash checking. Move definitions of

led strip timer and softserial pwm ports/timers into target specific
files.
This commit is contained in:
Dominic Clifton 2014-10-20 20:57:16 +01:00
parent f9f6b05aac
commit 2d8f65448d
12 changed files with 64 additions and 60 deletions

View file

@ -511,9 +511,21 @@ void validateAndFixConfig(void)
}
#if defined(STM32F10X)
// led strip needs the same timer as softserial
if (feature(FEATURE_SOFTSERIAL)) {
#if defined(LED_STRIP) && (defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2))
if (feature(FEATURE_SOFTSERIAL) && (
#ifdef USE_SOFTSERIAL1
(LED_STRIP_TIMER == SOFTSERIAL_1_TIMER)
#else
0
#endif
||
#ifdef USE_SOFTSERIAL2
(LED_STRIP_TIMER == SOFTSERIAL_2_TIMER)
#else
0
#endif
)) {
// led strip needs the same timer as softserial
featureClear(FEATURE_LED_STRIP);
}
#endif

View file

@ -283,43 +283,15 @@ pwmOutputConfiguration_t *pwmInit(drv_pwm_config_t *init)
continue;
#endif
#ifdef CC3D
// skip SoftSerial port
if (init->useSoftSerial && (timerIndex == PWM3 || timerIndex == PWM4))
continue;
else
#ifdef STM32F10X
// skip softSerial ports
if (init->useSoftSerial && (timerIndex == PWM5 || timerIndex == PWM6 || timerIndex == PWM7 || timerIndex == PWM8))
#ifdef SOFTSERIAL1_TIMER
if (init->useSoftSerial && timerHardwarePtr->tim == SOFTSERIAL1_TIMER)
continue;
#endif
#endif
#ifdef CHEBUZZF3
// skip softSerial ports
// PWM4 can no-longer be used since it uses the same timer as PWM5 and PWM6
if (init->useSoftSerial && (timerIndex == PWM4 || timerIndex == PWM5 || timerIndex == PWM6 || timerIndex == PWM7 || timerIndex == PWM8))
#ifdef SOFTSERIAL2_TIMER
if (init->useSoftSerial && timerHardwarePtr->tim == SOFTSERIAL2_TIMER)
continue;
#endif
#if defined(STM32F3DISCOVERY) && !defined(CHEBUZZF3)
// skip softSerial ports
if (init->useSoftSerial && (timerIndex == PWM9 || timerIndex == PWM10 || timerIndex == PWM11 || timerIndex == PWM12))
continue;
#endif
#if defined(STM32F10X) && !defined(CC3D)
#define LED_STRIP_TIMER TIM3
#endif
#if defined(CC3D)
#define LED_STRIP_TIMER TIM3
#endif
#if defined(STM32F303)
#define LED_STRIP_TIMER TIM16
#endif
#ifdef LED_STRIP_TIMER
// skip LED Strip output
if (init->useLEDStrip && timerHardwarePtr->tim == LED_STRIP_TIMER)

View file

@ -32,30 +32,15 @@
#include "serial.h"
#include "serial_softserial.h"
#if defined(CC3D)
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 3 // PWM 4
#else
#if defined(STM32F10X) || defined(CHEBUZZF3)
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
#endif
#if defined(STM32F303) && !defined(CHEBUZZF3)
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 8 // PWM 9
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 9 // PWM 10
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 10 // PWM 11
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 11 // PWM 12
#endif
#endif
#define RX_TOTAL_BITS 10
#define TX_TOTAL_BITS 10
#if defined(USE_SOFTSERIAL1) && defined(USE_SOFTSERIAL2)
#define MAX_SOFTSERIAL_PORTS 2
#else
#define MAX_SOFTSERIAL_PORTS 1
#endif
softSerial_t softSerialPorts[MAX_SOFTSERIAL_PORTS];
void onSerialTimer(uint8_t portIndex, captureCompare_t capture);

View file

@ -99,8 +99,8 @@ static const TIM_TypeDef const *timers[MAX_TIMERS] = {
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
{ TIM4, GPIOB, Pin_6, TIM_Channel_1, TIM4_IRQn, 0, Mode_IPD}, // S1_IN
{ TIM3, GPIOB, Pin_5, TIM_Channel_2, TIM3_IRQn, 0, Mode_IPD}, // S2_IN - GPIO_PartialRemap_TIM3
{ TIM3, GPIOB, Pin_0, TIM_Channel_3, TIM3_IRQn, 0, Mode_IPD}, // S3_IN
{ TIM3, GPIOB, Pin_1, TIM_Channel_4, TIM3_IRQn, 0, Mode_IPD}, // S4_IN
{ TIM3, GPIOB, Pin_0, TIM_Channel_3, TIM3_IRQn, 0, Mode_IPD}, // S3_IN - SoftSerial RX
{ TIM3, GPIOB, Pin_1, TIM_Channel_4, TIM3_IRQn, 0, Mode_IPD}, // S4_IN - SoftSerial TX
{ TIM2, GPIOA, Pin_0, TIM_Channel_1, TIM2_IRQn, 0, Mode_IPD}, // S5_IN
{ TIM2, GPIOA, Pin_1, TIM_Channel_2, TIM2_IRQn, 0, Mode_IPD}, // S6_IN
@ -108,7 +108,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
{ TIM4, GPIOB, Pin_8, TIM_Channel_3, TIM4_IRQn, 1, GPIO_Mode_AF_PP}, // S2_OUT
{ TIM4, GPIOB, Pin_7, TIM_Channel_2, TIM4_IRQn, 1, GPIO_Mode_AF_PP}, // S3_OUT
{ TIM1, GPIOA, Pin_8, TIM_Channel_1, TIM1_CC_IRQn, 1, GPIO_Mode_AF_PP}, // S4_OUT
{ TIM3, GPIOB, Pin_4, TIM_Channel_1, TIM3_IRQn, 1, GPIO_Mode_AF_PP}, // S5_OUT - GPIO_PartialRemap_TIM3
{ TIM3, GPIOB, Pin_4, TIM_Channel_1, TIM3_IRQn, 1, GPIO_Mode_AF_PP}, // S5_OUT - GPIO_PartialRemap_TIM3 - LED Strip
{ TIM2, GPIOA, Pin_2, TIM_Channel_3, TIM2_IRQn, 1, GPIO_Mode_AF_PP}, // S6_OUT
};

View file

@ -49,6 +49,11 @@
#define USE_SOFTSERIAL1
#define SERIAL_PORT_COUNT 3
#define SOFTSERIAL_1_TIMER TIM3
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 3 // PWM 4
#define USART3_RX_PIN Pin_11
#define USART3_TX_PIN Pin_10
#define USART3_GPIO GPIOB
@ -66,6 +71,8 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM3
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -55,6 +55,8 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM16
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -60,6 +60,13 @@
#define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT 4
#define SOFTSERIAL_1_TIMER TIM3
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
#define SOFTSERIAL_2_TIMER TIM3
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
#define USE_I2C
#define I2C_DEVICE (I2CDEV_2)
@ -71,6 +78,8 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM3
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -56,7 +56,6 @@
#define SENSORS_SET (SENSOR_ACC)
#define GPS
#define LED_STRIP
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -86,6 +86,13 @@
#define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT 4
#define SOFTSERIAL_1_TIMER TIM3
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
#define SOFTSERIAL_2_TIMER TIM3
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
#define USE_I2C
#define I2C_DEVICE (I2CDEV_2)
@ -103,6 +110,8 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM3
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -43,7 +43,6 @@
#define SENSORS_SET (SENSOR_ACC)
#define GPS
#define LED_STRIP
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -71,6 +71,13 @@
#define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT 4
#define SOFTSERIAL_1_TIMER TIM3
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
#define SOFTSERIAL_2_TIMER TIM3
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
#define USE_I2C
#define I2C_DEVICE (I2CDEV_2)
@ -82,6 +89,8 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM3
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE

View file

@ -58,6 +58,7 @@
#define GPS
#define LED_STRIP
#define LED_STRIP_TIMER TIM16
#define TELEMETRY
#define SERIAL_RX
#define AUTOTUNE