mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 16:55:36 +03:00
Cleanup CC3D softserial - it only has enough pins/timers for one port.
PR #124 incorrectly re-used the same timer hardware for the second port which was bad.
This commit is contained in:
parent
b08f51d88c
commit
91c7407806
10 changed files with 37 additions and 41 deletions
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include "platform.h"
|
||||
|
||||
#ifdef USE_SOFT_SERIAL
|
||||
#if defined(USE_SOFTSERIAL1) || defined(USE_SOFTSERIAL2)
|
||||
|
||||
#include "build_config.h"
|
||||
|
||||
|
@ -33,24 +33,22 @@
|
|||
#include "serial_softserial.h"
|
||||
|
||||
#if defined(CC3D)
|
||||
#define SOFT_SERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3
|
||||
#define SOFT_SERIAL_1_TIMER_TX_HARDWARE 3 // PWM 4
|
||||
#define SOFT_SERIAL_2_TIMER_RX_HARDWARE 2 // PWM 3
|
||||
#define SOFT_SERIAL_2_TIMER_TX_HARDWARE 3 // PWM 4
|
||||
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 2 // PWM 3
|
||||
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 3 // PWM 4
|
||||
#else
|
||||
|
||||
#if defined(STM32F10X) || defined(CHEBUZZF3)
|
||||
#define SOFT_SERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
|
||||
#define SOFT_SERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
|
||||
#define SOFT_SERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
|
||||
#define SOFT_SERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
|
||||
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 4 // PWM 5
|
||||
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 5 // PWM 6
|
||||
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 6 // PWM 7
|
||||
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 7 // PWM 8
|
||||
#endif
|
||||
|
||||
#if defined(STM32F303) && !defined(CHEBUZZF3)
|
||||
#define SOFT_SERIAL_1_TIMER_RX_HARDWARE 8 // PWM 9
|
||||
#define SOFT_SERIAL_1_TIMER_TX_HARDWARE 9 // PWM 10
|
||||
#define SOFT_SERIAL_2_TIMER_RX_HARDWARE 10 // PWM 11
|
||||
#define SOFT_SERIAL_2_TIMER_TX_HARDWARE 11 // PWM 12
|
||||
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 8 // PWM 9
|
||||
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 9 // PWM 10
|
||||
#define SOFTSERIAL_2_TIMER_RX_HARDWARE 10 // PWM 11
|
||||
#define SOFTSERIAL_2_TIMER_TX_HARDWARE 11 // PWM 12
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -60,7 +58,6 @@
|
|||
#define MAX_SOFTSERIAL_PORTS 2
|
||||
softSerial_t softSerialPorts[MAX_SOFTSERIAL_PORTS];
|
||||
|
||||
|
||||
void onSerialTimer(uint8_t portIndex, captureCompare_t capture);
|
||||
void onSerialRxPinChange(uint8_t portIndex, captureCompare_t capture);
|
||||
|
||||
|
@ -146,13 +143,13 @@ static void serialOutputPortConfig(const timerHardware_t *timerHardwarePtr)
|
|||
|
||||
static void resetBuffers(softSerial_t *softSerial)
|
||||
{
|
||||
softSerial->port.rxBufferSize = SOFT_SERIAL_BUFFER_SIZE;
|
||||
softSerial->port.rxBufferSize = SOFTSERIAL_BUFFER_SIZE;
|
||||
softSerial->port.rxBuffer = softSerial->rxBuffer;
|
||||
softSerial->port.rxBufferTail = 0;
|
||||
softSerial->port.rxBufferHead = 0;
|
||||
|
||||
softSerial->port.txBuffer = softSerial->txBuffer;
|
||||
softSerial->port.txBufferSize = SOFT_SERIAL_BUFFER_SIZE;
|
||||
softSerial->port.txBufferSize = SOFTSERIAL_BUFFER_SIZE;
|
||||
softSerial->port.txBufferTail = 0;
|
||||
softSerial->port.txBufferHead = 0;
|
||||
}
|
||||
|
@ -161,15 +158,19 @@ serialPort_t *openSoftSerial(softSerialPortIndex_e portIndex, serialReceiveCallb
|
|||
{
|
||||
softSerial_t *softSerial = &(softSerialPorts[portIndex]);
|
||||
|
||||
#ifdef USE_SOFTSERIAL1
|
||||
if (portIndex == SOFTSERIAL1) {
|
||||
softSerial->rxTimerHardware = &(timerHardware[SOFT_SERIAL_1_TIMER_RX_HARDWARE]);
|
||||
softSerial->txTimerHardware = &(timerHardware[SOFT_SERIAL_1_TIMER_TX_HARDWARE]);
|
||||
softSerial->rxTimerHardware = &(timerHardware[SOFTSERIAL_1_TIMER_RX_HARDWARE]);
|
||||
softSerial->txTimerHardware = &(timerHardware[SOFTSERIAL_1_TIMER_TX_HARDWARE]);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_SOFTSERIAL2
|
||||
if (portIndex == SOFTSERIAL2) {
|
||||
softSerial->rxTimerHardware = &(timerHardware[SOFT_SERIAL_2_TIMER_RX_HARDWARE]);
|
||||
softSerial->txTimerHardware = &(timerHardware[SOFT_SERIAL_2_TIMER_TX_HARDWARE]);
|
||||
softSerial->rxTimerHardware = &(timerHardware[SOFTSERIAL_2_TIMER_RX_HARDWARE]);
|
||||
softSerial->txTimerHardware = &(timerHardware[SOFTSERIAL_2_TIMER_TX_HARDWARE]);
|
||||
}
|
||||
#endif
|
||||
|
||||
softSerial->port.vTable = softSerialVTable;
|
||||
softSerial->port.baudRate = baud;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue