<?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: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/90365/uarte-uart_fifo_read---4th-byte-always-0x00</link><description>Hi, 
 I am not sure where to go next, so looking for some debug help. 
 Setup : I am using the 9160DK - the 52840 is being used as an ANT+ receiver, where it forwards on UARTE to 9160. 
 
 I have taken the code back to the basics, where I send 8 bytes</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 16 Aug 2022 12:37:35 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/90365/uarte-uart_fifo_read---4th-byte-always-0x00" /><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/381780?ContentTypeID=1</link><pubDate>Tue, 16 Aug 2022 12:37:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c98e65d7-f939-449c-9d12-cd41fdeb6d8d</guid><dc:creator>Kenneth</dc:creator><description>[quote user="Brett"]Do you have a link or video that I can review which shows how to connect a logic analyser onto the nrf9160dk, so that I can monitor between the 52840 and 9160 chips.[/quote]
&lt;p&gt;You should only need to connect GND to common ground between DK&amp;#39;s. Then connect the RXD and TXD pins to two input pins of the logic analyzer, then start tracing from the logic analyzer, if you set the baudrate in the logic analyzer you should be able to observe the data on byte level.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/381753?ContentTypeID=1</link><pubDate>Tue, 16 Aug 2022 11:41:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:903c51ad-b9c5-4606-a652-7ea5bd554915</guid><dc:creator>Brett</dc:creator><description>&lt;p&gt;Hi Kenneth,&lt;/p&gt;
&lt;p&gt;I can open a new issue if required, but I am still working on the same&amp;nbsp;problem&amp;nbsp;- maybe.&lt;br /&gt;&lt;br /&gt;Do you have a link or video that I can review which shows how to connect a logic analyser onto the nrf9160dk, so that I can monitor between the 52840 and 9160 chips.&lt;br /&gt;&lt;br /&gt;All runs fine for about 10 minutes and then I get all 0x00&amp;#39;s on the&amp;nbsp;9160 and I am not sure if its the 52840 or the 9160.&amp;nbsp; For some reason debug on the 52840 is not working the way I need it to, and its hard to see where the problem is.&lt;/p&gt;
&lt;p&gt;regards&lt;br /&gt;-brett&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/379172?ContentTypeID=1</link><pubDate>Thu, 28 Jul 2022 15:46:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:00a03678-05c6-4477-936f-b3a488dc0b67</guid><dc:creator>Georgiy Lutsenko</dc:creator><description>&lt;p&gt;Hi all&lt;br /&gt;I had a similar issue.&lt;br /&gt;I am using 9160 and see the same problems with UART.&lt;br /&gt;I checked the sent data from another device with an analyzer. (The data is correct).&lt;br /&gt;But there is a problem on the 9160 side.&lt;br /&gt;For receiving and sending I use interrupts:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;static&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;DtRS485_uartCallback&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;device&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;pDev&lt;/span&gt;&lt;span&gt;,&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;user_data&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; uart_irq_update&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pDev&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;uart_irq_rx_ready&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pDev&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;uint8_t&lt;/span&gt;&lt;span&gt; data_length &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;data_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;uart_fifo_read&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pDev&lt;/span&gt;&lt;span&gt;, uartBuf, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(uartBuf));&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;spRxFifo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;data_length&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DtFIFO_pushBuffer&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;spRxFifo&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;uartBuf&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;data_length&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;uart_irq_tx_ready&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;skpUart&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; uint16_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DtFIFO_availableForRead&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;spTxFifo&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DtGPIO_pinSet&lt;/span&gt;&lt;span&gt;(DIR_RS485, &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DtFIFO_popBuffer&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;spTxFifo&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sBufTX&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;uart_fifo_fill&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pDev&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;sBufTX&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;uart_irq_tx_complete&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;skpUart&lt;/span&gt;&lt;span&gt;)) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; uart_irq_tx_disable&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;skpUart&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DtGPIO_pinSet&lt;/span&gt;&lt;span&gt;(DIR_RS485, &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;}&lt;br /&gt;&lt;br /&gt;What is the UART interrupt priority?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span&gt;Thanks.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Georgiy&lt;/span&gt;&lt;/p&gt;
&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/378958?ContentTypeID=1</link><pubDate>Wed, 27 Jul 2022 14:45:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ddb92a20-3ea4-4e93-9342-c7aee5709556</guid><dc:creator>Kenneth</dc:creator><description>[quote user="Brett"]&lt;div style="max-width:100%;overflow:auto;max-height:none;"&gt;&lt;pre&gt;free(p_page_data);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Q: Could this free happen before the data is completed on the UART ?&lt;/p&gt;[/quote]
&lt;p&gt;Yes, since the&amp;nbsp;&lt;span&gt;nrf_libuarte_async_tx() occurs asynchronous (non-blocking).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kenneth&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/378905?ContentTypeID=1</link><pubDate>Wed, 27 Jul 2022 12:27:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e28cc90e-d8f2-47e3-91a3-473c0e9f2f16</guid><dc:creator>Brett</dc:creator><description>&lt;p&gt;Hi Keneth,&lt;/p&gt;
&lt;p&gt;I have it working, but not sure really why, hoping you can clarify something.&lt;br /&gt;&lt;br /&gt;In the original code, after the async_tx call,&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;err_code = nrf_libuarte_async_tx(&amp;amp;libuarte, (uint8_t *)p_page_data, page_size );&lt;/pre&gt;
&lt;p&gt;I have a free call, too free from the malloc.&lt;/p&gt;
&lt;pre&gt;free(p_page_data);&lt;/pre&gt;
&lt;p&gt;Q: Could this free happen before the data is completed on the UART ?&lt;br /&gt;&lt;br /&gt;Why I ask this is because if I add the following delay between the tx and free - it all works and I dont miss any random packets.&lt;/p&gt;
&lt;pre&gt;nrf_delay_ms(1);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Fails&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;err_code = nrf_libuarte_async_tx(&amp;amp;libuarte, (uint8_t *)p_page_data, page_size );
NRF_LOG_INFO(&amp;quot;return nrf_libuarte_async_tx : %d&amp;quot;, err_code);
APP_ERROR_CHECK(err_code);&lt;br /&gt;free(p_page_data);&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Works&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;err_code = nrf_libuarte_async_tx(&amp;amp;libuarte, (uint8_t *)p_page_data, page_size );
NRF_LOG_INFO(&amp;quot;return nrf_libuarte_async_tx : %d&amp;quot;, err_code);
APP_ERROR_CHECK(err_code);&lt;br /&gt;nrf_delay_ms(1);&lt;br /&gt;free(p_page_data);&lt;/pre&gt;
&lt;p&gt;The confusing part to me is, its always the 4th (occasionally the 3rd) packet that gets dropped, maybe thats due to timing?&lt;/p&gt;
&lt;p&gt;regards&lt;br /&gt;-brett&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/378806?ContentTypeID=1</link><pubDate>Wed, 27 Jul 2022 04:24:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e0a3594b-46a6-4420-a8b6-b41d56049617</guid><dc:creator>Brett</dc:creator><description>&lt;p&gt;&lt;br /&gt;The&amp;nbsp;&lt;span&gt;&amp;#39;static volatile&amp;#39;&amp;nbsp;&lt;/span&gt;&amp;nbsp;didnt make any difference - same issue.&lt;br /&gt;&lt;br /&gt;I have just ordered a logic analyzer, so I will get back to you in a few days.&amp;nbsp; i will keep testing other things, and if it magically starts works, I will update this case.&lt;/p&gt;
&lt;p&gt;regards&lt;br /&gt;-brett&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UARTE: uart_fifo_read() - 4th byte always 0x00</title><link>https://devzone.nordicsemi.com/thread/378747?ContentTypeID=1</link><pubDate>Tue, 26 Jul 2022 14:05:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a754380-ac34-4960-8ddb-19d0a83f986b</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Can you try to set all uart buffers (on both peers) to &amp;#39;static volatile&amp;#39; to ensure they are not reused for other purposes by the compiler?&lt;/p&gt;
&lt;p&gt;If that does not help, do you have access to a logic analyzer so you can look at the serial data, just to confirm if it&amp;#39;s indeed nRF52840 or nRF9160 that is the problem here?&lt;/p&gt;
&lt;p&gt;Kenenth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>