<?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>UARTE missed ISR ENDRX or generated excess ISR RXSTARTED</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/84528/uarte-missed-isr-endrx-or-generated-excess-isr-rxstarted</link><description>[Environment] 
 nrf52833 chip, NCS 1.6.0 
 using uarte 1 with async API, baudrate 1Mbps, CONFIG_UART_1_NRF_HW_ASYNC=y and CONFIG_UART_1_NRF_HW_ASYNC_TIMER=2. 
 using ring buffer put in user callback. 
 Relate page but not answered: devzone.nordicsemi</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 15 Feb 2022 07:11:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/84528/uarte-missed-isr-endrx-or-generated-excess-isr-rxstarted" /><item><title>RE: UARTE missed ISR ENDRX or generated excess ISR RXSTARTED</title><link>https://devzone.nordicsemi.com/thread/353011?ContentTypeID=1</link><pubDate>Tue, 15 Feb 2022 07:11:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3fe58574-c294-4422-93f3-0e0c3c415aa5</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;I think this issue was fixed in &lt;a href="https://github.com/nrfconnect/sdk-zephyr/commit/c44a46f1f500a97bf297c9cd1018500f28c64fd4"&gt;this&lt;/a&gt; commit and is available in v1.7.0. Can you please use this version to see if you still have this issue?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE missed ISR ENDRX or generated excess ISR RXSTARTED</title><link>https://devzone.nordicsemi.com/thread/352481?ContentTypeID=1</link><pubDate>Fri, 11 Feb 2022 07:38:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b038be60-6240-4276-8ee2-0b2e105a7ff9</guid><dc:creator>JinJie</dc:creator><description>&lt;p&gt;Enlarge&amp;nbsp;&lt;span&gt;UART_BUF_SIZE and&amp;nbsp;UART_WAIT_FOR_RX&amp;nbsp; value could&amp;nbsp;&lt;/span&gt;&lt;span class="Y2IQFc" lang="en"&gt;reduce the probability&amp;nbsp;of [CASE] happening.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Y2IQFc" lang="en"&gt;But it&amp;nbsp;always happens.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE missed ISR ENDRX or generated excess ISR RXSTARTED</title><link>https://devzone.nordicsemi.com/thread/352479?ContentTypeID=1</link><pubDate>Fri, 11 Feb 2022 07:30:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0c40f91a-1f82-41dd-83f6-0de05f21d4a6</guid><dc:creator>JinJie</dc:creator><description>&lt;p&gt;I reproduced the &lt;span style="background-color:#ff99cc;"&gt;[CASE]&lt;/span&gt; in the NCS 1.6.0 sample: nrd/samples/bluetooth/peripheral_uart.&lt;/p&gt;
