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

Why am I getting no ACKs from an nRF24L01p in PRx mode?

Hi folks, I'm making progress with a program to get two nRF24L01p modules communicating with each other, but there are a couple of remaining problems. I hope someone can help with them, please:

  1. The PTX module seems to be transmitting my 3-byte payloads correctly, and the VDD_PA pin on that nRF24L01p pulses high (~2.0V) as expected. The PRX module even reports that it is receiving most packets from the PTX module (often 6 packets in a sequence, but then there's a 'timeout' reported). BUT the PRX module never seems to be sending back an ACK, and the PTX module consequently reports that no ACK has been received. The VDD_PA pin on the PRX chip never pulses high, either -- presumably because no ACK is being sent. Can anyone suggest what I'm doing wrong?
  2. I'm puzzled as to why the PRX module reports that 6 successive packets have been received successfully, but then reports a timeout with no packet received. Then it will report that the next 6 packets were received, before reporting another timeout + no packet received. And so on. This sounds a bit like some sort of timing problem, but I can't work out exactly what. Any suggestions? Thanks, JimR
Parents
  • Hi Torbjorn, Thanks for those comments.

    I'm not using any libraries - have attempted to write the program from scratch. The hardware I'm using is one of Geoff Graham's Micromites, which use a PIC32MX170F256B CPU which runs on its own MMBasic interpreter. So my program must be written in MMBasic, which is Geoff's updated and enhanced version of Microsoft's old GWBasic. Anyway, here are the configuration settings I'm using, first for the PRX (in hex):

    CONFIG: 0F; 
    EN_AA: 03; 
    EX_RXADDR: 03; 
    SETUP_AW: 03; 
    SETUP_RETR: 33; 
    RF_CH: 4C; 
    RF_SETUP: 04;
    RX_ADDR_P0: E7E7E7E7E7; 
    RX_ADDR_P1: C2C2C2C2C2; 
    RX_PW_P0: 03; 
    RX_PW_P1: 03; 
    DYNPD: 03; and 
    FEATURE: 06. (All others left at reset defaults.)
    

    And here are the settings for PTX (again in hex):

    CONFIG: 0E; 
    EN_AA: 03; 
    EN_RXADDR: 03; 
    SETUP_AW: 03; 
    SETUP_RETR: 03; 
    RF_CH: 4C; 
    RF_SETUP: 04; 
    RX_ADDR_P0: C2C2C2C2C2; 
    RX_ADDR_P1: E7E7E7E7E7; 
    RX_PW_P0: 03;
    
Reply
  • Hi Torbjorn, Thanks for those comments.

    I'm not using any libraries - have attempted to write the program from scratch. The hardware I'm using is one of Geoff Graham's Micromites, which use a PIC32MX170F256B CPU which runs on its own MMBasic interpreter. So my program must be written in MMBasic, which is Geoff's updated and enhanced version of Microsoft's old GWBasic. Anyway, here are the configuration settings I'm using, first for the PRX (in hex):

    CONFIG: 0F; 
    EN_AA: 03; 
    EX_RXADDR: 03; 
    SETUP_AW: 03; 
    SETUP_RETR: 33; 
    RF_CH: 4C; 
    RF_SETUP: 04;
    RX_ADDR_P0: E7E7E7E7E7; 
    RX_ADDR_P1: C2C2C2C2C2; 
    RX_PW_P0: 03; 
    RX_PW_P1: 03; 
    DYNPD: 03; and 
    FEATURE: 06. (All others left at reset defaults.)
    

    And here are the settings for PTX (again in hex):

    CONFIG: 0E; 
    EN_AA: 03; 
    EN_RXADDR: 03; 
    SETUP_AW: 03; 
    SETUP_RETR: 03; 
    RF_CH: 4C; 
    RF_SETUP: 04; 
    RX_ADDR_P0: C2C2C2C2C2; 
    RX_ADDR_P1: E7E7E7E7E7; 
    RX_PW_P0: 03;
    
Children
No Data
Related