Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/target/AIKONF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
timerHardware_t timerHardware[] = {
// DEF_TIM(TIM2, CH2, PB3, TIM_USE_CAMERA_CONTROL, 0, 0), // There is not camera control in INAV
DEF_TIM(TIM8, CH1, PC6, TIM_USE_OUTPUT_AUTO, 0, 0), // S1
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0), // S2
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0), // S3
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 1), // S2 -- dmavar 1: dedicated stream, avoids sharing S1's combined-channel request
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 1), // S3 -- dmavar 1: dedicated stream, avoids sharing S1's combined-channel request
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S4
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S5
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S6
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/AIKONF7/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ timerHardware_t timerHardware[] = {

DEF_TIM(TIM4, CH1, PB6, TIM_USE_OUTPUT_AUTO, 0, 0),

DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0),
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0), // Clash with TIM3_CH3, DSHOT does not work
//DEF_TIM(TIM10, CH1, PB8, TIM_USE_OUTPUT_AUTO, 0, 0),

DEF_TIM(TIM4, CH2, PB7, TIM_USE_OUTPUT_AUTO, 0, 0),
Expand All @@ -53,7 +53,7 @@ timerHardware_t timerHardware[] = {
//DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0),
//DEF_TIM(TIM8, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0),

DEF_TIM(TIM2, CH1, PA15, TIM_USE_LED, 0, 0),
DEF_TIM(TIM2, CH1, PA15, TIM_USE_LED, 0, 0), // Clash with TIM3_CH2's DMA stream; LED strip does not light

};

Expand Down
2 changes: 1 addition & 1 deletion src/main/target/ALIENFLIGHTF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM5, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM8 - PA0 OUT3 - DMA1_ST2
DEF_TIM(TIM5, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM9 - PA1 OUT4 - DMA1_ST4
DEF_TIM(TIM8, CH1, PC6, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM10 - PC6 OUT5 - DMA2_ST2
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM11 - PC7 OUT6 - DMA2_ST3
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM11 - PC7 OUT6 - DMA2_ST3 -- clash with PWM10, DSHOT does not work
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 1), // PWM13 - PC8 OUT7 - DMA2_ST4
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM13 - PC9 OUT8 - DMA2_ST7
DEF_TIM(TIM1, CH3, PB15, TIM_USE_LED, 0, 0), // PWM5 - PA15 RC5 - DMA2_ST6
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/ALIENFLIGHTNGF7/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM6 - DMA2_ST4
DEF_TIM(TIM5, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM7 - DMA1_ST4
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM8 - DMA2_ST7
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM9 - DMA1_ST2
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM9 - DMA1_ST2 -- clash with PWM5, DSHOT does not work
DEF_TIM(TIM1, CH3N, PB15, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM10 - DMA2_ST6
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM11 - DMA1_ST7
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM11 - DMA1_ST7 -- clash with PWM4, DSHOT does not work
DEF_TIM(TIM4, CH4, PB9, TIM_USE_OUTPUT_AUTO, 0, 0), // PWM12 - DMA_NONE
DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0, 1), // PPM - DMA2_ST1
};
Expand Down
8 changes: 4 additions & 4 deletions src/main/target/ANYFC/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM5, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0), // S6_OUT 12
DEF_TIM(TIM5, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 0), // S5_OUT 11
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S1_OUT 7
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S2_OUT 8
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0), // S3_OUT 9
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S2_OUT 8 -- clash with S6_OUT, DSHOT does not work
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0), // S3_OUT 9 -- clash with S1_OUT, DSHOT does not work
DEF_TIM(TIM2, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0), // S4_OUT 10
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S7_OUT 13
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // S8_OUT 14
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0), // S9_OUT 15
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // S8_OUT 14 -- clash with S7_OUT, DSHOT does not work
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0), // S9_OUT 15 -- clash with S5_OUT, DSHOT does not work
};

const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
2 changes: 1 addition & 1 deletion src/main/target/ANYFCF7/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S4_OUT DMA1_ST5
DEF_TIM(TIM5, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S7_OUT DMA1_ST2
DEF_TIM(TIM2, CH2, PB3, TIM_USE_OUTPUT_AUTO | TIM_USE_LED, 0, 0 ), // S8_OUT DMA1_ST6
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S9_OUT DMA1_ST4
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S9_OUT DMA1_ST4 -- clash with S2_OUT, DSHOT does not work


};
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/ANYFCM7/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S4_OUT DMA1_ST5 -- Used to have TIM_USE_LED
DEF_TIM(TIM5, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S7_OUT DMA1_ST2
DEF_TIM(TIM1, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S8_OUT DMA2_ST6
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S9_OUT DMA1_ST4
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S9_OUT DMA1_ST4 -- clash with S2_OUT, DSHOT does not work

// DEF_TIM(TIM12, CH1, PB14, TIM_USE_PWM | TIM_USE_PPM, 0, 0 ), // S1_IN
// DEF_TIM(TIM12, CH2, PB15, TIM_USE_PWM, 0, 0 ), // S2_IN
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/AOCODARCF7DUAL/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM4, CH1, PB6, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 D(1, 0, 2)
DEF_TIM(TIM4, CH2, PB7, TIM_USE_OUTPUT_AUTO, 0, 0), // S8 D(1, 3, 2)

DEF_TIM(TIM2, CH1, PA0, TIM_USE_LED, 0, 0), // LED_TRIP
DEF_TIM(TIM2, CH1, PA0, TIM_USE_LED, 0, 0), // LED_TRIP -- clash with S2's DMA stream; LED strip does not light
};

const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
2 changes: 1 addition & 1 deletion src/main/target/AOCODARCF7MINI/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ timerHardware_t timerHardware[] = {
#else
DEF_TIM(TIM4, CH1, PB6, TIM_USE_OUTPUT_AUTO, 0, 0), // S5
DEF_TIM(TIM2, CH2, PB3, TIM_USE_OUTPUT_AUTO, 0, 0), // S6 D(1, 6, 3)
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S7
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 -- clash with S2, DSHOT does not work (base/non-V2 build only)
#endif

DEF_TIM(TIM4, CH2, PB7, TIM_USE_OUTPUT_AUTO, 0, 0), // S8 D(1, 3, 2)
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/ATOMRCF405MINI/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0), // S1
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S2
DEF_TIM(TIM1, CH1, PA8, TIM_USE_OUTPUT_AUTO, 0, 0), // S3
DEF_TIM(TIM1, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4 -- moved off TIM1_CH3N (DMA-stuck sharing S3's stream on both dmavar options)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

1. Servo timer capacity reduced 🐞 Bug ≡ Correctness

On ATOMRCF405MINI and ATOMRCF405NAVI, moving S4 to TIM3 causes a 4-motor setup to claim TIM3 for
motors, which blocks S8 (also on TIM3) from being allocated as a servo output. This reduces the
remaining servo outputs after allocating 4 motors and can trigger
PWM_INIT_ERROR_NOT_ENOUGH_SERVO_OUTPUTS for mixers requiring 4+ servos.
Agent Prompt
## Issue description
ATOMRCF405MINI and ATOMRCF405NAVI changed S4 from TIM1_CH3N to TIM3_CH4 (same PB1 pin), but S8 is also on TIM3. In a typical 4-motor configuration, INAV assigns motors in `timerHardware[]` order and uses `pwmClaimTimer()` to apply motor usage to all channels on that timer, which makes S8 unusable for servo outputs; this reduces the available servo output count and can cause `PWM_INIT_ERROR_NOT_ENOUGH_SERVO_OUTPUTS` on servo-heavy mixers.

## Issue Context
- Targets affected: `ATOMRCF405MINI`, `ATOMRCF405NAVI`
- Change: S4 now uses `TIM3` while S8 already uses `TIM3`.
- Allocation rule: servos cannot share a timer with any motor output, and motor claiming propagates to all channels of the timer.

## Fix Focus Areas
- src/main/target/ATOMRCF405MINI/target.c[36-47]
- src/main/target/ATOMRCF405NAVI/target.c[36-47]
- src/main/drivers/pwm_mapping.c[277-317]
- src/main/drivers/pwm_mapping.c[362-395]
- src/main/drivers/pwm_mapping.c[483-492]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S5
DEF_TIM(TIM2, CH3, PB10, TIM_USE_OUTPUT_AUTO, 0, 0), // S6
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 0), // S7
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 1), // S7 -- dmavar 1: dedicated stream, avoids sharing S8's DMA1 Stream7
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S8

DEF_TIM(TIM4, CH2, PB7, TIM_USE_LED, 0, 0), // LED_STRIP
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/ATOMRCF405NAVI/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0), // S1
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S2
DEF_TIM(TIM1, CH1, PA8, TIM_USE_OUTPUT_AUTO, 0, 0), // S3
DEF_TIM(TIM1, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4 -- moved off TIM1_CH3N (DMA-stuck sharing S3's stream on both dmavar options)
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S5
DEF_TIM(TIM2, CH3, PB10, TIM_USE_OUTPUT_AUTO, 0, 0), // S6
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 0), // S7
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 1), // S7 -- dmavar 1: dedicated stream, avoids sharing S8's DMA1 Stream7
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S8

