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

3djc/test (#7)

More modules support
This commit is contained in:
3djc 2019-03-14 17:51:59 +01:00 committed by Bertrand Songis
parent a59776a8e8
commit f7f1b1ff7b
27 changed files with 188 additions and 117 deletions

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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,

View file

@ -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:

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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) {

View file

@ -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();

View file

@ -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);

View file

@ -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)

View file

@ -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;
}
}

View file

@ -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();
}

View file

@ -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;

View file

@ -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 "

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"