1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-19 14:25:11 +03:00

Taranis internal module fix

This commit is contained in:
Bertrand Songis 2019-02-08 11:54:23 +01:00
parent 8c9ba8d1e5
commit aef7a1074f
6 changed files with 10 additions and 109 deletions

View file

@ -149,7 +149,7 @@ void disablePulses(uint8_t module, uint8_t protocol)
#if defined(CROSSFIRE) #if defined(CROSSFIRE)
case PROTOCOL_CHANNELS_CROSSFIRE: case PROTOCOL_CHANNELS_CROSSFIRE:
disable_module_timer(module); // TODO disable_module_timer(module);
break; break;
#endif #endif
@ -167,10 +167,6 @@ void disablePulses(uint8_t module, uint8_t protocol)
case PROTOCOL_CHANNELS_PPM: case PROTOCOL_CHANNELS_PPM:
disable_ppm(module); disable_ppm(module);
break; break;
default:
disable_no_pulses(module);
break;
} }
} }
@ -195,7 +191,7 @@ void enablePulses(uint8_t module, uint8_t protocol)
#if defined(CROSSFIRE) #if defined(CROSSFIRE)
case PROTOCOL_CHANNELS_CROSSFIRE: case PROTOCOL_CHANNELS_CROSSFIRE:
init_module_timer(module, CROSSFIRE_PERIOD, true); // TODO init_module_timer(module, CROSSFIRE_PERIOD, true);
break; break;
#endif #endif
@ -216,10 +212,6 @@ void enablePulses(uint8_t module, uint8_t protocol)
case PROTOCOL_CHANNELS_PPM: case PROTOCOL_CHANNELS_PPM:
init_ppm(module); init_ppm(module);
break; break;
default:
init_no_pulses(module);
break;
} }
} }

View file

@ -34,11 +34,6 @@ void intmodulePxxStart()
// shouldn't be used anymore // shouldn't be used anymore
} }
void intmoduleTimerStart(uint32_t period, uint8_t state)
{
// shouldn't be used anymore
}
void intmodulePxx2Start() void intmodulePxx2Start()
{ {
INTERNAL_MODULE_ON(); INTERNAL_MODULE_ON();

View file

@ -39,37 +39,6 @@ void extmoduleStop()
} }
} }
void extmoduleTimerStart(uint32_t period, uint8_t state)
{
if (state)
EXTERNAL_MODULE_ON();
else if (!IS_TRAINER_EXTERNAL_MODULE())
EXTERNAL_MODULE_OFF();
GPIO_PinAFConfig(EXTMODULE_TX_GPIO, EXTMODULE_TX_GPIO_PinSource, 0);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = EXTMODULE_TX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(EXTMODULE_TX_GPIO, &GPIO_InitStructure);
GPIO_SetBits(EXTMODULE_TX_GPIO, EXTMODULE_TX_GPIO_PIN); // Set high
EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN;
EXTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS from 30MHz
EXTMODULE_TIMER->ARR = (2000 * period);
EXTMODULE_TIMER->CCR2 = (2000 * period) - 1000;
EXTMODULE_TIMER->EGR = 1; // Restart
EXTMODULE_TIMER->SR &= ~TIM_SR_CC2IF;
EXTMODULE_TIMER->DIER |= TIM_DIER_CC2IE; // Enable this interrupt
EXTMODULE_TIMER->CR1 |= TIM_CR1_CEN;
NVIC_EnableIRQ(EXTMODULE_TIMER_CC_IRQn);
NVIC_SetPriority(EXTMODULE_TIMER_CC_IRQn, 7);
}
void extmodulePpmStart() void extmodulePpmStart()
{ {
EXTERNAL_MODULE_ON(); EXTERNAL_MODULE_ON();

View file

@ -32,37 +32,6 @@ void intmoduleStop()
INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN; INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN;
} }
void intmoduleTimerStart(uint32_t period, uint8_t state)
{
if (state)
INTERNAL_MODULE_ON();
else
INTERNAL_MODULE_OFF();
GPIO_PinAFConfig(EXTMODULE_TX_GPIO, EXTMODULE_TX_GPIO_PinSource, 0);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = INTMODULE_TX_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(INTMODULE_TX_GPIO, &GPIO_InitStructure);
GPIO_SetBits(INTMODULE_TX_GPIO, INTMODULE_TX_GPIO_PIN); // Set high
INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN;
INTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS from 30MHz
INTMODULE_TIMER->ARR = (2000 * period);
INTMODULE_TIMER->CCR2 = (2000 * period) - 1000;
INTMODULE_TIMER->EGR = 1; // Restart
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag
INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE; // Enable this interrupt
INTMODULE_TIMER->CR1 |= TIM_CR1_CEN;
NVIC_EnableIRQ(INTMODULE_TIMER_CC_IRQn);
NVIC_SetPriority(INTMODULE_TIMER_CC_IRQn, 7);
}
void intmoduleSendNextFrame() void intmoduleSendNextFrame()
{ {
if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX) { if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX) {
@ -122,7 +91,7 @@ void intmodulePxxStart()
INTMODULE_TIMER->DIER |= TIM_DIER_UDE; // Enable DMA on update INTMODULE_TIMER->DIER |= TIM_DIER_UDE; // Enable DMA on update
INTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2; INTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2;
INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag
INTMODULE_TIMER->CCR2 = 40000; // The first frame will be sent in 20ms INTMODULE_TIMER->CCR2 = 16000; // The first frame will be sent in 20ms
INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE; // Enable this interrupt INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE; // Enable this interrupt
INTMODULE_TIMER->CR1 |= TIM_CR1_CEN; INTMODULE_TIMER->CR1 |= TIM_CR1_CEN;

View file

@ -106,32 +106,3 @@ void disable_ppm(uint8_t module)
} }
#endif #endif
} }
void init_no_pulses(uint8_t module)
{
init_module_timer(module, 18, false);
}
void disable_no_pulses(uint8_t module)
{
if (module == INTERNAL_MODULE)
intmoduleStop();
else
extmoduleStop();
}
void init_module_timer(uint8_t module, uint32_t period, uint8_t state)
{
if (module == INTERNAL_MODULE)
intmoduleTimerStart(period, state);
else
extmoduleTimerStart(period, state);
}
void disable_module_timer(uint8_t module)
{
if (module == INTERNAL_MODULE)
intmoduleStop();
else
extmoduleStop();
}

View file

@ -75,7 +75,7 @@ bool isForcePowerOffRequested()
bool isProtocolSynchronous(uint8_t protocol) bool isProtocolSynchronous(uint8_t protocol)
{ {
return (protocol == PROTOCOL_CHANNELS_PXX2 || protocol == PROTOCOL_CHANNELS_NONE); return (protocol == PROTOCOL_CHANNELS_PXX2 || protocol == PROTOCOL_CHANNELS_CROSSFIRE || protocol == PROTOCOL_CHANNELS_NONE);
} }
void sendSynchronousPulses() void sendSynchronousPulses()
@ -83,8 +83,13 @@ void sendSynchronousPulses()
for (uint8_t module = 0; module < NUM_MODULES; module++) { for (uint8_t module = 0; module < NUM_MODULES; module++) {
uint8_t protocol = moduleSettings[module].protocol; uint8_t protocol = moduleSettings[module].protocol;
if (isProtocolSynchronous(protocol) && setupPulses(module)) { if (isProtocolSynchronous(protocol) && setupPulses(module)) {
if (module == INTERNAL_MODULE) {
intmoduleSendNextFrame(); intmoduleSendNextFrame();
} }
else {
// TODO
}
}
} }
} }