DEF_TIM(TIM4, CH2, PB7, TIM_USE_LED, 0, 0), // LED_STRIP
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/ATOMRCF405NAVI_DELUX/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ timerHardware_t timerHardware[] = {

DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S5
DEF_TIM(TIM2, CH3, PB10, TIM_USE_OUTPUT_AUTO, 0, 0), // S6
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 0), // S7
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 -- clash with S1, DSHOT does not work

DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0), // S8
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S9
DEF_TIM(TIM8, CH2N, PB14, TIM_USE_OUTPUT_AUTO, 0, 0), // S10
DEF_TIM(TIM8, CH2N, PB14, TIM_USE_OUTPUT_AUTO, 0, 0), // S10 -- clash with S8, DSHOT does not work

DEF_TIM(TIM1, CH3N, PB15, TIM_USE_OUTPUT_AUTO, 0, 0), // S11

Expand Down
6 changes: 3 additions & 3 deletions src/main/target/BEEROTORF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ timerHardware_t timerHardware[] = {
// DEF_TIM(TIM9, CH2, PA3, TIM_USE_PPM, 0, 0), // PPM IN

DEF_TIM(TIM1, CH2N, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // M1 - DMAR: DMA2_ST5
DEF_TIM(TIM1, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // M2 -
DEF_TIM(TIM1, CH3N, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // M2 - shares M1's DMA stream (TIM1_CH3N has no other option on PB1); DSHOT does not work on M2
DEF_TIM(TIM2, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 0), // M3 - DMAR: DMA1_ST7
DEF_TIM(TIM2, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0), // M4 -
DEF_TIM(TIM8, CH1, PC6, TIM_USE_OUTPUT_AUTO, 0, 0), // M5 - DMAR: DMA2_ST1
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0), // M6 -
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // M7 - DMAR: DMA1_ST2
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 1), // M6 - dmavar 1: dedicated stream, avoids sharing M5's combined-channel request
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // M7 - DMAR: DMA1_ST2 - shares M4's DMA stream (TIM2_CH1/TIM3_CH2 both have only one DMA option); DSHOT does not work on M7
DEF_TIM(TIM4, CH4, PB9, TIM_USE_OUTPUT_AUTO, 0, 0), // M8 - DMAR: DMA1_ST6

DEF_TIM(TIM4, CH3, PB8, TIM_USE_LED, 0, 0), // LED_STRIP / TRANSPONDER - DMA1_ST7
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/BLUEJAYF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM2, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S3_OUT - DMA1_ST1
DEF_TIM(TIM9, CH2, PA3, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S4_OUT - no DMA
//DEF_TIM(TIM5, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 1 ), // S4_OUT - DMA1_ST3 (Could be DMA1_ST1 with dmaopt=0)
DEF_TIM(TIM3, CH4, PB0, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S5_OUT - DMA1_ST2 -- used to be TIM_USE_LED
DEF_TIM(TIM3, CH4, PB0, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S5_OUT - DMA1_ST2 -- used to be TIM_USE_LED -- clash with S1_OUT, DSHOT does not work
DEF_TIM(TIM3, CH3, PB1, TIM_USE_OUTPUT_AUTO, 0, 0 ), // S6_OUT - DMA1_ST7
};

Expand Down
2 changes: 1 addition & 1 deletion src/main/target/BOTWINGF722/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // S2
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S3
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0),// Servo 1
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0),// Servo 1 -- clash with S2, DSHOT does not work
DEF_TIM(TIM2, CH2, PB3, TIM_USE_OUTPUT_AUTO, 0, 0),// Servo 2
DEF_TIM(TIM4, CH1, PB6, TIM_USE_LED, 0, 0),
};
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/BRAHMA_F405/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM3, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0 ),

