<?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>Detecting the difference between TX and ACK payloads.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/10837/detecting-the-difference-between-tx-and-ack-payloads</link><description>I have two nrf24l01+ modules communicating on a single channel. The &amp;quot;remote&amp;quot; does 99% of the data transmission while the &amp;quot;base&amp;quot; receives and uploads to a host. Occasionally the base station transmits a short packet. 
 The remote is configured to auto</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 17 Dec 2015 17:59:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/10837/detecting-the-difference-between-tx-and-ack-payloads" /><item><title>RE: Detecting the difference between TX and ACK payloads.</title><link>https://devzone.nordicsemi.com/thread/40512?ContentTypeID=1</link><pubDate>Thu, 17 Dec 2015 17:59:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:88459c65-6dde-4b97-8fb1-06fd8b718394</guid><dc:creator>ggallant</dc:creator><description>&lt;p&gt;In the past I used to have the base station poll the remotes every 20msec and use the ACK payload to contain data from the remotes. If the remote did supply data in the ACK payload I cut the delay to 5msec to increase the data transfer rate. I used an 8bit sequence number to identify packets and could detect missing or duplicated messages. This solution was not optimal. I might revisit it now that I a better understanding of the radio.&lt;/p&gt;
&lt;p&gt;What I could easily do is add a minimum delay (2msec) after receiving a message to allow the remote to rapidly process multiple TX payloads without collisions. In my environment the base station needs to be able to tell the remote to stop transmitting. Perhaps the ACK payload could be used. This will require some thinking.&lt;/p&gt;
&lt;p&gt;I have a 100% data completion with a few MAX_RT interrupts per 10,000 messages.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Detecting the difference between TX and ACK payloads.</title><link>https://devzone.nordicsemi.com/thread/40511?ContentTypeID=1</link><pubDate>Thu, 17 Dec 2015 09:40:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4bdf7ac9-b23c-4c1c-a002-ca447bb47d29</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Sorry for the late reply. If you switch the base-station over to TX operation (PTX), and start transmitting to the remote control, you will need to time-multiplex your remotes. If the remote(s) are still in PTX mode, the transmission from the base-station can be interpreted as an ACK, and the application will misbehave.&lt;/p&gt;
&lt;p&gt;I would recommend using ACK payloads for exchanging data from the base-station to the remote.&lt;/p&gt;
&lt;p&gt;Cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Detecting the difference between TX and ACK payloads.</title><link>https://devzone.nordicsemi.com/thread/40510?ContentTypeID=1</link><pubDate>Mon, 14 Dec 2015 18:37:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5f8677c9-feca-4dec-ae7d-6653fa303a0e</guid><dc:creator>ggallant</dc:creator><description>&lt;p&gt;No quite. The remote is transmitting messages every 50msec. Each message typically requires 3 packets. Sometimes it uses 4 with a very short first packet. That is as expected. The base station ACK&amp;#39;s without data in the payload. The remote reuses the prior FIFO if MAX_RT is asserted. Eventually all data arrives correctly. I have transmitted 200K messages with detecting an error. Usually the base and remote are with 100cm of each other.&lt;/p&gt;
&lt;p&gt;If the base unit transmits a packet and gets MAX_RT asserted I flush the TX FIFO&amp;#39;s. At this time receive FIFO&amp;#39;s at the base module seem to misbehave.&lt;/p&gt;
&lt;p&gt;From reading other posts on this site regarding ACK problems I have switch from using Pipe 0 to using Pipes 1 and 2 for data and Pipe 0 for ACK data only. As I am not expecting and ACK data I have set traps to report this condition.  Since the change I have had flawless data transfer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Detecting the difference between TX and ACK payloads.</title><link>https://devzone.nordicsemi.com/thread/40513?ContentTypeID=1</link><pubDate>Mon, 14 Dec 2015 10:36:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3f6569b4-2036-4adb-8892-f005129cfd53</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;If I understand correctly, your problem is:
The message is segmented into 3 x payloads on-air. If segment #2 fails, and receives a MAX_RT, the FIFO is flushed, and the PRX has only received a partial message.&lt;/p&gt;
&lt;p&gt;Please correct me if my understanding is incorrect.
Q: In this case, does the base-station transmit payload-with-ACK, or does it switch over to PTX mode?&lt;/p&gt;
&lt;p&gt;This sounds like it has to be handled in the application. If your PRX only receives a partial message, it should detect this as a lost message, and request the whole message to be re-sent.&lt;/p&gt;
&lt;p&gt;The payload itself includes a small counter (2 bit field in the &amp;quot;Packet Control Field&amp;quot; of ESB RF protocol setup), which is used for distinguishing between a re-transmit and a new payload.&lt;/p&gt;
&lt;p&gt;If you are using ACK-payload to transmit this, I would recommend doing a polling-scheme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PRX receives a dummy-payload from PTX, wait ~200 us, then upload ACK-payload.&lt;/li&gt;
&lt;li&gt;PTX then sends a new payload to receive the ACK-Payload from the PRX.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>