Pulses fixes
This commit is contained in:
@@ -102,12 +102,14 @@ void setupPulsesMultimodule()
|
||||
|
||||
// Every 1000 cycles (=9s) send a config packet that configures the multimodule (inversion, telemetry type)
|
||||
counter++;
|
||||
if (counter % 1000== 500) {
|
||||
if (counter % 1000== 500) {
|
||||
sendSetupFrame();
|
||||
} else if (counter % 1000 == 0 && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_RECEIVER) {
|
||||
}
|
||||
else if (counter % 1000 == 0 && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_RECEIVER) {
|
||||
sendFrameProtocolHeader(EXTERNAL_MODULE, true);
|
||||
sendFailsafeChannels(EXTERNAL_MODULE);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
// Normal Frame
|
||||
sendFrameProtocolHeader(EXTERNAL_MODULE, false);
|
||||
sendChannels(EXTERNAL_MODULE);
|
||||
|
||||
@@ -171,7 +171,7 @@ void disablePulses(uint8_t module, uint8_t protocol)
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTOCOL_CHANNELS_MULTIMODULE:
|
||||
case PROTOCOL_CHANNELS_MULTIMODULE:
|
||||
#endif
|
||||
case PROTOCOL_CHANNELS_SBUS:
|
||||
disable_serial(module);
|
||||
@@ -204,7 +204,7 @@ void enablePulses(uint8_t module, uint8_t protocol)
|
||||
case PROTOCOL_CHANNELS_DSM2_LP45:
|
||||
case PROTOCOL_CHANNELS_DSM2_DSM2:
|
||||
case PROTOCOL_CHANNELS_DSM2_DSMX:
|
||||
init_serial(module, DSM2_BAUDRATE, DSM2_PERIOD * 2000);
|
||||
init_serial(module, DSM2_BAUDRATE, DSM2_PERIOD * 2000, false);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -222,12 +222,12 @@ void enablePulses(uint8_t module, uint8_t protocol)
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTOCOL_CHANNELS_MULTIMODULE:
|
||||
init_serial(module, MULTIMODULE_BAUDRATE, MULTIMODULE_PERIOD * 2000);
|
||||
init_serial(module, MULTIMODULE_BAUDRATE, MULTIMODULE_PERIOD * 2000, true);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case PROTOCOL_CHANNELS_SBUS:
|
||||
init_serial(module, SBUS_BAUDRATE, SBUS_PERIOD_HALF_US);
|
||||
init_serial(module, SBUS_BAUDRATE, SBUS_PERIOD_HALF_US, false);
|
||||
break;
|
||||
|
||||
case PROTOCOL_CHANNELS_PPM:
|
||||
|
||||
@@ -225,7 +225,7 @@ void init_pxx1_pulses(uint8_t module);
|
||||
void disable_pxx1_pulses(uint8_t module);
|
||||
void init_pxx2(uint8_t module);
|
||||
void disable_pxx2(uint8_t module);
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us);
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
void intmoduleSerialStart(uint32_t baudrate, uint8_t rxEnable);
|
||||
void disable_serial(uint8_t module);
|
||||
void intmoduleStop();
|
||||
|
||||
@@ -137,7 +137,7 @@ void extmodulePxx2Start()
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us)
|
||||
void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool inverted)
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ void extmoduleStop();
|
||||
void extmodulePpmStart();
|
||||
void extmodulePxxStart();
|
||||
void extmodulePxx2Start();
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us);
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
|
||||
|
||||
void init_ppm(uint8_t module)
|
||||
@@ -78,10 +78,10 @@ void disable_pxx1_pulses(uint8_t module)
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us)
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted)
|
||||
{
|
||||
if (module == EXTERNAL_MODULE) {
|
||||
extmoduleSerialStart(baudrate, period_half_us);
|
||||
extmoduleSerialStart(baudrate, period_half_us, inverted);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ void init_ppm(uint32_t port);
|
||||
void disable_ppm(uint32_t port);
|
||||
void init_pxx1_pulses(uint32_t port);
|
||||
void disable_pxx1_pulses(uint32_t port);
|
||||
void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us);
|
||||
void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
void disable_serial(uint32_t port);
|
||||
void init_module_timer( uint32_t module_index, uint32_t period, uint8_t state);
|
||||
void disable_module_timer( uint32_t module_index);
|
||||
|
||||
@@ -236,7 +236,7 @@ void disable_pxx1_pulses(uint32_t port)
|
||||
}
|
||||
}
|
||||
|
||||
void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us)
|
||||
void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us, bool inverted)
|
||||
{
|
||||
if (port == EXTERNAL_MODULE) {
|
||||
if (baudrate == 125000) {
|
||||
|
||||
@@ -189,7 +189,7 @@ void init_pxx1_pulses(uint8_t module);
|
||||
void init_pxx1_serial(uint8_t module);
|
||||
void disable_pxx1_pulses(uint8_t module);
|
||||
void disable_pxx1_serial(uint8_t module);
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period);
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period, bool inverted);
|
||||
void disable_serial(uint8_t module);
|
||||
void intmoduleStop();
|
||||
void intmodulePxxStart();
|
||||
@@ -205,7 +205,7 @@ void extmodulePpmStart();
|
||||
void extmodulePxxPulsesStart();
|
||||
void extmodulePxxSerialStart();
|
||||
void extmodulePxx2Start();
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us);
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
void extmoduleInvertedSerialStart(uint32_t baudrate);
|
||||
void extmoduleSendBuffer(const uint8_t * data, uint8_t size);
|
||||
void extmoduleSendNextFrame();
|
||||
|
||||
@@ -84,7 +84,7 @@ void extmodulePpmStart()
|
||||
NVIC_SetPriority(EXTMODULE_TIMER_CC_IRQn, 7);
|
||||
}
|
||||
|
||||
void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us)
|
||||
void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool inverted)
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
@@ -101,7 +101,7 @@ void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us)
|
||||
EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN;
|
||||
EXTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS from 30MHz
|
||||
EXTMODULE_TIMER->ARR = period_half_us;
|
||||
EXTMODULE_TIMER->CCER = EXTMODULE_TIMER_OUTPUT_ENABLE;
|
||||
EXTMODULE_TIMER->CCER = EXTMODULE_TIMER_OUTPUT_ENABLE | (inverted ? 0 : EXTMODULE_TIMER_OUTPUT_POLARITY);
|
||||
EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs
|
||||
EXTMODULE_TIMER->CCR1 = 0;
|
||||
EXTMODULE_TIMER->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0; // Force O/P high
|
||||
|
||||
@@ -73,10 +73,10 @@ void disable_pxx2(uint8_t module)
|
||||
}
|
||||
|
||||
#if defined(DSM2)
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us)
|
||||
void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted)
|
||||
{
|
||||
if (module == EXTERNAL_MODULE) {
|
||||
extmoduleSerialStart(baudrate, period_half_us);
|
||||
extmoduleSerialStart(baudrate, period_half_us, inverted);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user