<?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>nrf23L01+ lost ACK payload packets</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/3939/nrf23l01-lost-ack-payload-packets</link><description>I am a bit confused about what happens to ACK_PLD when ack payload packets are lost. I am assuming that in case of ack payload packet loss MAX_RT bit in STATUS is set. 
 However, beyond that, is failed ack payload packet then cleared from ACK_PLD, or</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 25 May 2016 20:35:25 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/3939/nrf23l01-lost-ack-payload-packets" /><item><title>RE: nrf23L01+ lost ACK payload packets</title><link>https://devzone.nordicsemi.com/thread/14176?ContentTypeID=1</link><pubDate>Wed, 25 May 2016 20:35:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e5d85792-ae51-4c85-b8c8-58feefbaca6d</guid><dc:creator>jrowe</dc:creator><description>&lt;p&gt;fixed it by changing my interrupt priorities and adding a counter to my packets - apparently using china as a scapegoat isn&amp;#39;t always the best solution. Who knew?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf23L01+ lost ACK payload packets</title><link>https://devzone.nordicsemi.com/thread/14178?ContentTypeID=1</link><pubDate>Wed, 25 May 2016 18:47:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b713c51f-e4cf-4d39-b90d-fd911faf5f42</guid><dc:creator>jrowe</dc:creator><description>&lt;p&gt;To be clear, do I need to manually re-send my ack packets if the TX_DS bit is not set on the PRX device, or will the PRX re-send the data automatically if the bit is not set? Thanks again.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf23L01+ lost ACK payload packets</title><link>https://devzone.nordicsemi.com/thread/14177?ContentTypeID=1</link><pubDate>Wed, 25 May 2016 18:09:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:62263495-4d0b-4495-8441-1a735b5ddf09</guid><dc:creator>jrowe</dc:creator><description>&lt;p&gt;Thanks for the info Håkon. Our system seems to be missing a lot of ack packets. Our boards were populated in china, so this makes me suspect that they gave us fake knockoff radios that don&amp;#39;t deal with ack packets correctly. Is there any way to check whether the PRX is properly checking packet IDs and re-transmitting lost ack packets?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf23L01+ lost ACK payload packets</title><link>https://devzone.nordicsemi.com/thread/14175?ContentTypeID=1</link><pubDate>Fri, 03 Oct 2014 13:59:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:837210f6-817b-4a0a-b8e2-cda09509c09c</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;ACK_PLD is the internal buffer which is filled by SPI command &amp;quot;W_ACK_PAYLOAD&amp;quot;.
If you have filled the TX FIFO with one payload (regardless of ACK-payload or normal payload), the TX_EMPTY bit in the FIFO_STATUS register will be &amp;#39;0&amp;#39;.&lt;/p&gt;
&lt;p&gt;An ACK-payload is uploaded using the SPI command &amp;quot;W_ACK_PAYLOAD&amp;quot;, which is written into the nRF just as a normal payload.
MAX_RT is an interrupt that only a transmitter will see. A device configured as a receiver will not see this interrupt.&lt;/p&gt;
&lt;p&gt;The problem with an ACK payload is that you will not get an ACK on the ACK-payload (weird sentence, I know).
How this is handled inside the radio state machine is that there is a PID field which is a 2 bit counter. This counter will increment for each new packet so that the receiver can will be able to interpret a new packet from a re-transmission. This way, the ACK payload will give the receiver a &amp;quot;TX_DS&amp;quot; interrupt, however; the TX_DS signal will only occur on the &lt;em&gt;next&lt;/em&gt; payload:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PTX sends payload #1&lt;/li&gt;
&lt;li&gt;PRX receives, and sends ACK-payload&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this scenario, the PRX does not know if the ACK-payload was successfully.
On the next payload sent, this will happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PTX sends payload #2 and PID counter is incremented.&lt;/li&gt;
&lt;li&gt;PRX receives, both &amp;quot;RX_DR&amp;quot; and &amp;quot;TX_DS&amp;quot; will be set in the STATUS register.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the PTX lost the ACK-payload from the PRX, the PTX will send a re-transmit which the PRX will interpret and re-send the ACK-payload.&lt;/p&gt;
&lt;p&gt;The PRX will only forget the ACK-payload once the PID field has incremented (the next PTX payload) and reports &amp;quot;TX_DS&amp;quot; up to the application, meaning that the PTX has successfully received the previous ACK-payload.&lt;/p&gt;
&lt;p&gt;Hope this makes sense.&lt;/p&gt;
&lt;p&gt;Cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>