In combination with TX16S & FLYSKY HALL GIMBAL - enable the right joystick two analogs as EX3 and EX4.

At the same time disable PWM Sticks on TX16S.
This commit is contained in:
rotorman
2021-09-11 19:40:05 +02:00
parent 3778ed26dd
commit 17325ae30b
5 changed files with 75 additions and 18 deletions
+14 -1
View File
@@ -1070,7 +1070,20 @@ void getADC()
if (x < 4)
v = get_flysky_hall_adc_value(x) >> (1 - ANALOG_SCALE);
else
v = getAnalogValue(x) >> (1 - ANALOG_SCALE);
#if defined(RADIO_TX16S)
switch (x)
{
case 9:
case 10:
v = getAnalogValue(x-7) >> (1 - ANALOG_SCALE);
break;
default:
v = getAnalogValue(x) >> (1 - ANALOG_SCALE);
break;
}
#else
v = getAnalogValue(x) >> (1 - ANALOG_SCALE);
#endif
#else
v = getAnalogValue(x) >> (1 - ANALOG_SCALE);
#endif
@@ -85,6 +85,10 @@ stm32_hal_adc_channel ADC_MAIN_channels[] = {
{ ADC_CHANNEL_POT3, ADC_SAMPTIME },
{ ADC_CHANNEL_EXT1, ADC_SAMPTIME },
{ ADC_CHANNEL_EXT2, ADC_SAMPTIME },
#if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS))
{ ADC_CHANNEL_EXT3, ADC_SAMPTIME },
{ ADC_CHANNEL_EXT4, ADC_SAMPTIME },
#endif
{ ADC_CHANNEL_SLIDER1, ADC_SAMPTIME },
{ ADC_CHANNEL_SLIDER2, ADC_SAMPTIME },
{ ADC_CHANNEL_BATT, ADC_SAMPTIME }
+6 -1
View File
@@ -55,8 +55,13 @@ if (PCB STREQUAL X10)
set(TARGET_SRC
${TARGET_SRC}
../common/arm/stm32/audio_dac_driver.cpp
../common/arm/stm32/sticks_pwm_driver.cpp
)
if (NOT PCBREV STREQUAL TX16S)
set(TARGET_SRC
${TARGET_SRC}
../common/arm/stm32/sticks_pwm_driver.cpp
)
endif()
set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC}
../common/arm/stm32/stm32_hal_adc.cpp
+24 -4
View File
@@ -335,7 +335,11 @@ void watchdogInit(unsigned int duration);
// ADC driver
#if defined(PCBX10)
#define NUM_POTS 5
#if defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)
#define NUM_POTS 7
#else
#define NUM_POTS 5
#endif
#else
#define NUM_POTS 3
#endif
@@ -345,7 +349,11 @@ void watchdogInit(unsigned int duration);
#if defined(PCBX10)
#define NUM_SLIDERS 2
#define NUM_PWMSTICKS 4
#if defined(RADIO_TX16S)
#define NUM_PWMSTICKS 0
#else
#define NUM_PWMSTICKS 4
#endif
#else
#define NUM_SLIDERS 4
#define NUM_PWMSTICKS 0
@@ -365,6 +373,10 @@ enum Analogs {
#if defined(PCBX10)
EXT1,
EXT2,
#endif
#if defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)
EXT3,
EXT4,
#endif
POT_LAST = POT_FIRST + NUM_POTS - 1,
SLIDER_FIRST,
@@ -406,8 +418,12 @@ enum Analogs {
#define HARDWARE_POT3
#if !defined(PCBX12S) // ext are used by mouse on X12S
#define HARDWARE_EXT1
#define HARDWARE_EXT2
#define HARDWARE_EXT1
#define HARDWARE_EXT2
#if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS))
#define HARDWARE_EXT3
#define HARDWARE_EXT4
#endif
#endif
enum CalibratedAnalogs {
@@ -428,6 +444,10 @@ enum CalibratedAnalogs {
#else
CALIBRATED_POT_EXT1,
CALIBRATED_POT_EXT2,
#if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS))
CALIBRATED_POT_EXT3,
CALIBRATED_POT_EXT4,
#endif
CALIBRATED_SLIDER_REAR_LEFT,
CALIBRATED_SLIDER_REAR_RIGHT,
#endif
+27 -12
View File
@@ -282,10 +282,15 @@
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2)
#define ADC_RCC_APB1Periph (RCC_APB1Periph_TIM5)
#define ADC_RCC_APB2Periph (RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3)
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_0 // PA.00
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_1 // PA.01
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_2 // PA.02
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_3 // PA.03
#if !(defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS))
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_0 // PA.00
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_1 // PA.01
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_2 // PA.02
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_3 // PA.03
#else
#define ADC_GPIO_PIN_EXT3 GPIO_Pin_2 // PA.02
#define ADC_GPIO_PIN_EXT4 GPIO_Pin_3 // PA.03
#endif
#define ADC_GPIO_PIN_POT1 GPIO_Pin_0 // PC.00
#define ADC_GPIO_PIN_POT2 GPIO_Pin_1 // PC.01
#define ADC_GPIO_PIN_POT3 GPIO_Pin_2 // PC.02
@@ -294,14 +299,20 @@
#define ADC_GPIO_PIN_BATT GPIO_Pin_7 // PF.07
#define ADC_GPIO_PIN_EXT1 GPIO_Pin_8 // PF.08
#define ADC_GPIO_PIN_EXT2 GPIO_Pin_9 // PF.09
#define PWM_TIMER TIM5
#define PWM_GPIO GPIOA
#define PWM_GPIO_AF GPIO_AF_TIM5
#define PWM_IRQHandler TIM5_IRQHandler
#define PWM_IRQn TIM5_IRQn
#define PWM_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
#if !defined(FLYSKY_HALL_STICKS)
#define ADC_GPIOA_PINS (STICKS_PWM_ENABLED() ? 0 : (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3))
#if !defined(RADIO_TX16S)
#define PWM_TIMER TIM5
#define PWM_GPIO GPIOA
#define PWM_GPIO_AF GPIO_AF_TIM5
#define PWM_IRQHandler TIM5_IRQHandler
#define PWM_IRQn TIM5_IRQn
#define PWM_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
#endif
#if defined(FLYSKY_HALL_STICKS)
#if defined (RADIO_TX16S)
#define ADC_GPIOA_PINS (GPIO_Pin_2 | GPIO_Pin_3)
#endif
#else
#define ADC_GPIOA_PINS (STICKS_PWM_ENABLED() ? 0 : (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3))
#endif
#define ADC_GPIOC_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
#define ADC_GPIOF_PINS (GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9)
@@ -317,6 +328,10 @@
#define ADC_CHANNEL_BATT ADC_Channel_5 // ADC3_IN5
#define ADC_CHANNEL_EXT1 ADC_Channel_6 // ADC3_IN6
#define ADC_CHANNEL_EXT2 ADC_Channel_7 // ADC3_IN7
#if (defined(RADIO_TX16S) && defined(FLYSKY_HALL_STICKS))
#define ADC_CHANNEL_EXT3 ADC_Channel_2 // ADC3_IN2
#define ADC_CHANNEL_EXT4 ADC_Channel_3 // ADC3_IN3
#endif
#define ADC_MAIN ADC3
#define ADC_EXT ADC1
#define ADC_SAMPTIME 3