mirror of
https://github.com/opentx/opentx.git
synced 2025-07-15 20:35:17 +03:00
parent
c7df47703e
commit
0832a5c254
11 changed files with 65 additions and 67 deletions
|
@ -1003,8 +1003,9 @@ void menuModelSetup(event_t event)
|
|||
lcdDrawTextAlignedLeft(y, STR_RECEIVER_NUM);
|
||||
}
|
||||
if (IS_MODULE_PXX(moduleIdx) || IS_MODULE_DSM2(moduleIdx) || IS_MODULE_MULTIMODULE(moduleIdx)) {
|
||||
if (xOffsetBind) lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||
if (attr && l_posHorz==0) {
|
||||
if (xOffsetBind)
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[moduleIdx], (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
|
||||
if (attr && l_posHorz == 0) {
|
||||
if (editMode>0 || p1valdiff) {
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId[moduleIdx], MAX_RX_NUM(moduleIdx));
|
||||
if (checkIncDec_Ret) {
|
||||
|
@ -1021,7 +1022,7 @@ void menuModelSetup(event_t event)
|
|||
#if defined(MULTIMODULE)
|
||||
if (multiBindStatus == MULTI_BIND_FINISHED) {
|
||||
multiBindStatus = MULTI_NORMAL_OPERATION;
|
||||
s_editMode=0;
|
||||
s_editMode = 0;
|
||||
}
|
||||
#endif
|
||||
#if defined(PCBTARANIS)
|
||||
|
@ -1029,7 +1030,8 @@ void menuModelSetup(event_t event)
|
|||
if (s_editMode > 0) {
|
||||
if (l_posHorz == 1) {
|
||||
if (IS_MODULE_R9M(moduleIdx) || (IS_MODULE_XJT(moduleIdx) && g_model.moduleData[moduleIdx].rfProtocol== RF_PROTO_X16)) {
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
if (EVT_KEY_MASK(event) == KEY_ENTER) {
|
||||
killEvents(event);
|
||||
uint8_t default_selection;
|
||||
if (IS_MODULE_R9M_LBT(moduleIdx)) {
|
||||
POPUP_MENU_ADD_ITEM(STR_BINDING_25MW_CH1_8_TELEM_OFF);
|
||||
|
|
|
@ -2597,7 +2597,7 @@ void opentxInit(OPENTX_INIT_ARGS)
|
|||
}
|
||||
|
||||
#if NUM_PWMANALOGS > 0
|
||||
pwmCheck();
|
||||
analogPwmCheck();
|
||||
#endif
|
||||
|
||||
if (!unexpectedShutdown) {
|
||||
|
|
|
@ -103,8 +103,14 @@ void adcInit()
|
|||
ADC_MAIN->SQR2 = (ADC_CHANNEL_POT4<<0) + (ADC_CHANNEL_SLIDER3<<5) + (ADC_CHANNEL_SLIDER4<<10) + (ADC_CHANNEL_BATT<<15); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT2<<20) + (ADC_CHANNEL_POT3<<25); // conversions 1 to 6
|
||||
#elif defined(PCBXLITE)
|
||||
if (ANALOGS_PWM_ENABLED()) {
|
||||
ADC_MAIN->SQR2 = 0;
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20) + (ADC_CHANNEL_BATT<<0);
|
||||
}
|
||||
else {
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT<<0); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20); // conversions 1 to 6
|
||||
}
|
||||
#elif defined(PCBX7)
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_BATT<<0); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<25) + (ADC_CHANNEL_POT2<<20); // conversions 1 to 6
|
||||
|
@ -142,7 +148,7 @@ void adcInit()
|
|||
|
||||
#if NUM_PWMANALOGS > 0
|
||||
if (ANALOGS_PWM_ENABLED()) {
|
||||
pwmInit();
|
||||
analogPwmInit();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -204,7 +210,7 @@ void adcRead()
|
|||
|
||||
#if NUM_PWMANALOGS > 0
|
||||
if (ANALOGS_PWM_ENABLED()) {
|
||||
pwmRead(adcValues);
|
||||
analogPwmRead(adcValues);
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -29,7 +29,7 @@ volatile uint32_t timer_capture_rising_time[4];
|
|||
volatile uint32_t timer_capture_values[4][TIMESAMPLE_COUNT];
|
||||
volatile uint8_t timer_capture_indexes[4];
|
||||
|
||||
void pwmInit()
|
||||
void analogPwmInit()
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = PWM_GPIOA_PINS;
|
||||
|
@ -75,56 +75,17 @@ inline uint32_t TIM_GetCapture(uint8_t n)
|
|||
|
||||
inline void TIM_SetPolarityRising(uint8_t n)
|
||||
{
|
||||
switch (n) {
|
||||
case 0:
|
||||
PWM_TIMER->CCER &= ~TIM_CCER_CC1P;
|
||||
break;
|
||||
case 1:
|
||||
PWM_TIMER->CCER &= ~TIM_CCER_CC2P;
|
||||
break;
|
||||
case 2:
|
||||
PWM_TIMER->CCER &= ~TIM_CCER_CC3P;
|
||||
break;
|
||||
case 3:
|
||||
PWM_TIMER->CCER &= ~TIM_CCER_CC4P;
|
||||
break;
|
||||
}
|
||||
PWM_TIMER->CCER &= ~(TIM_CCER_CC1P << (n * 4));
|
||||
}
|
||||
|
||||
inline void TIM_SetPolarityFalling(uint8_t n)
|
||||
{
|
||||
switch (n) {
|
||||
case 0:
|
||||
PWM_TIMER->CCER |= TIM_CCER_CC1P;
|
||||
break;
|
||||
case 1:
|
||||
PWM_TIMER->CCER |= TIM_CCER_CC2P;
|
||||
break;
|
||||
case 2:
|
||||
PWM_TIMER->CCER |= TIM_CCER_CC3P;
|
||||
break;
|
||||
case 3:
|
||||
PWM_TIMER->CCER |= TIM_CCER_CC4P;
|
||||
break;
|
||||
}
|
||||
PWM_TIMER->CCER |= (TIM_CCER_CC1P << (n * 4));
|
||||
}
|
||||
|
||||
inline void TIM_ClearITPendingBit(uint8_t n)
|
||||
{
|
||||
switch (n) {
|
||||
case 0:
|
||||
PWM_TIMER->SR = ~TIM_IT_CC1;
|
||||
break;
|
||||
case 1:
|
||||
PWM_TIMER->SR = ~TIM_IT_CC2;
|
||||
break;
|
||||
case 2:
|
||||
PWM_TIMER->SR = ~TIM_IT_CC3;
|
||||
break;
|
||||
case 3:
|
||||
PWM_TIMER->SR = ~TIM_IT_CC4;
|
||||
break;
|
||||
}
|
||||
PWM_TIMER->SR = ~(TIM_IT_CC1 << n);
|
||||
}
|
||||
|
||||
inline uint32_t diff_with_16bits_overflow(uint32_t a, uint32_t b)
|
||||
|
@ -160,7 +121,7 @@ extern "C" void PWM_IRQHandler(void)
|
|||
}
|
||||
}
|
||||
|
||||
void pwmRead(uint16_t * values)
|
||||
void analogPwmRead(uint16_t * values)
|
||||
{
|
||||
uint32_t tmp[4];
|
||||
|
||||
|
@ -186,7 +147,7 @@ void pwmRead(uint16_t * values)
|
|||
values[3] = tmp[2];
|
||||
}
|
||||
|
||||
void pwmCheck()
|
||||
void analogPwmCheck()
|
||||
{
|
||||
// I have ~1860 interrupts with only one stick
|
||||
if (pwm_interrupt_count < 1000) {
|
|
@ -28,8 +28,8 @@ if (PCB STREQUAL X10)
|
|||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
../common/arm/stm32/audio_dac_driver.cpp
|
||||
../common/arm/stm32/adc_driver.cpp
|
||||
pwm_driver.cpp
|
||||
../common/arm/stm32/analog_adc_driver.cpp
|
||||
../common/arm/stm32/analog_pwm_driver.cpp
|
||||
)
|
||||
|
||||
set(BITMAPS_TARGET x10_bitmaps)
|
||||
|
|
|
@ -400,9 +400,9 @@ uint16_t getBatteryVoltage(); // returns current battery voltage in 10mV steps
|
|||
#if NUM_PWMANALOGS > 0
|
||||
extern uint8_t analogs_pwm_disabled;
|
||||
#define ANALOGS_PWM_ENABLED() (analogs_pwm_disabled == false)
|
||||
void pwmInit(void);
|
||||
void pwmRead(uint16_t * values);
|
||||
void pwmCheck();
|
||||
void analogPwmInit(void);
|
||||
void analogPwmRead(uint16_t * values);
|
||||
void analogPwmCheck();
|
||||
extern volatile uint32_t pwm_interrupt_count;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -158,9 +158,16 @@ set(TARGET_SRC
|
|||
backlight_driver.cpp
|
||||
extmodule_driver.cpp
|
||||
../common/arm/stm32/audio_dac_driver.cpp
|
||||
../common/arm/stm32/adc_driver.cpp
|
||||
../common/arm/stm32/analog_adc_driver.cpp
|
||||
)
|
||||
|
||||
if(PCB STREQUAL XLITE)
|
||||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
../common/arm/stm32/analog_pwm_driver.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
${LCD_DRIVER}
|
||||
|
|
|
@ -157,7 +157,7 @@ void boardInit()
|
|||
SERIAL_RCC_AHB1Periph | TRAINER_RCC_AHB1Periph |
|
||||
HEARTBEAT_RCC_AHB1Periph | BT_RCC_AHB1Periph, ENABLE);
|
||||
|
||||
RCC_APB1PeriphClockCmd(LCD_RCC_APB1Periph | AUDIO_RCC_APB1Periph |
|
||||
RCC_APB1PeriphClockCmd(LCD_RCC_APB1Periph | AUDIO_RCC_APB1Periph | ADC_RCC_APB1Periph |
|
||||
BACKLIGHT_RCC_APB1Periph | HAPTIC_RCC_APB1Periph | INTERRUPT_xMS_RCC_APB1Periph |
|
||||
TIMER_2MHz_RCC_APB1Periph | I2C_RCC_APB1Periph |
|
||||
SD_RCC_APB1Periph | TRAINER_RCC_APB1Periph |
|
||||
|
|
|
@ -428,6 +428,16 @@ enum Analogs {
|
|||
#define NUM_XPOTS NUM_POTS
|
||||
#define NUM_SLIDERS (TX_VOLTAGE-POT_LAST-1)
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
#define NUM_PWMANALOGS 4
|
||||
extern uint8_t analogs_pwm_disabled;
|
||||
#define ANALOGS_PWM_ENABLED() (analogs_pwm_disabled == false)
|
||||
void analogPwmInit(void);
|
||||
void analogPwmRead(uint16_t * values);
|
||||
void analogPwmCheck();
|
||||
extern volatile uint32_t pwm_interrupt_count;
|
||||
#endif
|
||||
|
||||
enum CalibratedAnalogs {
|
||||
CALIBRATED_STICK1,
|
||||
CALIBRATED_STICK2,
|
||||
|
|
|
@ -388,6 +388,7 @@
|
|||
#define ADC_SAMPTIME 2 // sample time = 28 cycles
|
||||
#if defined(PCBX9E)
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph (RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3)
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
|
@ -427,6 +428,7 @@
|
|||
#define ADC_EXT_SAMPTIME 3 // sample time = 56 cycles
|
||||
#elif defined(PCBX9DP)
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
|
@ -453,11 +455,17 @@
|
|||
#define ADC_CHANNEL_BATT ADC_Channel_10
|
||||
#elif defined(PCBXLITE)
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph RCC_APB1Periph_TIM5
|
||||
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_2 // PA.02
|
||||
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_3 // PA.03
|
||||
#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 ADC_CHANNEL_STICK_RV ADC_Channel_0 // ADC1_IN0
|
||||
#define ADC_CHANNEL_STICK_RH ADC_Channel_1 // ADC1_IN1
|
||||
#define ADC_CHANNEL_STICK_LV ADC_Channel_2 // ADC1_IN2
|
||||
|
@ -465,7 +473,9 @@
|
|||
#define ADC_GPIO_PIN_POT1 GPIO_Pin_1 // PC.01
|
||||
#define ADC_GPIO_PIN_POT2 GPIO_Pin_2 // PC.02
|
||||
#define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT1)
|
||||
#define STICKS_GPIOA_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3)
|
||||
#define PWM_GPIOA_PINS STICKS_GPIOA_PINS
|
||||
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_POT1 | (ANALOGS_PWM_ENABLED() ? 0 : STICKS_GPIOA_PINS))
|
||||
#define ADC_GPIOB_PINS ADC_GPIO_PIN_POT2
|
||||
#define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT
|
||||
#define ADC_CHANNEL_POT1 ADC_Channel_6
|
||||
|
@ -473,6 +483,7 @@
|
|||
#define ADC_CHANNEL_BATT ADC_Channel_10
|
||||
#elif defined(PCBX7)
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
|
@ -493,6 +504,7 @@
|
|||
#define ADC_CHANNEL_BATT ADC_Channel_10
|
||||
#else
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB1Periph 0
|
||||
#define ADC_RCC_APB2Periph RCC_APB2Periph_ADC1
|
||||
#define ADC_GPIO_PIN_STICK_RV GPIO_Pin_0 // PA.00
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue