<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/114288/simultaneous-communication-on-2-sync-libuarte</link><description>Hi. 
 We are using nRF52833 (on BL653 module) where UART0 and UART1 are used for communication purposes (one with STM MUC and the other with quectel modem). Current solution uses SDK 17.0.2, softdevice and freeRTOS, where async libuarte support is used</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 09 Sep 2024 21:47:49 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/114288/simultaneous-communication-on-2-sync-libuarte" /><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/501809?ContentTypeID=1</link><pubDate>Mon, 09 Sep 2024 21:47:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:de86610f-7ca8-4c25-8255-d3ebcb59c3df</guid><dc:creator>Susheel Nuguru</dc:creator><description>[quote user="Vojko Glaser"]What is the best way to check memory consumption (analitically or real-life)? The solution with printing address of NULL pointer variable always returns the same address from which we are not able to detect if memory consumption is growing. Any other way to detect memory leaks? Or to at least detect that memory leak is present?[/quote]
&lt;p&gt;This is never straightforward. But I once followed &lt;a href="https://khockuba.medium.com/debugging-memory-leaks-buffer-overflows-in-freertos-9a2f951423c3"&gt;this&amp;nbsp;&lt;/a&gt;long time ago on FreeRTOSv9 with some success. I do not remember the details but I bookmarked this page as it was helpful.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote user="Vojko Glaser"]And to check it analytically. Soft_device will take a part of memory, freertos heap will be next and in the end malloc calls, right? If there is enough space malloc should not intervene in the memory locations of other two, right? It should return NULL.[/quote]
&lt;p&gt;Yes, if there are no stack overflows, then the memory used by softdevice or application should not split into using the reserved heap area.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/501292?ContentTypeID=1</link><pubDate>Thu, 05 Sep 2024 07:55:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:baebb504-97f1-4dcd-9eef-1d2c3c22b993</guid><dc:creator>Vojko Glaser</dc:creator><description>&lt;p&gt;Hi.&lt;/p&gt;
&lt;p&gt;Unfortunately, we have a custom board and it would probably take a lot of changes to test it on DK. We will try to make a DK version.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But in the mean time. We do use malloc and free. Would it make sense to use pvPortMalloc from freertos (heap_3 variant) or even nrf_malloc to prevent memory corruption?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What is the best way to check memory consumption (analitically or real-life)? The solution with printing address of NULL pointer variable always returns the same address from which we are not able to detect if memory consumption is growing. Any other way to detect memory leaks? Or to at least detect that memory leak is present?&lt;/p&gt;
&lt;p&gt;And to check it analytically. Soft_device will take a part of memory, freertos heap will be next and in the end malloc calls, right? If there is enough space malloc should not intervene in the memory locations of other two, right? It should return NULL.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/501260?ContentTypeID=1</link><pubDate>Thu, 05 Sep 2024 04:15:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:be8457e4-9b31-4647-90cb-a976c642c744</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Is this reproducible on nRF52833 DK? If yes, can you please share the project so that I can attempt to start the debugger and figure out the context of the fault. Seems like there is some stack corruption here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/500902?ContentTypeID=1</link><pubDate>Tue, 03 Sep 2024 08:59:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1f106237-192b-4f18-ad03-14cc647d3118</guid><dc:creator>Vojko Glaser</dc:creator><description>&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;HARD FAULT at 0x0004EE9A&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;R0: 0x20009E60 R1: 0x2001B670 R2: 0x054E022D R3: 0x054E022D&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;R12: 0x2000ED44 LR: 0x0004EE71 PSR: 0x81000000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;and from .map&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.text 0x0000000000&lt;strong&gt;04ee54&lt;/strong&gt; 0xc4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; 0x0000000000&lt;strong&gt;04ee54&lt;/strong&gt; _free_r&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; .text 0x000000000004ef18 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o)&lt;/code&gt;&lt;br /&gt;&lt;code&gt; 0x000000000004ef18 _malloc_r&lt;/code&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/500897?ContentTypeID=1</link><pubDate>Tue, 03 Sep 2024 08:25:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3c34e874-bfed-4ec8-b636-648683abb58e</guid><dc:creator>Vojko Glaser</dc:creator><description>&lt;p&gt;Hi.&lt;/p&gt;
&lt;p&gt;Thanks for the response.&lt;/p&gt;
&lt;p&gt;Just to double check if we understood you correctly.&lt;/p&gt;
&lt;p&gt;1. You&amp;#39;re suggesting not to used async library (&lt;span&gt;nrf_libuarte_async) and work only with low level libuarte driver (nrf_libuarte_drv)? Because according to the docs, if you are using app_timer RTC is not used. Or is there another option to disable receiver timeout we have missed?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. If we checkout the address from .map that the hardfault is reffering to (pc), always comes from malloc(_malloc_r) or free (_free_r) source file. Any good suggestions how to&amp;nbsp;backtrace the origin of the failure?&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/500401?ContentTypeID=1</link><pubDate>Thu, 29 Aug 2024 10:38:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2916e123-445e-4b54-9bea-56e10204ca0a</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Just thinking out loud here. Async UART lib is a bit of resource hungry in the sense that it uses TIMER and RTC if inactivity timeout is used. If you are using tw libuarte then you aer using atleast two high resolution timers and maybe two additional RTCs if you are using inactivity timeout for receiver.&amp;nbsp; Also note that FreeRTOS needs RTC1 (instance is configurable). So it looks like it might be very easy to get into a resource conflict using two libuarte on FreeRTOS. My suggestions are&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disable receiver timeout functionality and make sure RTC is not used in libUARTE. This will avoid any RTC resource conflicts I think might be happening with FreeRTOS RTC instance and your libuarte.&lt;/li&gt;
&lt;li&gt;Debug your hardfault first. Get the exact hardfaulting instruction. Maybe what you are seeing is just a stack overflow error caused by under defining the task stack size.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Simultaneous communication on 2 sync libUARTe</title><link>https://devzone.nordicsemi.com/thread/500298?ContentTypeID=1</link><pubDate>Wed, 28 Aug 2024 19:55:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f1d4ec24-9b4b-41a8-93ea-168b423c6df5</guid><dc:creator>Vojko Glaser</dc:creator><description>&lt;p&gt;To elaborate further here is our uarte handler:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uarte_event_handler&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;nrf_libuarte_async_evt_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;switch&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LIBUARTE_ASYNC_EVT_RX_DATA&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;uarte: EVT_RX - data received&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;BaseType_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pdFALSE&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;BaseType_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;errQUEUE_FULL&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uart_queue_data_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;rxtx&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;p_data&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;rxtx&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;p_data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xQueueSendFromISR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stm_uart_rx_queue&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;sent&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pdTRUE&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:90px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;uarte: queue full&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; }&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;portYIELD_FROM_ISR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; } &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LIBUARTE_ASYNC_EVT_TX_DONE&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;BaseType_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pdFALSE&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xEventGroupSetBitsFromISR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;stm_uart_tx_event_h&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0x01&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;portYIELD_FROM_ISR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;yield&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; } &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LIBUARTE_ASYNC_EVT_ERROR&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;uarte: error &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;errorsrc&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;case&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LIBUARTE_ASYNC_EVT_OVERRUN_ERROR&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;uarte: overrun: lost &lt;/span&gt;&lt;span&gt;%d&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;p_evt&lt;/span&gt;&lt;span&gt;-&amp;gt;&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;overrun_err&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;overrun_length&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;uarte: wrong state&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;code&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; }&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;code&gt;nrf_libuarte_async_rx_free&lt;/code&gt; is called in the task fetching data from the queue. UART baudrate is 115200 with hardware flow control disabled:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;nrf_libuarte_async_config_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nrf_libuarte_async_config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;tx_pin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UARTE_TX_PIN&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;rx_pin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;UARTE_RX_PIN&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;baudrate&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; NRF_UARTE_BAUDRATE_115200,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;parity&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; NRF_UARTE_PARITY_INCLUDED,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;hwfc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; NRF_UARTE_HWFC_DISABLED,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;timeout_us&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;int_prio&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;APP_IRQ_PRIORITY_LOW&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt; };&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>