Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable EX3 and EX4 on TX16S in combination with FlySky Hall Gimbal #709

Merged
merged 3 commits into from Sep 14, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 14 additions & 1 deletion radio/src/opentx.cpp
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 9:
case 10:
pfeerick marked this conversation as resolved.
Show resolved Hide resolved
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
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
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
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
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
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