&lt;p&gt;Here are the environment:&lt;/p&gt;
&lt;p&gt;1. modify *.overlay:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; set uart1 baudrate 1Mbps for data tx/rx, and uart0 921600 for logging.&lt;/p&gt;
&lt;p&gt;2. modify prj.conf:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; CONFIG_NRFX_UARTE1=y, CONFIG_UART_1_NRF_HW_ASYNC=y, CONFIG_UART_1_NRF_HW_ASYNC_TIMER=2.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; CONFIG_HEAP_MEM_POOL_SIZE=4096&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;CONFIG_USE_SEGGER_RTT=n, CONFIG_LOG_BACKEND_RTT=n, CONFIG_LOG_BACKEND_UART=n.&lt;/p&gt;
&lt;p&gt;3.&amp;nbsp;modify nrf/samples/bluetooth/peripheral/src/main.c:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; comment out&amp;nbsp;ble related function call in main().&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; set uart_init() binding to uart1.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="background-color:#ccffcc;"&gt;set UART_BUF_SIZE=20U and UART_WAIT_FOR_RX=5U;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; create thread rx_task() to count total recv bytes and release buffer.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; create thread tx_task() to &lt;span style="background-color:#ccffcc;"&gt;send bytes as 20Byte 20Hz&lt;/span&gt; and count send bytes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;span style="background-color:#ffff00;"&gt;&lt;strong&gt;check the return value of uart_rx_buf_rsp() function.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4. run this sample on DK board.&lt;/p&gt;
&lt;p&gt;5. &lt;span style="background-color:#ccffcc;"&gt;send 267 bytes string to uarte1 rx in 100Hz.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ff99cc;"&gt;6. Minutes later,&amp;nbsp;An error return from uart_rx_buf_rsp() and them uarte1 rx always missed bytes in recving string.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE missed ISR ENDRX or generated excess ISR RXSTARTED</title><link>https://devzone.nordicsemi.com/thread/351847?ContentTypeID=1</link><pubDate>Tue, 08 Feb 2022 14:13:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:80f9502f-868e-4d18-b3af-69d899a80bad</guid><dc:creator>JinJie</dc:creator><description>&lt;p&gt;Here&amp;nbsp;is&amp;nbsp;a scene&amp;nbsp;appeared quiet easy:&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ff99cc;color:#000000;"&gt;&lt;strong&gt;[CASE]&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;16535 ENDRX events and 16536 RXSTARTED events were handled.&lt;/p&gt;
&lt;p&gt;an error was generated while NO.16537&amp;nbsp;&lt;span&gt;RXSTARTED event was handling.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[call stacks] &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;_isr_wrapper -&amp;gt; uarte_nrfx_isr_async -&amp;gt; rx_started_isr -&amp;gt; uart_event_handler -&amp;gt; uarte_nrfx_rx_buf_rsp err: -EBUSY.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[reg tables]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;@before NO.16535 ENDRX event was handled:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EVENT_ENDRX = 1, EVENT_RXSTARTED = 1,&lt;/strong&gt; &lt;strong&gt;SHORTS = 0x20&lt;/strong&gt;, INTEN = 0x4A0210, INTENSET = 0x4A0210, &lt;span&gt;INTENCLR = 0x4A0210,&amp;nbsp;&lt;/span&gt;RXD.PTR=0x200082D4&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@after NO.16535 ENDRX event was handled:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;&lt;span style="background-color:#999999;"&gt;EVENT_ENDRX = 0&lt;/span&gt;, EVENT_RXSTARTED = 1, &lt;span style="background-color:#999999;"&gt;SHORTS = 0&lt;/span&gt;&lt;/strong&gt;, INTEN = 0x4A0210, INTENSET = 0x4A0210,&amp;nbsp;INTENCLR&amp;nbsp;= 0x4A0210,&amp;nbsp;RXD.PTR=0x200082D4&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@before NO.16536&amp;nbsp;RXSTARTED event was handled:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;EVENT_ENDRX =&amp;nbsp;0, EVENT_RXSTARTED = 1, SHORTS = 0,&lt;/strong&gt; INTEN = 0x4A0210, INTENSET = 0x4A0210,&amp;nbsp;INTENCLR&amp;nbsp;= 0x4A0210,&amp;nbsp;RXD.PTR=0x200082D4&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@after NO.16536&amp;nbsp;RXSTARTED event was handled:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;EVENT_ENDRX =&amp;nbsp;0, &lt;span style="background-color:#999999;"&gt;EVENT_RXSTARTED = 0&lt;/span&gt;, &lt;span style="background-color:#999999;"&gt;SHORTS = 0x20&lt;/span&gt;,&lt;/strong&gt;&amp;nbsp;INTEN = 0x4A0210, INTENSET = 0x4A0210,&amp;nbsp;INTENCLR&amp;nbsp;= 0x4A0210,&amp;nbsp;&lt;span style="background-color:#999999;"&gt;RXD.PTR=0x200082C0&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span style="background-color:#999999;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@before NO.16537 RXSTARTED event was handled:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;&lt;span style="background-color:#ffcc00;"&gt;EVENT_ENDRX = 1&lt;/span&gt;, EVENT_RXSTARTED = 1, SHORTS = 0x20,&lt;/strong&gt;&amp;nbsp;INTEN = 0x4A0210, INTENSET = 0x4A02&lt;span style="background-color:#ffcc00;"&gt;1&lt;/span&gt;0,&amp;nbsp;INTENCLR&amp;nbsp;= 0x4A0210,&amp;nbsp;RXD.PTR=0x200082C0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="background-color:#ffcc00;"&gt;Here is a&amp;nbsp; doubt:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffcc00;"&gt;After Rx is enabled, in most cases&amp;nbsp;&lt;span&gt;ENDRX generated first and RXSTARTED generated right behind ENDRX.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffcc00;"&gt;But now RXSTARTED event generated&amp;nbsp;before ENDRX, and ENDRX generated right behind RXSTARTED.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color:#ffcc00;"&gt;Thus ISR missed to handling ENDRX, just went to handle RXSTARTED first.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;@after&amp;nbsp;NO.16536&amp;nbsp;RXSTARTED event was&lt;span style="background-color:#ff99cc;"&gt; handling with&amp;nbsp; [&lt;strong&gt;CASE]:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;EVENT_ENDRX =&amp;nbsp;1, &lt;span style="background-color:#999999;"&gt;EVENT_RXSTARTED = 0&lt;/span&gt;, SHORTS = 0x20,&lt;/strong&gt;&amp;nbsp;INTEN = 0x4A0210, INTENSET = 0x4A0210,&amp;nbsp;INTENCLR&amp;nbsp;= 0x4A0210,&amp;nbsp;RXD.PTR=0x200082C0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>