mirror of
https://github.com/opentx/opentx.git
synced 2025-07-19 14:25:11 +03:00
parent
a59776a8e8
commit
f7f1b1ff7b
27 changed files with 188 additions and 117 deletions
|
@ -546,12 +546,12 @@ bool isInternalModuleAvailable(int module)
|
|||
bool isExternalModuleAvailable(int module)
|
||||
{
|
||||
#if !defined(PXX1)
|
||||
if (module == MODULE_TYPE_XJT || module == MODULE_TYPE_R9M) {
|
||||
if (module == MODULE_TYPE_XJT || module == MODULE_TYPE_R9M || module == MODULE_TYPE_R9M_LITE) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#if !defined(PXX2)
|
||||
if (module == MODULE_TYPE_XJT2 || module == MODULE_TYPE_R9M2) {
|
||||
if (module == MODULE_TYPE_XJT2 || module == MODULE_TYPE_R9M2 || module == MODULE_TYPE_R9M_LITE2 || module == MODULE_TYPE_R9M_LITE_PRO2) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -408,6 +408,9 @@ enum ModuleTypes {
|
|||
MODULE_TYPE_MULTIMODULE,
|
||||
MODULE_TYPE_R9M,
|
||||
MODULE_TYPE_R9M2,
|
||||
MODULE_TYPE_R9M_LITE,
|
||||
MODULE_TYPE_R9M_LITE2,
|
||||
MODULE_TYPE_R9M_LITE_PRO2,
|
||||
MODULE_TYPE_SBUS,
|
||||
MODULE_TYPE_MAX = MODULE_TYPE_SBUS,
|
||||
MODULE_TYPE_COUNT
|
||||
|
|
|
@ -59,7 +59,6 @@ inline bool isModuleXJT2(uint8_t idx)
|
|||
return g_model.moduleData[idx].type == MODULE_TYPE_XJT2;
|
||||
}
|
||||
|
||||
|
||||
inline bool isModuleXJTVariant(uint8_t idx)
|
||||
{
|
||||
return g_model.moduleData[idx].type == MODULE_TYPE_XJT || g_model.moduleData[idx].type == MODULE_TYPE_XJT2;
|
||||
|
@ -112,12 +111,12 @@ inline bool isModulePPM(uint8_t idx)
|
|||
|
||||
inline bool isModuleR9M(uint8_t idx)
|
||||
{
|
||||
return g_model.moduleData[idx].type == MODULE_TYPE_R9M;
|
||||
return g_model.moduleData[idx].type == MODULE_TYPE_R9M || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE;
|
||||
}
|
||||
|
||||
inline bool isModuleR9M2(uint8_t idx)
|
||||
{
|
||||
return g_model.moduleData[idx].type == MODULE_TYPE_R9M2;
|
||||
return g_model.moduleData[idx].type == MODULE_TYPE_R9M2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE2 || g_model.moduleData[idx].type == MODULE_TYPE_R9M_LITE_PRO2;
|
||||
}
|
||||
|
||||
#if defined(PCBXLITE)
|
||||
|
|
|
@ -50,12 +50,26 @@ uint8_t getRequiredProtocol(uint8_t module)
|
|||
break;
|
||||
|
||||
case MODULE_TYPE_XJT:
|
||||
#if defined(INTMODULE_USART)
|
||||
if (module == INTERNAL_MODULE) {
|
||||
protocol = PROTOCOL_CHANNELS_PXX1_SERIAL;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
// no break
|
||||
|
||||
case MODULE_TYPE_R9M:
|
||||
protocol = PROTOCOL_CHANNELS_PXX1;
|
||||
protocol = PROTOCOL_CHANNELS_PXX1_PULSES;
|
||||
break;
|
||||
|
||||
case MODULE_TYPE_R9M_LITE:
|
||||
protocol = PROTOCOL_CHANNELS_PXX1_SERIAL;
|
||||
break;
|
||||
|
||||
case MODULE_TYPE_XJT2:
|
||||
case MODULE_TYPE_R9M2:
|
||||
case MODULE_TYPE_R9M_LITE2:
|
||||
case MODULE_TYPE_R9M_LITE_PRO2:
|
||||
protocol = PROTOCOL_CHANNELS_PXX2;
|
||||
break;
|
||||
|
||||
|
@ -119,10 +133,18 @@ void disablePulses(uint8_t module, uint8_t protocol)
|
|||
// stop existing protocol hardware
|
||||
|
||||
switch (protocol) {
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
disable_pxx(module);
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
disable_pxx1_pulses(module);
|
||||
break;
|
||||
|
||||
#if defined(INTMODULE_USART) || defined(EXTMODULE_USART)
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
disable_pxx1_serial(module);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
case PROTOCOL_CHANNELS_DSM2_LP45:
|
||||
case PROTOCOL_CHANNELS_DSM2_DSM2:
|
||||
|
@ -137,9 +159,11 @@ void disablePulses(uint8_t module, uint8_t protocol)
|
|||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PXX2)
|
||||
case PROTOCOL_CHANNELS_PXX2:
|
||||
disable_pxx2(module);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTOCOL_CHANNELS_MULTIMODULE:
|
||||
|
@ -159,10 +183,18 @@ void enablePulses(uint8_t module, uint8_t protocol)
|
|||
// start new protocol hardware here
|
||||
|
||||
switch (protocol) {
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
init_pxx(module);
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
init_pxx1_pulses(module);
|
||||
break;
|
||||
|
||||
#if defined(INTMODULE_USART) || defined(EXTMODULE_USART)
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
init_pxx1_serial(module);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
case PROTOCOL_CHANNELS_DSM2_LP45:
|
||||
case PROTOCOL_CHANNELS_DSM2_DSM2:
|
||||
|
@ -177,9 +209,11 @@ void enablePulses(uint8_t module, uint8_t protocol)
|
|||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PXX2)
|
||||
case PROTOCOL_CHANNELS_PXX2:
|
||||
init_pxx2(module);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
case PROTOCOL_CHANNELS_MULTIMODULE:
|
||||
|
@ -197,28 +231,19 @@ void enablePulses(uint8_t module, uint8_t protocol)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(PXX1)
|
||||
void setupPulsesPXXInternalModule()
|
||||
{
|
||||
#if defined(INTMODULE_USART)
|
||||
intmodulePulsesData.pxx_uart.setupFrame(INTERNAL_MODULE);
|
||||
#else
|
||||
intmodulePulsesData.pxx.setupFrame(INTERNAL_MODULE);
|
||||
#endif
|
||||
}
|
||||
|
||||
void setupPulsesPXXExternalModule()
|
||||
{
|
||||
extmodulePulsesData.pxx.setupFrame(EXTERNAL_MODULE);
|
||||
}
|
||||
#endif
|
||||
|
||||
void setupPulsesInternalModule(uint8_t protocol)
|
||||
{
|
||||
switch (protocol) {
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
setupPulsesPXXInternalModule();
|
||||
#if defined(PXX1) && !defined(INTMODULE_USART)
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
intmodulePulsesData.pxx.setupFrame(INTERNAL_MODULE);
|
||||
scheduleNextMixerCalculation(INTERNAL_MODULE, INTMODULE_PXX_PERIOD);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PXX1) && defined(INTMODULE_USART)
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
intmodulePulsesData.pxx_uart.setupFrame(INTERNAL_MODULE);
|
||||
scheduleNextMixerCalculation(INTERNAL_MODULE, INTMODULE_PXX_PERIOD);
|
||||
break;
|
||||
#endif
|
||||
|
@ -246,9 +271,14 @@ void setupPulsesExternalModule(uint8_t protocol)
|
|||
{
|
||||
switch (protocol) {
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
setupPulsesPXXExternalModule();
|
||||
scheduleNextMixerCalculation(EXTERNAL_MODULE, EXTMODULE_PXX_PERIOD);
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
extmodulePulsesData.pxx.setupFrame(EXTERNAL_MODULE);
|
||||
scheduleNextMixerCalculation(EXTERNAL_MODULE, PXX_PULSES_PERIOD);
|
||||
break;
|
||||
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
extmodulePulsesData.pxx_uart.setupFrame(EXTERNAL_MODULE);
|
||||
scheduleNextMixerCalculation(EXTERNAL_MODULE, EXTMODULE_PXX_SERIAL_PERIOD);
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -152,6 +152,9 @@ union InternalModulePulsesData {
|
|||
|
||||
union ExternalModulePulsesData {
|
||||
#if defined(PXX1)
|
||||
#if defined(EXTMODULE_USART)
|
||||
UartPxx1Pulses pxx_uart;
|
||||
#endif
|
||||
#if defined(PPM_PIN_SERIAL)
|
||||
SerialPxx1Pulses pxx;
|
||||
#else
|
||||
|
@ -225,7 +228,8 @@ enum ChannelsProtocols {
|
|||
PROTOCOL_CHANNELS_NONE,
|
||||
PROTOCOL_CHANNELS_PPM,
|
||||
#if defined(PXX) || defined(DSM2)
|
||||
PROTOCOL_CHANNELS_PXX1,
|
||||
PROTOCOL_CHANNELS_PXX1_PULSES,
|
||||
PROTOCOL_CHANNELS_PXX1_SERIAL,
|
||||
#endif
|
||||
#if defined(DSM2)
|
||||
PROTOCOL_CHANNELS_DSM2_LP45,
|
||||
|
|
|
@ -27,21 +27,23 @@
|
|||
#define PXX_SEND_FAILSAFE (1 << 4)
|
||||
#define PXX_SEND_RANGECHECK (1 << 5)
|
||||
|
||||
#define PXX2_ON_SPORT_BAUDRATE 230400
|
||||
#define PXX2_PERIOD 4 // 4ms
|
||||
#define PXX2_FRAME_MAXLENGTH 64
|
||||
#define PXX2_ON_SPORT_BAUDRATE 230400
|
||||
#define PXX2_PERIOD 4 // 4ms
|
||||
#define PXX2_FRAME_MAXLENGTH 64
|
||||
|
||||
#define EXTMODULE_PXX_PERIOD 9/*ms*/
|
||||
#define PXX_PULSES_PERIOD 9/*ms*/
|
||||
#define EXTMODULE_PXX_SERIAL_PERIOD 4/*ms*/
|
||||
#define EXTMODULE_PXX_SERIAL_BAUDRATE 420000
|
||||
|
||||
#if defined(PXX_FREQUENCY_HIGH)
|
||||
#define INTMODULE_USART_PXX_BAUDRATE 450000
|
||||
#define INTMODULE_PXX_BAUDRATE 450000
|
||||
#define INTMODULE_PXX_PERIOD 4/*ms*/
|
||||
#else
|
||||
#define INTMODULE_USART_PXX_BAUDRATE 115200
|
||||
#define INTMODULE_PXX_BAUDRATE 115200
|
||||
#define INTMODULE_PXX_PERIOD 9/*ms*/
|
||||
#endif
|
||||
|
||||
#define EXTMODULE_USART_PXX2_BAUDRATE 450000
|
||||
#define EXTMODULE_USART_PXX2_BAUDRATE 450000
|
||||
|
||||
#if defined(PXX_FREQUENCY_HIGH) && (!defined(INTMODULE_USART) || !defined(EXTMODULE_USART))
|
||||
/* PXX uses 20 bytes (as of Rev 1.1 document) with 8 changes per byte + stop bit ~= 162 max pulses */
|
||||
|
@ -53,9 +55,6 @@
|
|||
#error "Pulses array needs to be increased (PXX_FREQUENCY=HIGH)"
|
||||
#endif
|
||||
|
||||
|
||||
#define PXX_PERIOD_HALF_US (PXX_PERIOD * 2000)
|
||||
|
||||
// Used by the Sky9x family boards
|
||||
class SerialPxxBitTransport: public DataBuffer<uint8_t, 64> {
|
||||
protected:
|
||||
|
|
|
@ -216,10 +216,10 @@ void Pxx1Pulses<PxxTransport>::add8ChannelsFrame(uint8_t module, uint8_t sendUpp
|
|||
template <class PxxTransport>
|
||||
void Pxx1Pulses<PxxTransport>::setupFrame(uint8_t module)
|
||||
{
|
||||
PxxTransport::initFrame(module == INTERNAL_MODULE ? INTMODULE_PXX_PERIOD : EXTMODULE_PXX_PERIOD);
|
||||
PxxTransport::initFrame(PXX_PULSES_PERIOD);
|
||||
|
||||
#if defined(PXX_FREQUENCY_HIGH)
|
||||
if (module == INTERNAL_MODULE) {
|
||||
if (moduleSettings[module].protocol == PROTOCOL_CHANNELS_PXX1_SERIAL) {
|
||||
add8ChannelsFrame(module, 0);
|
||||
if (sentModuleChannels(module) > 8) {
|
||||
add8ChannelsFrame(module, 8);
|
||||
|
|
|
@ -41,7 +41,7 @@ void intmoduleStop()
|
|||
|
||||
void intmodulePxxStart()
|
||||
{
|
||||
intmoduleSerialStart(INTMODULE_USART_PXX_BAUDRATE, false);
|
||||
intmoduleSerialStart(INTMODULE_PXX_BAUDRATE, false);
|
||||
}
|
||||
|
||||
void intmoduleSerialStart(uint32_t baudrate, uint8_t rxEnable)
|
||||
|
@ -138,8 +138,9 @@ void intmoduleSendNextFrame()
|
|||
intmoduleSendBuffer(intmodulePulsesData.pxx2.getData(), intmodulePulsesData.pxx2.getSize());
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
intmoduleSendBuffer(intmodulePulsesData.pxx_uart.getData(), intmodulePulsesData.pxx_uart.getSize());
|
||||
break;
|
||||
#endif
|
||||
|
|
|
@ -209,8 +209,8 @@ extern HardwareOptions hardwareOptions;
|
|||
|
||||
void init_ppm(uint8_t module);
|
||||
void disable_ppm(uint8_t module);
|
||||
void init_pxx(uint8_t module);
|
||||
void disable_pxx(uint8_t module);
|
||||
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);
|
||||
|
|
|
@ -232,7 +232,7 @@ void extmoduleSendNextFrame()
|
|||
EXTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
}
|
||||
#if defined(PXX1)
|
||||
else if (moduleSettings[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX1) {
|
||||
else if (moduleSettings[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX1_PULSES) {
|
||||
EXTMODULE_TIMER->CCR2 = extmodulePulsesData.pxx.getLast() - 4000; // 2mS in advance
|
||||
EXTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
#if defined(PCBX10) || PCBREV >= 13
|
||||
|
@ -245,6 +245,9 @@ void extmoduleSendNextFrame()
|
|||
EXTMODULE_DMA_STREAM->NDTR = extmodulePulsesData.pxx.getSize();
|
||||
EXTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
}
|
||||
else if (moduleSettings[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX1_SERIAL) {
|
||||
#warning "Take it from 2.2"
|
||||
}
|
||||
#endif
|
||||
#if defined(PXX2)
|
||||
else if (moduleSettings[EXTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX2) {
|
||||
|
|
|
@ -48,7 +48,7 @@ void disable_ppm(uint8_t module)
|
|||
void init_pxx2(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmoduleSerialStart(INTMODULE_USART_PXX_BAUDRATE, true);
|
||||
intmoduleSerialStart(INTMODULE_PXX_BAUDRATE, true);
|
||||
else
|
||||
extmodulePxx2Start();
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ void disable_pxx2(uint8_t module)
|
|||
extmoduleStop();
|
||||
}
|
||||
|
||||
void init_pxx(uint8_t module)
|
||||
void init_pxx1_pulses(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmodulePxxStart();
|
||||
|
@ -69,7 +69,7 @@ void init_pxx(uint8_t module)
|
|||
extmodulePxxStart();
|
||||
}
|
||||
|
||||
void disable_pxx(uint8_t module)
|
||||
void disable_pxx1_pulses(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmoduleStop();
|
||||
|
|
|
@ -177,8 +177,10 @@ void init_ppm(uint8_t module);
|
|||
void disable_ppm(uint8_t module);
|
||||
void init_pxx2(uint8_t module);
|
||||
void disable_pxx2(uint8_t module);
|
||||
void init_pxx(uint8_t module);
|
||||
void disable_pxx(uint8_t module);
|
||||
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 disable_serial(uint8_t module);
|
||||
void intmoduleStop();
|
||||
|
@ -192,7 +194,8 @@ void intmoduleSendNextFrame();
|
|||
|
||||
void extmoduleStop();
|
||||
void extmodulePpmStart();
|
||||
void extmodulePxxStart();
|
||||
void extmodulePxxPulsesStart();
|
||||
void extmodulePxxSerialStart();
|
||||
void extmodulePxx2Start();
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us);
|
||||
void extmoduleInvertedSerialStart(uint32_t baudrate);
|
||||
|
|
|
@ -207,7 +207,7 @@ void extmodulePxx2Start()
|
|||
#endif
|
||||
|
||||
#if defined(PXX1)
|
||||
void extmodulePxxStart()
|
||||
void extmodulePxxPulsesStart()
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
|
@ -223,7 +223,7 @@ void extmodulePxxStart()
|
|||
|
||||
EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN;
|
||||
EXTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS (2Mhz)
|
||||
EXTMODULE_TIMER->ARR = EXTMODULE_PXX_PERIOD * 2000; // 0.5uS (2Mhz)
|
||||
EXTMODULE_TIMER->ARR = PXX_PULSES_PERIOD * 2000; // 0.5uS (2Mhz)
|
||||
EXTMODULE_TIMER->CCER = EXTMODULE_TIMER_OUTPUT_ENABLE | EXTMODULE_TIMER_OUTPUT_POLARITY; // polarity, default low
|
||||
EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs
|
||||
EXTMODULE_TIMER->CCR1 = 18;
|
||||
|
@ -243,6 +243,13 @@ void extmodulePxxStart()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(PXX1) && defined(EXTMODULE_USART)
|
||||
void extmodulePxxSerialStart()
|
||||
{
|
||||
extmoduleInvertedSerialStart(EXTMODULE_PXX_SERIAL_BAUDRATE);
|
||||
}
|
||||
#endif
|
||||
|
||||
void extmoduleSendNextFrame()
|
||||
{
|
||||
switch(moduleSettings[EXTERNAL_MODULE].protocol) {
|
||||
|
@ -259,7 +266,7 @@ void extmoduleSendNextFrame()
|
|||
break;
|
||||
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1:
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
EXTMODULE_TIMER->CCR2 = extmodulePulsesData.pxx.getLast() - 4000; // 2mS in advance
|
||||
EXTMODULE_TIMER_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
EXTMODULE_TIMER_DMA_STREAM->CR |= EXTMODULE_TIMER_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
|
||||
|
@ -268,6 +275,10 @@ void extmoduleSendNextFrame()
|
|||
EXTMODULE_TIMER_DMA_STREAM->NDTR = extmodulePulsesData.pxx.getSize();
|
||||
EXTMODULE_TIMER_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
break;
|
||||
|
||||
case PROTOCOL_CHANNELS_PXX1_SERIAL:
|
||||
extmoduleSendBuffer(extmodulePulsesData.pxx_uart.getData(), extmodulePulsesData.pxx_uart.getSize());
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(PXX2)
|
||||
|
|
|
@ -34,34 +34,36 @@ void intmoduleStop()
|
|||
|
||||
void intmoduleSendNextFrame()
|
||||
{
|
||||
if (0) {
|
||||
}
|
||||
switch (moduleSettings[INTERNAL_MODULE].protocol) {
|
||||
#if defined(PXX1)
|
||||
else if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX1) {
|
||||
INTMODULE_TIMER->CCR2 = intmodulePulsesData.pxx.getLast() - 4000; // 2mS in advance
|
||||
INTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
INTMODULE_DMA_STREAM->CR |= INTMODULE_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
|
||||
INTMODULE_DMA_STREAM->PAR = CONVERT_PTR_UINT(&INTMODULE_TIMER->ARR);
|
||||
INTMODULE_DMA_STREAM->M0AR = CONVERT_PTR_UINT(intmodulePulsesData.pxx.getData());
|
||||
INTMODULE_DMA_STREAM->NDTR = intmodulePulsesData.pxx.getSize();
|
||||
INTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
}
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
INTMODULE_TIMER->CCR2 = intmodulePulsesData.pxx.getLast() - 4000; // 2mS in advance
|
||||
INTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
INTMODULE_DMA_STREAM->CR |= INTMODULE_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
|
||||
INTMODULE_DMA_STREAM->PAR = CONVERT_PTR_UINT(&INTMODULE_TIMER->ARR);
|
||||
INTMODULE_DMA_STREAM->M0AR = CONVERT_PTR_UINT(intmodulePulsesData.pxx.getData());
|
||||
INTMODULE_DMA_STREAM->NDTR = intmodulePulsesData.pxx.getSize();
|
||||
INTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(TARANIS_INTERNAL_PPM)
|
||||
else if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PPM) {
|
||||
INTMODULE_TIMER->CCR3 = GET_MODULE_PPM_DELAY(INTERNAL_MODULE) * 2;
|
||||
INTMODULE_TIMER->CCER = TIM_CCER_CC3E | (GET_MODULE_PPM_POLARITY(INTERNAL_MODULE) ? 0 : TIM_CCER_CC3P);
|
||||
INTMODULE_TIMER->CCR2 = *(intmodulePulsesData.ppm.ptr - 1) - 4000; // 2mS in advance
|
||||
INTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
INTMODULE_DMA_STREAM->CR |= INTMODULE_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
|
||||
INTMODULE_DMA_STREAM->PAR = CONVERT_PTR_UINT(&INTMODULE_TIMER->ARR);
|
||||
INTMODULE_DMA_STREAM->M0AR = CONVERT_PTR_UINT(intmodulePulsesData.ppm.pulses);
|
||||
INTMODULE_DMA_STREAM->NDTR = intmodulePulsesData.ppm.ptr - intmodulePulsesData.ppm.pulses;
|
||||
INTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
}
|
||||
case PROTOCOL_CHANNELS_PPM:
|
||||
INTMODULE_TIMER->CCR3 = GET_MODULE_PPM_DELAY(INTERNAL_MODULE) * 2;
|
||||
INTMODULE_TIMER->CCER = TIM_CCER_CC3E | (GET_MODULE_PPM_POLARITY(INTERNAL_MODULE) ? 0 : TIM_CCER_CC3P);
|
||||
INTMODULE_TIMER->CCR2 = *(intmodulePulsesData.ppm.ptr - 1) - 4000; // 2mS in advance
|
||||
INTMODULE_DMA_STREAM->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
INTMODULE_DMA_STREAM->CR |= INTMODULE_DMA_CHANNEL | DMA_SxCR_DIR_0 | DMA_SxCR_MINC | DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PL_0 | DMA_SxCR_PL_1;
|
||||
INTMODULE_DMA_STREAM->PAR = CONVERT_PTR_UINT(&INTMODULE_TIMER->ARR);
|
||||
INTMODULE_DMA_STREAM->M0AR = CONVERT_PTR_UINT(intmodulePulsesData.ppm.pulses);
|
||||
INTMODULE_DMA_STREAM->NDTR = intmodulePulsesData.ppm.ptr - intmodulePulsesData.ppm.pulses;
|
||||
INTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
break;
|
||||
#endif
|
||||
else {
|
||||
INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE;
|
||||
|
||||
default:
|
||||
INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,17 +20,24 @@
|
|||
|
||||
#include "opentx.h"
|
||||
|
||||
void init_pxx(uint8_t module)
|
||||
{
|
||||
#if defined(PXX1)
|
||||
void init_pxx1_pulses(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmodulePxxStart();
|
||||
else
|
||||
extmodulePxxStart();
|
||||
#endif
|
||||
extmodulePxxPulsesStart();
|
||||
}
|
||||
|
||||
void disable_pxx(uint8_t module)
|
||||
void init_pxx1_serial(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmodulePxxStart();
|
||||
else
|
||||
extmodulePxxSerialStart();
|
||||
}
|
||||
|
||||
void disable_pxx1_pulses(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmoduleStop();
|
||||
|
@ -38,10 +45,19 @@ void disable_pxx(uint8_t module)
|
|||
extmoduleStop();
|
||||
}
|
||||
|
||||
void disable_pxx1_serial(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmoduleStop();
|
||||
else
|
||||
extmoduleStop();
|
||||
}
|
||||
#endif
|
||||
|
||||
void init_pxx2(uint8_t module)
|
||||
{
|
||||
if (module == INTERNAL_MODULE)
|
||||
intmoduleSerialStart(INTMODULE_USART_PXX_BAUDRATE, true);
|
||||
intmoduleSerialStart(INTMODULE_PXX_BAUDRATE, true);
|
||||
else
|
||||
extmodulePxx2Start();
|
||||
}
|
||||
|
|
|
@ -78,8 +78,8 @@ bool isModuleSynchronous(uint8_t module)
|
|||
uint8_t protocol = moduleSettings[module].protocol;
|
||||
if (protocol == PROTOCOL_CHANNELS_PXX2 || protocol == PROTOCOL_CHANNELS_CROSSFIRE || protocol == PROTOCOL_CHANNELS_NONE)
|
||||
return true;
|
||||
#if defined(INTMODULE_USART)
|
||||
if (protocol == PROTOCOL_CHANNELS_PXX1 && module == INTERNAL_MODULE)
|
||||
#if defined(INTMODULE_USART) || defined(EXTMODULE_USART)
|
||||
if (protocol == PROTOCOL_CHANNELS_PXX1_SERIAL)
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
|
|
|
@ -99,11 +99,11 @@
|
|||
#define LEN_USBMODES TR("\006", "\010")
|
||||
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
|
||||
|
||||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
|
||||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "Vyp\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "Vyp\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 FrSky D\0 FrSky D (kabel)Spektrum\0 "
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "AUS\0""PPM\0""XJT\0""DSM?""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "AUS\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (Kabel)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -106,8 +106,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "UIT\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "UIT\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -104,8 +104,8 @@
|
|||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Popup\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS )"OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
|
@ -101,11 +101,11 @@
|
|||
#define LEN_USBMODES TR("\006", "\010")
|
||||
#define TR_USBMODES TR("Ask\0 ""Joyst\0""SDCard""Serial", "Ask\0 ""Joystick""Storage\0""Serial\0 ")
|
||||
|
||||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
#define LEN_JACKMODES "\007"
|
||||
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
|
||||
|
||||
#define LEN_TARANIS_PROTOCOLS "\004"
|
||||
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""R9M2""SBUS"
|
||||
#define LEN_TARANIS_PROTOCOLS "\005"
|
||||
#define TR_TARANIS_PROTOCOLS "Av\0 ""PPM\0 ""XJT\0 ""XJT2\0""DSM2\0""CRSF\0""MULT\0""R9M\0 ""R9M2\0""R9LT\0""R9LT2""R9LP2""SBUS\0"
|
||||
|
||||
#define LEN_TELEMETRY_PROTOCOLS "\017"
|
||||
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue