Refactoring around trainer
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) OpenTX
|
||||
*
|
||||
* Based on code named
|
||||
* th9x - http://code.google.com/p/th9x
|
||||
* er9x - http://code.google.com/p/er9x
|
||||
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||
*
|
||||
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
volatile uint32_t HearbeatCapture = 0;
|
||||
|
||||
void init_xjt_heartbeat()
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Pin = HEARTBEAT_GPIO_PIN;
|
||||
GPIO_Init(HEARTBEAT_GPIO, &GPIO_InitStructure);
|
||||
|
||||
SYSCFG_EXTILineConfig(HEARTBEAT_EXTI_PortSource, HEARTBEAT_EXTI_PinSource);
|
||||
|
||||
EXTI_InitTypeDef EXTI_InitStructure;
|
||||
EXTI_StructInit(&EXTI_InitStructure);
|
||||
EXTI_InitStructure.EXTI_Line = HEARTBEAT_EXTI_LINE;
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
EXTI_Init(&EXTI_InitStructure);
|
||||
|
||||
NVIC_SetPriority(HEARTBEAT_EXTI_IRQn, 0); // Highest priority interrupt
|
||||
NVIC_EnableIRQ(HEARTBEAT_EXTI_IRQn);
|
||||
}
|
||||
|
||||
void stop_xjt_heartbeat()
|
||||
{
|
||||
NVIC_DisableIRQ(HEARTBEAT_EXTI_IRQn);
|
||||
}
|
||||
|
||||
extern "C" void HEARTBEAT_EXTI_IRQHandler()
|
||||
{
|
||||
if (EXTI_GetITStatus(HEARTBEAT_EXTI_LINE) != RESET) {
|
||||
HearbeatCapture = TIMER_2MHz_TIMER->CNT;
|
||||
EXTI_ClearITPendingBit(HEARTBEAT_EXTI_LINE);
|
||||
}
|
||||
}
|
||||
@@ -625,7 +625,7 @@
|
||||
#endif
|
||||
|
||||
// Heartbeat (not used)
|
||||
#define HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define TRAINER_MODULE_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define HEARTBEAT_GPIO GPIOD
|
||||
#define HEARTBEAT_GPIO_PIN GPIO_Pin_12 // PD.12
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ void boardInit()
|
||||
SPORT_UPDATE_RCC_AHB1Periph |
|
||||
AUX_SERIAL_RCC_AHB1Periph |
|
||||
TRAINER_RCC_AHB1Periph |
|
||||
HEARTBEAT_RCC_AHB1Periph |
|
||||
TRAINER_MODULE_RCC_AHB1Periph |
|
||||
BT_RCC_AHB1Periph |
|
||||
GYRO_RCC_AHB1Periph,
|
||||
ENABLE);
|
||||
@@ -173,6 +173,7 @@ void boardInit()
|
||||
TELEMETRY_RCC_APB1Periph |
|
||||
AUX_SERIAL_RCC_APB1Periph |
|
||||
INTMODULE_RCC_APB1Periph |
|
||||
TRAINER_MODULE_RCC_APB1Periph |
|
||||
BT_RCC_APB1Periph |
|
||||
GYRO_RCC_APB1Periph,
|
||||
ENABLE);
|
||||
@@ -183,7 +184,7 @@ void boardInit()
|
||||
HAPTIC_RCC_APB2Periph |
|
||||
INTMODULE_RCC_APB2Periph |
|
||||
EXTMODULE_RCC_APB2Periph |
|
||||
HEARTBEAT_RCC_APB2Periph |
|
||||
TRAINER_MODULE_RCC_APB2Periph |
|
||||
BT_RCC_APB2Periph,
|
||||
ENABLE);
|
||||
|
||||
@@ -361,10 +362,10 @@ void checkTrainerSettings()
|
||||
stop_trainer_ppm();
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE:
|
||||
stop_cppm_on_heartbeat_capture() ;
|
||||
stop_trainer_module_cppm() ;
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
|
||||
stop_sbus_on_heartbeat_capture() ;
|
||||
stop_trainer_module_sbus() ;
|
||||
break;
|
||||
#if defined(TRAINER_BATTERY_COMPARTMENT)
|
||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||
@@ -378,10 +379,10 @@ void checkTrainerSettings()
|
||||
init_trainer_ppm();
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE:
|
||||
init_cppm_on_heartbeat_capture();
|
||||
init_trainer_module_cppm();
|
||||
break;
|
||||
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
|
||||
init_sbus_on_heartbeat_capture();
|
||||
init_trainer_module_sbus();
|
||||
break;
|
||||
#if defined(TRAINER_BATTERY_COMPARTMENT)
|
||||
case TRAINER_MODE_MASTER_BATTERY_COMPARTMENT:
|
||||
|
||||
@@ -255,16 +255,19 @@ void extmoduleSendNextFrame();
|
||||
#define init_trainer_capture()
|
||||
#define stop_trainer_capture()
|
||||
#endif
|
||||
#if defined(TRAINER_MODULE_HEARTBEAT)
|
||||
void init_cppm_on_heartbeat_capture(void);
|
||||
void stop_cppm_on_heartbeat_capture(void);
|
||||
void init_sbus_on_heartbeat_capture(void);
|
||||
void stop_sbus_on_heartbeat_capture(void);
|
||||
#if defined(TRAINER_MODULE_CPPM)
|
||||
void init_trainer_module_cppm(void);
|
||||
void stop_trainer_module_cppm(void);
|
||||
#else
|
||||
#define init_cppm_on_heartbeat_capture()
|
||||
#define stop_cppm_on_heartbeat_capture()
|
||||
#define init_sbus_on_heartbeat_capture()
|
||||
#define stop_sbus_on_heartbeat_capture()
|
||||
#define init_trainer_module_cppm()
|
||||
#define stop_trainer_module_cppm()
|
||||
#endif
|
||||
#if defined(TRAINER_MODULE_SBUS)
|
||||
void init_trainer_module_sbus(void);
|
||||
void stop_trainer_module_sbus(void);
|
||||
#else
|
||||
#define init_trainer_module_sbus()
|
||||
#define stop_trainer_module_sbus()
|
||||
#endif
|
||||
|
||||
// SBUS
|
||||
|
||||
@@ -1162,26 +1162,52 @@
|
||||
#define SPORT_UPDATE_RCC_AHB1Periph 0
|
||||
#endif
|
||||
|
||||
// Heartbeat
|
||||
// Heartbeat for XJT synchro
|
||||
#if defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#define HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define HEARTBEAT_RCC_APB2Periph 0
|
||||
#define HEARTBEAT_GPIO GPIOD
|
||||
#define HEARTBEAT_GPIO_PIN GPIO_Pin_15 // PD.15
|
||||
#define HEARTBEAT_GPIO_PIN GPIO_Pin_15
|
||||
#define HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOD
|
||||
#define HEARTBEAT_EXTI_PinSource GPIO_PinSource15
|
||||
#define HEARTBEAT_EXTI_LINE EXTI_Line15
|
||||
#define HEARTBEAT_EXTI_IRQn EXTI15_10_IRQn
|
||||
#define HEARTBEAT_EXTI_IRQHandler EXTI15_10_IRQHandler
|
||||
#else
|
||||
#define TRAINER_MODULE_HEARTBEAT
|
||||
#define HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
|
||||
#define HEARTBEAT_RCC_APB2Periph RCC_APB2Periph_USART6
|
||||
#define HEARTBEAT_GPIO GPIOC
|
||||
#define HEARTBEAT_GPIO_PIN GPIO_Pin_7 // PC.07
|
||||
#define HEARTBEAT_GPIO_PinSource GPIO_PinSource7
|
||||
#define HEARTBEAT_GPIO_AF_SBUS GPIO_AF_USART6
|
||||
#define HEARTBEAT_GPIO_AF_CAPTURE GPIO_AF_TIM3
|
||||
#define HEARTBEAT_USART USART6
|
||||
#define HEARTBEAT_USART_IRQHandler USART6_IRQHandler
|
||||
#define HEARTBEAT_USART_IRQn USART6_IRQn
|
||||
#define HEARTBEAT_DMA_Stream DMA2_Stream1
|
||||
#define HEARTBEAT_DMA_Channel DMA_Channel_5
|
||||
#define HEARTBEAT_GPIO_PIN GPIO_Pin_7
|
||||
#define HEARTBEAT_EXTI_PortSource EXTI_PortSourceGPIOC
|
||||
#define HEARTBEAT_EXTI_PinSource GPIO_PinSource7
|
||||
#define HEARTBEAT_EXTI_LINE EXTI_Line7
|
||||
#define HEARTBEAT_EXTI_IRQn EXTI9_5_IRQn
|
||||
#define HEARTBEAT_EXTI_IRQHandler EXTI9_5_IRQHandler
|
||||
#endif
|
||||
|
||||
// Trainer / Trainee from the module bay
|
||||
#if defined(PCBXLITE) || defined(PCBX9LITE)
|
||||
#define TRAINER_MODULE_CPPM
|
||||
#define TRAINER_MODULE_RCC_AHB1Periph RCC_AHB1Periph_GPIOD
|
||||
#define TRAINER_MODULE_RCC_APB1Periph RCC_APB1Periph_TIM4
|
||||
#define TRAINER_MODULE_RCC_APB2Periph 0
|
||||
#define TRAINER_MODULE_CPPM_GPIO HEARTBEAT_GPIO
|
||||
#define TRAINER_MODULE_CPPM_GPIO_PIN HEARTBEAT_GPIO_PIN
|
||||
#define TRAINER_MODULE_CPPM_GPIO_PinSource GPIO_PinSource15
|
||||
#define TRAINER_MODULE_CPPM_GPIO_AF GPIO_AF_TIM4
|
||||
#else
|
||||
#define TRAINER_MODULE_CPPM
|
||||
#define TRAINER_MODULE_SBUS
|
||||
#define TRAINER_MODULE_RCC_AHB1Periph RCC_AHB1Periph_GPIOC
|
||||
#define TRAINER_MODULE_RCC_APB2Periph RCC_APB2Periph_USART6
|
||||
#define TRAINER_MODULE_CPPM_GPIO HEARTBEAT_GPIO
|
||||
#define TRAINER_MODULE_CPPM_GPIO_PIN HEARTBEAT_GPIO_PIN
|
||||
#define TRAINER_MODULE_CPPM_GPIO_PinSource GPIO_PinSource7
|
||||
#define TRAINER_MODULE_SBUS_GPIO_AF GPIO_AF_USART6
|
||||
#define TRAINER_MODULE_CPPM_GPIO_AF GPIO_AF_TIM3
|
||||
#define TRAINER_MODULE_SBUS_USART USART6
|
||||
#define TRAINER_MODULE_SBUS_USART_IRQHandler USART6_IRQHandler
|
||||
#define TRAINER_MODULE_SBUS_USART_IRQn USART6_IRQn
|
||||
#define TRAINER_MODULE_SBUS_DMA_Stream DMA2_Stream1
|
||||
#define TRAINER_MODULE_SBUS_DMA_Channel DMA_Channel_5
|
||||
#endif
|
||||
|
||||
// USB
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
extern volatile uint32_t HeartbeatCapture;
|
||||
|
||||
void intmoduleStop()
|
||||
{
|
||||
INTERNAL_MODULE_OFF();
|
||||
@@ -37,6 +39,8 @@ void intmoduleSendNextFrame()
|
||||
switch (moduleState[INTERNAL_MODULE].protocol) {
|
||||
#if defined(PXX1)
|
||||
case PROTOCOL_CHANNELS_PXX1_PULSES:
|
||||
{
|
||||
INTMODULE_TIMER->ARR = TIMER_2MHz_TIMER->CNT - HeartbeatCapture > 0x2A00 ? 17979 : 18019;
|
||||
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;
|
||||
@@ -45,6 +49,7 @@ void intmoduleSendNextFrame()
|
||||
INTMODULE_DMA_STREAM->NDTR = intmodulePulsesData.pxx.getSize();
|
||||
INTMODULE_DMA_STREAM->CR |= DMA_SxCR_EN | DMA_SxCR_TCIE; // Enable DMA
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(INTERNAL_MODULE_PPM)
|
||||
|
||||
@@ -228,7 +228,7 @@ void keysInit()
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
|
||||
#if defined(KEYS_GPIOA_PINS)
|
||||
GPIO_InitStructure.GPIO_Pin = KEYS_GPIOA_PINS;
|
||||
|
||||
@@ -53,11 +53,11 @@ void pwrInit()
|
||||
GPIO_Init(TRAINER_DETECT_GPIO, &GPIO_InitStructure);
|
||||
#endif
|
||||
|
||||
#if defined(INTMODULE_USART) && defined(HEARTBEAT_GPIO_PIN)
|
||||
GPIO_SetBits(HEARTBEAT_GPIO, HEARTBEAT_GPIO_PIN);
|
||||
GPIO_InitStructure.GPIO_Pin = HEARTBEAT_GPIO_PIN;
|
||||
#if defined(INTMODULE_USART) && defined(TRAINER_MODULE_CPPM_GPIO_PIN)
|
||||
GPIO_SetBits(TRAINER_MODULE_CPPM_GPIO, TRAINER_MODULE_CPPM_GPIO_PIN);
|
||||
GPIO_InitStructure.GPIO_Pin = TRAINER_MODULE_CPPM_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(HEARTBEAT_GPIO, &GPIO_InitStructure);
|
||||
GPIO_Init(TRAINER_MODULE_CPPM_GPIO, &GPIO_InitStructure);
|
||||
#endif
|
||||
|
||||
pwrOn();
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
#if defined(HEARTBEAT_USART)
|
||||
DMAFifo<32> heartbeatFifo __DMA (HEARTBEAT_DMA_Stream);
|
||||
#if defined(TRAINER_MODULE_SBUS_USART)
|
||||
DMAFifo<32> heartbeatFifo __DMA (TRAINER_MODULE_SBUS_DMA_Stream);
|
||||
#endif
|
||||
|
||||
void trainerSendNextFrame();
|
||||
@@ -161,7 +161,7 @@ extern "C" void TRAINER_TIMER_IRQHandler()
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(TRAINER_MODULE_HEARTBEAT)
|
||||
#if defined(TRAINER_MODULE_CPPM)
|
||||
if ((TRAINER_TIMER->DIER & TIM_DIER_CC2IE) && (TRAINER_TIMER->SR & TIM_SR_CC2IF)) {
|
||||
// capture mode on heartbeat pin (external module)
|
||||
capture = TRAINER_TIMER->CCR2;
|
||||
@@ -197,20 +197,20 @@ extern "C" void TRAINER_TIMER_IRQHandler()
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(TRAINER_MODULE_HEARTBEAT)
|
||||
void init_cppm_on_heartbeat_capture()
|
||||
#if defined(TRAINER_MODULE_CPPM)
|
||||
void init_trainer_module_cppm()
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
GPIO_PinAFConfig(HEARTBEAT_GPIO, HEARTBEAT_GPIO_PinSource, HEARTBEAT_GPIO_AF_CAPTURE);
|
||||
GPIO_PinAFConfig(TRAINER_MODULE_CPPM_GPIO, TRAINER_MODULE_CPPM_GPIO_PinSource, TRAINER_MODULE_CPPM_GPIO_AF);
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = HEARTBEAT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = TRAINER_MODULE_CPPM_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(HEARTBEAT_GPIO, &GPIO_InitStructure);
|
||||
GPIO_Init(TRAINER_MODULE_CPPM_GPIO, &GPIO_InitStructure);
|
||||
|
||||
TRAINER_TIMER->ARR = 0xFFFF;
|
||||
TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS
|
||||
@@ -225,7 +225,7 @@ void init_cppm_on_heartbeat_capture()
|
||||
NVIC_EnableIRQ(TRAINER_TIMER_IRQn);
|
||||
}
|
||||
|
||||
void stop_cppm_on_heartbeat_capture()
|
||||
void stop_trainer_module_cppm()
|
||||
{
|
||||
TRAINER_TIMER->DIER = 0;
|
||||
TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN; // Stop counter
|
||||
@@ -237,22 +237,22 @@ void stop_cppm_on_heartbeat_capture()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HEARTBEAT_USART)
|
||||
void init_sbus_on_heartbeat_capture()
|
||||
#if defined(TRAINER_MODULE_SBUS)
|
||||
void init_trainer_module_sbus()
|
||||
{
|
||||
EXTERNAL_MODULE_ON();
|
||||
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_PinAFConfig(GPIOC, HEARTBEAT_GPIO_PinSource, HEARTBEAT_GPIO_AF_SBUS);
|
||||
GPIO_PinAFConfig(GPIOC, TRAINER_MODULE_CPPM_GPIO_PinSource, TRAINER_MODULE_SBUS_GPIO_AF);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = HEARTBEAT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = TRAINER_MODULE_CPPM_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_Init(HEARTBEAT_GPIO, &GPIO_InitStructure);
|
||||
GPIO_Init(TRAINER_MODULE_CPPM_GPIO, &GPIO_InitStructure);
|
||||
|
||||
USART_InitStructure.USART_BaudRate = 100000;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
|
||||
@@ -260,14 +260,14 @@ void init_sbus_on_heartbeat_capture()
|
||||
USART_InitStructure.USART_Parity = USART_Parity_Even;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx;
|
||||
USART_Init(HEARTBEAT_USART, &USART_InitStructure);
|
||||
USART_Init(TRAINER_MODULE_SBUS_USART, &USART_InitStructure);
|
||||
|
||||
DMA_InitTypeDef DMA_InitStructure;
|
||||
heartbeatFifo.clear();
|
||||
USART_ITConfig(HEARTBEAT_USART, USART_IT_RXNE, DISABLE);
|
||||
USART_ITConfig(HEARTBEAT_USART, USART_IT_TXE, DISABLE);
|
||||
DMA_InitStructure.DMA_Channel = HEARTBEAT_DMA_Channel;
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = CONVERT_PTR_UINT(&HEARTBEAT_USART->DR);
|
||||
USART_ITConfig(TRAINER_MODULE_SBUS_USART, USART_IT_RXNE, DISABLE);
|
||||
USART_ITConfig(TRAINER_MODULE_SBUS_USART, USART_IT_TXE, DISABLE);
|
||||
DMA_InitStructure.DMA_Channel = TRAINER_MODULE_SBUS_DMA_Channel;
|
||||
DMA_InitStructure.DMA_PeripheralBaseAddr = CONVERT_PTR_UINT(&TRAINER_MODULE_SBUS_USART->DR);
|
||||
DMA_InitStructure.DMA_Memory0BaseAddr = CONVERT_PTR_UINT(heartbeatFifo.buffer());
|
||||
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
|
||||
DMA_InitStructure.DMA_BufferSize = heartbeatFifo.size();
|
||||
@@ -281,19 +281,19 @@ void init_sbus_on_heartbeat_capture()
|
||||
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
|
||||
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
|
||||
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
|
||||
DMA_Init(HEARTBEAT_DMA_Stream, &DMA_InitStructure);
|
||||
USART_DMACmd(HEARTBEAT_USART, USART_DMAReq_Rx, ENABLE);
|
||||
USART_Cmd(HEARTBEAT_USART, ENABLE);
|
||||
DMA_Cmd(HEARTBEAT_DMA_Stream, ENABLE);
|
||||
DMA_Init(TRAINER_MODULE_SBUS_DMA_Stream, &DMA_InitStructure);
|
||||
USART_DMACmd(TRAINER_MODULE_SBUS_USART, USART_DMAReq_Rx, ENABLE);
|
||||
USART_Cmd(TRAINER_MODULE_SBUS_USART, ENABLE);
|
||||
DMA_Cmd(TRAINER_MODULE_SBUS_DMA_Stream, ENABLE);
|
||||
}
|
||||
|
||||
void stop_sbus_on_heartbeat_capture()
|
||||
void stop_trainer_module_sbus()
|
||||
{
|
||||
DMA_Cmd(HEARTBEAT_DMA_Stream, DISABLE);
|
||||
USART_Cmd(HEARTBEAT_USART, DISABLE);
|
||||
USART_DMACmd(HEARTBEAT_USART, USART_DMAReq_Rx, DISABLE);
|
||||
DMA_DeInit(HEARTBEAT_DMA_Stream);
|
||||
NVIC_DisableIRQ(HEARTBEAT_USART_IRQn);
|
||||
DMA_Cmd(TRAINER_MODULE_SBUS_DMA_Stream, DISABLE);
|
||||
USART_Cmd(TRAINER_MODULE_SBUS_USART, DISABLE);
|
||||
USART_DMACmd(TRAINER_MODULE_SBUS_USART, USART_DMAReq_Rx, DISABLE);
|
||||
DMA_DeInit(TRAINER_MODULE_SBUS_DMA_Stream);
|
||||
NVIC_DisableIRQ(TRAINER_MODULE_SBUS_USART_IRQn);
|
||||
|
||||
if (!IS_EXTERNAL_MODULE_ENABLED()) {
|
||||
EXTERNAL_MODULE_OFF();
|
||||
@@ -305,7 +305,7 @@ void stop_sbus_on_heartbeat_capture()
|
||||
int sbusGetByte(uint8_t * byte)
|
||||
{
|
||||
switch (currentTrainerMode) {
|
||||
#if defined(HEARTBEAT_USART)
|
||||
#if defined(TRAINER_MODULE_SBUS_USART)
|
||||
case TRAINER_MODE_MASTER_SBUS_EXTERNAL_MODULE:
|
||||
return heartbeatFifo.pop(*byte);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user