<?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>pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/844/pipe-info-in-nrf24l01</link><description>from the product spec
NOTE: The 3 bit pipe information in the STATUS register is updated during the IRQ pin high to low
transition. The pipe information is unreliable if the STATUS register is read during an IRQ pin
high to low transition. 
 It has</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 15 Nov 2013 09:24:52 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/844/pipe-info-in-nrf24l01" /><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4159?ContentTypeID=1</link><pubDate>Fri, 15 Nov 2013 09:24:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f03e6a8e-1b57-4a2e-9744-0846d658273e</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Mike,&lt;/p&gt;
&lt;p&gt;If you have a scenario where your RX receives more interrupts while in the ISR, then you have a race condition. To handle this properly, you should check the FIFO_STATUS register to see if the RX FIFO still has entries in it (poll it). If you use ACKing, you will have at least ~150 us before the interrupt is asserted again as the PLL has 130 us turn-around time.&lt;/p&gt;
&lt;p&gt;Note: If you fill up your RX_FIFO without reading out the payloads, then your RX will lock up until you flush the FIFO or read out at least one payload.&lt;/p&gt;
&lt;p&gt;BR
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4164?ContentTypeID=1</link><pubDate>Fri, 15 Nov 2013 02:30:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:73d0576e-50ca-45bb-a7af-83977ad46dce</guid><dc:creator>mike</dc:creator><description>&lt;p&gt;Håkon,&lt;/p&gt;
&lt;p&gt;Somehow the replies seem out of sequence - not sure if I&amp;#39;m doing something wrong.
Again thanks, for the response, but I&amp;#39;m still not sure. I want to use these devices in several projects, so I&amp;#39;m trying to understand how they work.
Secondly I&amp;#39;m trying to understand if I am doing things right on my current project (which seems to work).&lt;/p&gt;
&lt;p&gt;The processor in my current project is quite busy, so it is entirely possible that I receive a second packet while I am processing the first. Specifically I am using interrupts and my interrupt routine does&lt;/p&gt;
&lt;p&gt;...
while( RXFIFO not empty ) {
pipe info &amp;lt;- read STATUS
STATUS &amp;lt;- clear interrupt bit
read message
}&lt;/p&gt;
&lt;p&gt;Is this correct?
The interrupt pin will go H-&amp;gt;L when the second packet arrives (it if arrives)
does the interrupt occur before or after RX_EMPTY in FIFO_STATUS gets cleared?
Will the STATUS register be correct or do I need to delay before reading it?&lt;/p&gt;
&lt;p&gt;thanks
mike&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4161?ContentTypeID=1</link><pubDate>Thu, 14 Nov 2013 20:06:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9a02a1ac-c7d2-44d3-81bc-4d520db82c2c</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Mike,&lt;/p&gt;
&lt;p&gt;There are internal timings in the chip which may cause the STATUS register to give corrupt information when the IRQ pin is going from HIGH-to-LOW. The information is not valid until the pin is registered as a logic &amp;#39;0&amp;#39; on your MCU.&lt;/p&gt;
&lt;p&gt;Best regards
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4160?ContentTypeID=1</link><pubDate>Tue, 12 Nov 2013 16:34:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:de401296-5ddf-4970-8464-812af5c39c02</guid><dc:creator>mike</dc:creator><description>&lt;p&gt;Håkon,&lt;/p&gt;
&lt;p&gt;I understand the warning about the payload &amp;gt; 32.&lt;/p&gt;
&lt;p&gt;My point was &amp;quot;fully implementing&amp;quot; the note about the STATUS register, which I can&amp;#39;t do if I don&amp;#39;t understand it.&lt;/p&gt;
&lt;p&gt;mike&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4163?ContentTypeID=1</link><pubDate>Tue, 12 Nov 2013 15:32:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f38bcad8-85c0-40cd-9b42-0460bbd7c304</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Mike,&lt;/p&gt;
&lt;p&gt;If this note is not fully implemented, you can be in a situation where you get corrupted info. This may give you garbage data.&lt;/p&gt;
&lt;p&gt;You can lock up the state machine inside the radio-core if spec is not followed.
An example of this is:
A very important thing to always check &lt;em&gt;if dynamic payload length&lt;/em&gt; is used, is the payload length.
If you read out a payload of &amp;gt; 32 byte, then the state machine will go haywire and most likely lock up your receiver until power-cycle.&lt;/p&gt;
&lt;p&gt;Best regards
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4162?ContentTypeID=1</link><pubDate>Tue, 12 Nov 2013 14:27:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f98f7e15-3be0-4a1f-90fd-bdb702a3ba6a</guid><dc:creator>mike</dc:creator><description>&lt;p&gt;Håkon,&lt;/p&gt;
&lt;p&gt;I think the penny just dropped. I suspect that the answer is that the STATUS register is not double buffered and so if the info is latched in the middle of reading the STATUS register the first bits output on the SPI interface will be the old info and the last bits will be the new info.&lt;/p&gt;
&lt;p&gt;Since the bits are transmitted MSB first, by the time the RX_DR is asserted the RX_P_NO will be valid.
There does seem to be an issue with TX_FULL as in this case, when the last location is transmitted, one could read the STATUS resgister and TX_DS could be set and TX_FULL could still be set.
(TX_DS new info, TX_FULL old info), but I can&amp;#39;t imagine any situation in which this would matter.&lt;/p&gt;
&lt;p&gt;On the other hand the note (warning) is in the product spec (and was mentioned several times in this forum by Nordic employees), so I am still a little concerned there is more to this?&lt;/p&gt;
&lt;p&gt;thanks
Mike&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4158?ContentTypeID=1</link><pubDate>Tue, 12 Nov 2013 14:07:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3bafa2e4-afa6-46a9-ac49-c53329ecbefe</guid><dc:creator>mike</dc:creator><description>&lt;p&gt;Håkon,&lt;/p&gt;
&lt;p&gt;Thank you for your reply.
It seems very, very strange that the act of asserting the IRQ pin would have an effect on the STATUS register?&lt;/p&gt;
&lt;p&gt;In my second case (what is happening in my system) is that there are multiple messages in the RX queue, so even though I am using interrupts, I read the first message and then I read the status register to see if there is another message without exiting the interrupt routine. It is entirely possible that I am reading the STATUS exactly as the second (or third) IRQ is happening, but I am already in the interrupt handling routine. Then what happens?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: pipe info in nRF24L01+</title><link>https://devzone.nordicsemi.com/thread/4157?ContentTypeID=1</link><pubDate>Tue, 12 Nov 2013 11:18:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c7d36e04-3f52-4b82-ad5d-585264386b6e</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Mike,&lt;/p&gt;
&lt;p&gt;That note points to when the IRQ pin indicates an interrupt.
If in that transaction, you read the STATUS register, the bits can not be reliable.
What you then do is to ensure that the IRQ pin is properly asserted before reading the STATUS-register and clearing the interrupt cause (which will return the IRQ pin to high state).&lt;/p&gt;
&lt;p&gt;Usually, this is not an issue, as it takes some time for the application MCU to register a pin-interrupt (us-range). At this time, every thing has stabilized, and you are safe to read the STATUS register.&lt;/p&gt;
&lt;p&gt;If you do not enable the IRQ pin, meaning that you will do a polling sequence, this should not have an effect on your status-routine.&lt;/p&gt;
&lt;p&gt;Best regards
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>