diff --git a/radio/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h index 22e29abf9..c5b42359e 100644 --- a/radio/src/targets/sky9x/board.h +++ b/radio/src/targets/sky9x/board.h @@ -405,6 +405,7 @@ void rxPdcUsart( void (*pChProcess)(uint8_t x) ); // Second UART driver void serial2TelemetryInit(unsigned int protocol); +void serial2Putc(const unsigned char c); #if defined(__cplusplus) bool telemetrySecondPortReceive(uint8_t & data); #endif diff --git a/radio/src/targets/sky9x/serial2_driver.cpp b/radio/src/targets/sky9x/serial2_driver.cpp index 3f2153f1a..b7a749ff7 100644 --- a/radio/src/targets/sky9x/serial2_driver.cpp +++ b/radio/src/targets/sky9x/serial2_driver.cpp @@ -37,12 +37,12 @@ Fifo serial2RxFifo; * This function is synchronous (i.e. uses polling). * c Character to send. */ -void serial2Putc(const char c) +void serial2Putc(const unsigned char c) { Uart *pUart = SECOND_SERIAL_UART; /* Wait for the transmitter to be ready */ - while ( (pUart->UART_SR & UART_SR_TXEMPTY) == 0 ) ; + while ( (pUart->UART_SR & UART_SR_TXRDY) == 0 ) ; /* Send character */ pUart->UART_THR = c; @@ -99,8 +99,12 @@ void SECOND_UART_Stop() extern "C" void UART0_IRQHandler() { - serial2RxFifo.push(SECOND_SERIAL_UART->UART_RHR); + if ( SECOND_SERIAL_UART->UART_SR & UART_SR_RXRDY ) + { + serial2RxFifo.push(SECOND_SERIAL_UART->UART_RHR); + } } + #else #define SECOND_UART_Configure(...) #endif @@ -109,7 +113,6 @@ extern "C" void UART0_IRQHandler() void serial2TelemetryInit(unsigned int /*protocol*/) { SECOND_UART_Configure(FRSKY_D_BAUDRATE, Master_frequency); - // startPdcUsartReceive(); } bool telemetrySecondPortReceive(uint8_t & data) @@ -117,3 +120,7 @@ bool telemetrySecondPortReceive(uint8_t & data) return serial2RxFifo.pop(data); } #endif + +#if defined(DEBUG) +void serialPrintf(const char*, ... ) {} +#endif diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index a98befd45..41e19e9b9 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -404,7 +404,7 @@ void telemetryInit(uint8_t protocol) } #endif -#if defined(SERIAL2) +#if defined(SERIAL2) || defined(PCBSKY9X) else if (protocol == PROTOCOL_FRSKY_D_SECONDARY) { telemetryPortInit(0, TELEMETRY_SERIAL_DEFAULT); serial2TelemetryInit(PROTOCOL_FRSKY_D_SECONDARY);