mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 00:35:39 +03:00
Fixing software serial stop bits. Was broken since timer frequency
calculation changes in c7de7d2ebc
.
This commit is contained in:
parent
c2c1613dac
commit
e2deeeebd3
2 changed files with 10 additions and 7 deletions
|
@ -218,17 +218,20 @@ void processTxState(softSerial_t *softSerial)
|
||||||
softSerial->internalTxBuffer = (1 << (TX_TOTAL_BITS - 1)) | (byteToSend << 1);
|
softSerial->internalTxBuffer = (1 << (TX_TOTAL_BITS - 1)) | (byteToSend << 1);
|
||||||
softSerial->bitsLeftToTransmit = TX_TOTAL_BITS;
|
softSerial->bitsLeftToTransmit = TX_TOTAL_BITS;
|
||||||
softSerial->isTransmittingData = true;
|
softSerial->isTransmittingData = true;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mask = softSerial->internalTxBuffer & 1;
|
if (softSerial->bitsLeftToTransmit) {
|
||||||
softSerial->internalTxBuffer >>= 1;
|
mask = softSerial->internalTxBuffer & 1;
|
||||||
|
softSerial->internalTxBuffer >>= 1;
|
||||||
|
|
||||||
setTxSignal(softSerial, mask);
|
setTxSignal(softSerial, mask);
|
||||||
|
softSerial->bitsLeftToTransmit--;
|
||||||
if (--softSerial->bitsLeftToTransmit <= 0) {
|
return;
|
||||||
softSerial->isTransmittingData = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
softSerial->isTransmittingData = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|
|
@ -24,7 +24,7 @@ typedef struct softSerial_s {
|
||||||
uint8_t rxEdge;
|
uint8_t rxEdge;
|
||||||
|
|
||||||
uint8_t isTransmittingData;
|
uint8_t isTransmittingData;
|
||||||
uint8_t bitsLeftToTransmit;
|
int8_t bitsLeftToTransmit;
|
||||||
|
|
||||||
uint16_t internalTxBuffer; // includes start and stop bits
|
uint16_t internalTxBuffer; // includes start and stop bits
|
||||||
uint16_t internalRxBuffer; // includes start and stop bits
|
uint16_t internalRxBuffer; // includes start and stop bits
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue