Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r6fc5e3596bfb7f27e93e4bfbe4909b9f58c17b48 -r1f3647830e9de0a1f0a4e445ce8d72d5525f51fb --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 6fc5e3596bfb7f27e93e4bfbe4909b9f58c17b48) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 1f3647830e9de0a1f0a4e445ce8d72d5525f51fb) @@ -412,14 +412,20 @@ *************************************************************************/ static void transmitNextUARTPacket( void ) { - U32 dataSize = getFromCommBuffer( COMM_BUFFER_OUT_UART_PC, pcXmitPacket, PC_MESSAGE_PACKET_SIZE ); + U32 dataPend = numberOfBytesInCommBuffer( COMM_BUFFER_OUT_UART_PC ); + U32 dataSize; - // if there's another UART packet to send, send it - if ( dataSize == PC_MESSAGE_PACKET_SIZE ) + if ( dataPend >= PC_MESSAGE_PACKET_SIZE ) { - dmaSetCtrlPacket( DMA_CH3, pcDMAXmitControlRecord ); - dmaSetChEnable( DMA_CH3, DMA_HW ); - setSCI1DMATransmitInterrupt(); + dataSize = getFromCommBuffer( COMM_BUFFER_OUT_UART_PC, pcXmitPacket, PC_MESSAGE_PACKET_SIZE ); + + // if there's another UART packet to send, send it + if ( dataSize == PC_MESSAGE_PACKET_SIZE ) + { + dmaSetCtrlPacket( DMA_CH3, pcDMAXmitControlRecord ); + dmaSetChEnable( DMA_CH3, DMA_HW ); + setSCI1DMATransmitInterrupt(); + } } }