consider noise error

This commit is contained in:
2020-11-25 13:33:46 +01:00
parent 1357b17bb8
commit f5f8aa0660
4 changed files with 14 additions and 8 deletions

View File

@ -105,7 +105,7 @@ typedef struct {
static t_mbusCommHandle mbusCommHandle = { .requestId = 0, .state = MBCS_IDLE, .retryCnt = 0, .cmd = 0, .addr = 0, .startTime = 0, .receiveCnt = 0, .waitForOctet = false };
static t_mbusCommStats mbusCommStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOctetCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0 };
static t_mbusCommStats mbusCommStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOctetCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0, .uartNoiseErrCnt = 0 };
static bool mbusCommEnabled = true;
@ -265,7 +265,7 @@ void mbusCommISR() {
// RXNEIE doesn't need to be considered since it is always on and more over the
// RXNE flag is cleared by reading the DR, which is done in any case
if (((isrflags & USART_SR_RXNE) != RESET) || ((isrflags & (USART_SR_ORE | USART_SR_FE | USART_SR_PE)) != RESET)) {
if (((isrflags & USART_SR_RXNE) != RESET) || ((isrflags & (USART_SR_ORE | USART_SR_FE | USART_SR_PE | USART_SR_NE)) != RESET)) {
// Error flags are only valid together with the RX flag.
// They will be cleared by reading SR (already done above) followed by reading DR (below).
bool errorFound = false;
@ -282,6 +282,10 @@ void mbusCommISR() {
mbusCommStats.uartParityErrCnt += 1;
errorFound = true;
}
if ((isrflags & USART_SR_NE) != RESET) {
mbusCommStats.uartNoiseErrCnt += 1;
errorFound = true;
}
mbusCommStats.uartOctetCnt += 1;
// it is required to read the DR in any case here, not only when the buffer has space
// otherwise the interrupt flag won't be disabled, particularly important in case of