Pulses fixes

This commit is contained in:
Bertrand Songis
2019-04-23 15:35:18 +02:00
parent 75aa2db82a
commit b9b9b0eccb
10 changed files with 22 additions and 20 deletions
+5 -3
View File
@@ -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);
+4 -4
View File
@@ -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:
+1 -1
View File
@@ -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();
+1 -1
View File
@@ -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();
+3 -3
View File
@@ -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);
}
}
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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) {
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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);
}
}