mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-25 14:54:16 +01:00
RM DSM: Get DSM working on the mainport
Because of the inverter this does not support binding on this port.
This commit is contained in:
parent
300cee44b4
commit
a33f415866
@ -462,7 +462,33 @@ void PIOS_Board_Init(void) {
|
|||||||
case HWSETTINGS_CC_MAINPORT_GPS:
|
case HWSETTINGS_CC_MAINPORT_GPS:
|
||||||
PIOS_Board_configure_com(&pios_usart_main_cfg, PIOS_COM_GPS_RX_BUF_LEN, -1, &pios_usart_com_driver, &pios_com_gps_id);
|
PIOS_Board_configure_com(&pios_usart_main_cfg, PIOS_COM_GPS_RX_BUF_LEN, -1, &pios_usart_com_driver, &pios_com_gps_id);
|
||||||
break;
|
break;
|
||||||
case HWSETTINGS_CC_MAINPORT_COMAUX:
|
case HWSETTINGS_CC_MAINPORT_SBUS:
|
||||||
|
// TODO
|
||||||
|
break;
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSM2:
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSMX10BIT:
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSMX11BIT:
|
||||||
|
{
|
||||||
|
enum pios_dsm_proto proto;
|
||||||
|
switch (hwsettings_mainport) {
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSM2:
|
||||||
|
proto = PIOS_DSM_PROTO_DSM2;
|
||||||
|
break;
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSMX10BIT:
|
||||||
|
proto = PIOS_DSM_PROTO_DSMX10BIT;
|
||||||
|
break;
|
||||||
|
case HWSETTINGS_CC_MAINPORT_DSMX11BIT:
|
||||||
|
proto = PIOS_DSM_PROTO_DSMX11BIT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PIOS_Assert(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//TODO: Define the various Channelgroup for Revo dsm inputs and handle here
|
||||||
|
PIOS_Board_configure_dsm(&pios_usart_dsm_main_cfg, &pios_dsm_main_cfg,
|
||||||
|
&pios_usart_com_driver, &proto, MANUALCONTROLSETTINGS_CHANNELGROUPS_DSMMAINPORT,&hwsettings_DSMxBind);
|
||||||
|
}
|
||||||
|
break; case HWSETTINGS_CC_MAINPORT_COMAUX:
|
||||||
PIOS_Board_configure_com(&pios_usart_main_cfg, PIOS_COM_AUX_RX_BUF_LEN, PIOS_COM_AUX_TX_BUF_LEN, &pios_usart_com_driver, &pios_com_aux_id);
|
PIOS_Board_configure_com(&pios_usart_main_cfg, PIOS_COM_AUX_RX_BUF_LEN, PIOS_COM_AUX_TX_BUF_LEN, &pios_usart_com_driver, &pios_com_aux_id);
|
||||||
break;
|
break;
|
||||||
case HWSETTINGS_CC_MAINPORT_COMBRIDGE:
|
case HWSETTINGS_CC_MAINPORT_COMBRIDGE:
|
||||||
@ -502,13 +528,13 @@ void PIOS_Board_Init(void) {
|
|||||||
{
|
{
|
||||||
enum pios_dsm_proto proto;
|
enum pios_dsm_proto proto;
|
||||||
switch (hwsettings_flexiport) {
|
switch (hwsettings_flexiport) {
|
||||||
case HWSETTINGS_RV_FLEXIPORT_DSM2:
|
case HWSETTINGS_CC_FLEXIPORT_DSM2:
|
||||||
proto = PIOS_DSM_PROTO_DSM2;
|
proto = PIOS_DSM_PROTO_DSM2;
|
||||||
break;
|
break;
|
||||||
case HWSETTINGS_RV_FLEXIPORT_DSMX10BIT:
|
case HWSETTINGS_CC_FLEXIPORT_DSMX10BIT:
|
||||||
proto = PIOS_DSM_PROTO_DSMX10BIT;
|
proto = PIOS_DSM_PROTO_DSMX10BIT;
|
||||||
break;
|
break;
|
||||||
case HWSETTINGS_RV_FLEXIPORT_DSMX11BIT:
|
case HWSETTINGS_CC_FLEXIPORT_DSMX11BIT:
|
||||||
proto = PIOS_DSM_PROTO_DSMX11BIT;
|
proto = PIOS_DSM_PROTO_DSMX11BIT;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -414,6 +414,68 @@ static const struct pios_usart_cfg pios_usart_main_cfg = {
|
|||||||
};
|
};
|
||||||
#endif /* PIOS_INCLUDE_COM_TELEM */
|
#endif /* PIOS_INCLUDE_COM_TELEM */
|
||||||
|
|
||||||
|
#ifdef PIOS_INCLUDE_DSM
|
||||||
|
|
||||||
|
#include "pios_dsm_priv.h"
|
||||||
|
static const struct pios_usart_cfg pios_usart_dsm_main_cfg = {
|
||||||
|
.regs = USART1,
|
||||||
|
.remap = GPIO_AF_USART1,
|
||||||
|
.init = {
|
||||||
|
.USART_BaudRate = 115200,
|
||||||
|
.USART_WordLength = USART_WordLength_8b,
|
||||||
|
.USART_Parity = USART_Parity_No,
|
||||||
|
.USART_StopBits = USART_StopBits_1,
|
||||||
|
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
|
||||||
|
.USART_Mode = USART_Mode_Rx,
|
||||||
|
},
|
||||||
|
.irq = {
|
||||||
|
.init = {
|
||||||
|
.NVIC_IRQChannel = USART1_IRQn,
|
||||||
|
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
|
||||||
|
.NVIC_IRQChannelSubPriority = 0,
|
||||||
|
.NVIC_IRQChannelCmd = ENABLE,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.rx = {
|
||||||
|
.gpio = GPIOA,
|
||||||
|
.init = {
|
||||||
|
.GPIO_Pin = GPIO_Pin_10,
|
||||||
|
.GPIO_Speed = GPIO_Speed_2MHz,
|
||||||
|
.GPIO_Mode = GPIO_Mode_AF,
|
||||||
|
.GPIO_OType = GPIO_OType_PP,
|
||||||
|
.GPIO_PuPd = GPIO_PuPd_UP
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.tx = {
|
||||||
|
.gpio = GPIOA,
|
||||||
|
.init = {
|
||||||
|
.GPIO_Pin = GPIO_Pin_9,
|
||||||
|
.GPIO_Speed = GPIO_Speed_2MHz,
|
||||||
|
.GPIO_Mode = GPIO_Mode_AF,
|
||||||
|
.GPIO_OType = GPIO_OType_PP,
|
||||||
|
.GPIO_PuPd = GPIO_PuPd_UP
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Because of the inverter on the main port this will not
|
||||||
|
// work. Notice the mode is set to IN to maintain API
|
||||||
|
// compatibility but protect the pins
|
||||||
|
static const struct pios_dsm_cfg pios_dsm_main_cfg = {
|
||||||
|
.bind = {
|
||||||
|
.gpio = GPIOA,
|
||||||
|
.init = {
|
||||||
|
.GPIO_Pin = GPIO_Pin_10,
|
||||||
|
.GPIO_Speed = GPIO_Speed_2MHz,
|
||||||
|
.GPIO_Mode = GPIO_Mode_IN,
|
||||||
|
.GPIO_OType = GPIO_OType_PP,
|
||||||
|
.GPIO_PuPd = GPIO_PuPd_NOPULL
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* PIOS_INCLUDE_DSM */
|
||||||
|
|
||||||
#include <pios_sbus_priv.h>
|
#include <pios_sbus_priv.h>
|
||||||
#if defined(PIOS_INCLUDE_SBUS)
|
#if defined(PIOS_INCLUDE_SBUS)
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user