Skip to content

Commit

Permalink
Merge pull request #709 from EdgeTX/FlySkyHallPlus2Analogs
Browse files Browse the repository at this point in the history
Enable EX3 and EX4 on TX16S in combination with FlySky Hall Gimbal
  • Loading branch information
rotorman authored Sep 14, 2021
2 parents 8d04b51 + 322ad84 commit 954eeae
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 19 deletions.
15 changes: 14 additions & 1 deletion radio/src/opentx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 EXT3:
case EXT4:
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
Expand Down
4 changes: 4 additions & 0 deletions radio/src/targets/common/arm/stm32/stm32_hal_adc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down
7 changes: 6 additions & 1 deletion radio/src/targets/horus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 24 additions & 4 deletions radio/src/targets/horus/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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 {
Expand All @@ -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
Expand Down
39 changes: 27 additions & 12 deletions radio/src/targets/horus/hal.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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
Expand Down
6 changes: 5 additions & 1 deletion radio/src/translations/untranslated.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_TRIM "L1\0" STR_CHAR_TRIM "L2\0" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy"
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SE\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
#elif defined(PCBX10)
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy"
#if defined (RADIO_TX16S) && defined(FLYSKY_HALL_STICKS)
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_POT"EX3" STR_CHAR_POT"EX4" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy"
#else
#define TR_POTS_VSRCRAW STR_CHAR_POT"S1\0" STR_CHAR_POT"6P\0" STR_CHAR_POT"S2\0" STR_CHAR_POT"EX1" STR_CHAR_POT"EX2" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0" STR_CHAR_POT"JSx" STR_CHAR_POT"JSy"
#endif
#define TR_SW_VSRCRAW STR_CHAR_SWITCH"SA\0" STR_CHAR_SWITCH"SB\0" STR_CHAR_SWITCH"SC\0" STR_CHAR_SWITCH"SD\0" STR_CHAR_SWITCH"SE\0" STR_CHAR_SWITCH"SF\0" STR_CHAR_SWITCH"SG\0" STR_CHAR_SWITCH"SH\0" STR_CHAR_SWITCH"SI\0" STR_CHAR_SWITCH"SJ\0"
#elif defined(PCBX9E)
#define TR_POTS_VSRCRAW STR_CHAR_POT"F1\0" STR_CHAR_POT"F2\0" STR_CHAR_POT"F3\0" STR_CHAR_POT"F4\0" STR_CHAR_SLIDER"S1\0" STR_CHAR_SLIDER"S2\0" STR_CHAR_SLIDER"LS\0" STR_CHAR_SLIDER"RS\0"
Expand Down

0 comments on commit 954eeae

Please sign in to comment.