DEF_TIM(TIM8, CH3, PC8, TIM_USE_LED, 0, 0 ),
DEF_TIM(TIM8, CH3, PC8, TIM_USE_LED, 0, 0 ), // Clash with TIM1_CH2N's DMA stream; LED strip does not light
};

const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
4 changes: 2 additions & 2 deletions src/main/target/COREWINGF405WINGV2/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 1, 0), // S5 D(2,4,7)
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 1, 0), // S6 D(2,7,7)

DEF_TIM(TIM8, CH2N, PB14, TIM_USE_OUTPUT_AUTO, 1, 0), // S7
DEF_TIM(TIM8, CH2N, PB14, TIM_USE_OUTPUT_AUTO, 1, 0), // S7 -- clash with S5, DSHOT does not work
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 1, 0), // S8
DEF_TIM(TIM2, CH3, PB10, TIM_USE_OUTPUT_AUTO, 1, 0), // S9
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 1, 0), // S10
DEF_TIM(TIM2, CH4, PB11, TIM_USE_OUTPUT_AUTO, 1, 0), // S10 -- clash with S3, DSHOT does not work
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 1, 0), // S11

DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0, 0), //2812LED D(1,5,3)
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/CORVON405V2/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM2, CH1, PA15, TIM_USE_OUTPUT_AUTO, 0, 0), // S3 -D(1,5)
DEF_TIM(TIM2, CH2, PB3, TIM_USE_OUTPUT_AUTO, 0, 0), // S4 D(1,6)
DEF_TIM(TIM3, CH1, PB4, TIM_USE_OUTPUT_AUTO, 0, 0), // S5 D(1,4)
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // S6 -D(1,5)
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0), // S7
DEF_TIM(TIM3, CH2, PB5, TIM_USE_OUTPUT_AUTO, 0, 0), // S6 -D(1,5) -- clash with S3, DSHOT does not work
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 -- clash with S1, DSHOT does not work
DEF_TIM(TIM4, CH4, PB9, TIM_USE_OUTPUT_AUTO, 0, 0), // S8
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0), // S9
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0), // S10
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/DALRCF722DUAL/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO,0,0), //S3 DMA2_ST4 T8CH3
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO,0,0), //S4 DMA2_ST7 T8CH4
DEF_TIM(TIM1, CH1, PA8, TIM_USE_OUTPUT_AUTO,0,0), //S5 DMA2_ST1 T1CH1
DEF_TIM(TIM1, CH2, PA9, TIM_USE_OUTPUT_AUTO,0,0), //S6 DMA2_ST6 T1CH2
DEF_TIM(TIM1, CH2, PA9, TIM_USE_OUTPUT_AUTO,0,0), //S6 DMA2_ST6 T1CH2 -- clash with S5, DSHOT does not work

DEF_TIM(TIM2, CH1, PA15,TIM_USE_LED,0,0), //2812 STRIP DMA1_ST5
};
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/F4BY/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM5, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0), // S3_OUT
DEF_TIM(TIM5, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0), // S4_OUT
DEF_TIM(TIM1, CH1, PE9, TIM_USE_OUTPUT_AUTO, 0, 0), // S5_OUT
DEF_TIM(TIM1, CH2, PE11, TIM_USE_OUTPUT_AUTO, 0, 0), // S6_OUT
DEF_TIM(TIM1, CH3, PE13, TIM_USE_OUTPUT_AUTO, 0, 0), // S7_OUT
DEF_TIM(TIM1, CH2, PE11, TIM_USE_OUTPUT_AUTO, 0, 0), // S6_OUT -- clash with S5_OUT, DSHOT does not work
DEF_TIM(TIM1, CH3, PE13, TIM_USE_OUTPUT_AUTO, 0, 0), // S7_OUT -- clash with S5_OUT, DSHOT does not work
DEF_TIM(TIM1, CH4, PE14, TIM_USE_OUTPUT_AUTO, 0, 0), // S8_OUT

DEF_TIM(TIM9, CH2, PE6, TIM_USE_ANY, 0, 0), // sonar echo if needed
Expand Down
2 changes: 1 addition & 1 deletion src/main/target/FF_F35_LIGHTNING/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 1, 0),
DEF_TIM(TIM4, CH3, PB8, TIM_USE_OUTPUT_AUTO, 1, 0),
DEF_TIM(TIM4, CH4, PB9, TIM_USE_OUTPUT_AUTO, 1, 0),
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 1, 0),
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 1, 0), // Clash with TIM4_CH3, DSHOT does not work
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 1, 0),

DEF_TIM(TIM5, CH3, PA2, TIM_USE_ANY, 0, 0),
Expand Down
8 changes: 4 additions & 4 deletions src/main/target/FF_PIKOF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@

timerHardware_t timerHardware[] = {
#if defined(FF_PIKOF4OSD)
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 1 ), // dmavar 1: dedicated stream, avoids sharing TIM3_CH3's DMA1 Stream7 (TIM3_CH3 has no other option)
DEF_TIM(TIM3, CH3, PB1, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM5, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM3, CH4, PB0, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0 ), // no DMA request line on this MCU for TIM12 -- DSHOT will not work on this output regardless of dmavar
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0 ), // no DMA request line on this MCU for TIM12 -- DSHOT will not work on this output regardless of dmavar
#else
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM2, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 1 ), // dmavar 1: dedicated stream, avoids sharing TIM3_CH3's DMA1 Stream7 (TIM3_CH3 has no other option)
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM5, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0 ),
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/FISHDRONEF4/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM8, CH1, PC6, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 0 ),
DEF_TIM(TIM8, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 1 ), // dmavar 1: dedicated stream, avoids sharing TIM8_CH1's combined-channel request
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 1 ), // dmavar 1: dedicated stream, avoids sharing TIM8_CH1's combined-channel request
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0 ),

DEF_TIM(TIM3, CH4, PB1, TIM_USE_LED, 0, 0 ),
Expand Down
4 changes: 2 additions & 2 deletions src/main/target/FLYDRAGONPRO/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH2, PC7, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "CH2"
DEF_TIM(TIM3, CH1, PC6, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "CH1"

DEF_TIM(TIM2, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "ESC", clashes with UART4 TX
DEF_TIM(TIM2, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "ESC", clashes with UART4 TX -- also clashes with TIM3_CH2's DMA stream (burst-mode DMA), DSHOT does not work
DEF_TIM(TIM2, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "RPM", clashes with UART4 RX

DEF_TIM(TIM5, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "RX2", clashes with UART2 RX
DEF_TIM(TIM5, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "TX2", clashes with UART2 TX

DEF_TIM(TIM11, CH1, PB9, TIM_USE_OUTPUT_AUTO, 0, 0), // labelled "AUX"

DEF_TIM(TIM4, CH3, PB8, TIM_USE_LED, 0, 0), // WS2812B
DEF_TIM(TIM4, CH3, PB8, TIM_USE_LED, 0, 0), // WS2812B -- clash with TIM3_CH3's DMA stream; LED strip does not light
};

const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
Loading
Loading