This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

pipe info in nRF24L01+

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 been mentioned several times in the forum to watch out for this, but the note doesn't make sense (to me). First if you mask the interrupts the IRQ will never change. What happens? Assuming the IRQs are not masked, but there are 2 messages in the RX fifo - After reading the first message at what does the pipe info in the status and length registers reflect the 2nd message, and how are you supposed to reliably read them (assuming you don't exit the interrupt routine)?

thanks mike

Parents
  • Håkon,

    Somehow the replies seem out of sequence - not sure if I'm doing something wrong. Again thanks, for the response, but I'm still not sure. I want to use these devices in several projects, so I'm trying to understand how they work. Secondly I'm trying to understand if I am doing things right on my current project (which seems to work).

    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

    ... while( RXFIFO not empty ) { pipe info <- read STATUS STATUS <- clear interrupt bit read message }

    Is this correct? The interrupt pin will go H->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?

    thanks mike

Reply
  • Håkon,

    Somehow the replies seem out of sequence - not sure if I'm doing something wrong. Again thanks, for the response, but I'm still not sure. I want to use these devices in several projects, so I'm trying to understand how they work. Secondly I'm trying to understand if I am doing things right on my current project (which seems to work).

    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

    ... while( RXFIFO not empty ) { pipe info <- read STATUS STATUS <- clear interrupt bit read message }

    Is this correct? The interrupt pin will go H->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?

    thanks mike

Children
No Data
Related