1
0
Fork 0
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:
Dominic Clifton 2014-04-07 18:12:42 +01:00
parent c2c1613dac
commit e2deeeebd3
2 changed files with 10 additions and 7 deletions

View file

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

View file

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