AnsweredAssumed Answered

Kinetis FreeRToS interrupt based GETCHAR() PUTCHAR()

Question asked by Carl Norman on Dec 28, 2016
Latest reply on Jan 4, 2017 by Carl Norman

Hi Guys,

 

Short Version; is there interrupt based DEBUG_CONSOLE_DEVICE_TYPE_UART code so I can have GETCHAR() block properly and let my other tasks run? Currently it sits in a while loop waiting for the RX data flag to be set.

 

Longer version; Ive come from MQX and thought I would give FreeRToS a run on the new Kinetis KL27Z that I have. normally in MQX i use itty to achieve blocking UART commands that will allow the rest of my tasks to run normally while waiting for data to come in.

 

I had to move my debug console to UART (no longer on LPUART), which works fine, I can PRINTF and GETCHAR fine.

 

uartClkSrcFreq = CLOCK_GetFreq(UART2_CLK_SRC);

DbgConsole_Init(BOARD_DEBUG_UART_BASEADDR, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq);

 

FreeRToS does not appear to support GETCHAR() that is interrupt based so it literally runs s_debugConsole.ops.rx_union.UART_GetChar = UART_ReadBlocking; which sits in a while(wait for data); loop. I need the rest of my application running, not sitting in a while loop. I do not want to have horribly inefficient context switching and use delays to poll non blocking reads, its 115200 data, its fast, this is not a nice way to do things.

 

Is there examples of how to use an interrupt based version of the debug consol? I need to be able to printf / getchar while running other tasks.

Outcomes