diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index baf41346f..eb886246f 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -343,7 +343,11 @@ extern "C" void TELEMETRY_DMA_TX_IRQHandler(void) DEBUG_INTERRUPT(INT_TELEM_DMA); if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) { DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC); + + // clear TC flag before enabling interrupt + TELEMETRY_USART->SR &= ~USART_SR_TC; TELEMETRY_USART->CR1 |= USART_CR1_TCIE; + if (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) { outputTelemetryBuffer.reset(); } diff --git a/radio/src/targets/nv14/telemetry_driver.cpp b/radio/src/targets/nv14/telemetry_driver.cpp index d2fa496ed..89d3b81d6 100644 --- a/radio/src/targets/nv14/telemetry_driver.cpp +++ b/radio/src/targets/nv14/telemetry_driver.cpp @@ -166,7 +166,11 @@ extern "C" void TELEMETRY_DMA_TX_IRQHandler(void) DEBUG_INTERRUPT(INT_TELEM_DMA); if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) { DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC); + + // clear TC flag before enabling interrupt + TELEMETRY_USART->SR &= ~USART_SR_TC; TELEMETRY_USART->CR1 |= USART_CR1_TCIE; + if (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) { outputTelemetryBuffer.reset(); } diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index c888aa79a..8ffb3c1ce 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -314,7 +314,11 @@ extern "C" void TELEMETRY_DMA_TX_IRQHandler(void) DEBUG_INTERRUPT(INT_TELEM_DMA); if (DMA_GetITStatus(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC)) { DMA_ClearITPendingBit(TELEMETRY_DMA_Stream_TX, TELEMETRY_DMA_TX_FLAG_TC); + + // clear TC flag before enabling interrupt + TELEMETRY_USART->SR &= ~USART_SR_TC; TELEMETRY_USART->CR1 |= USART_CR1_TCIE; + if (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) { outputTelemetryBuffer.reset(); }