not using E7E7E7E7E7 default addy on nRF24L01

Hi

I have successfully implemented tx and rx code on dspic 30F3010 with nRF2401 tx and rx part

and nRF24L01 (rx part that receive the RF2401 tx )

but if I change the default addy example : E76B3697B5

my nRF2401 receiver works but the 24L01 don’t detect anything… (ISR pin always high)

where as for the default address it works…

Do someone have some experience with different addy and mixed devices ?

Ciao

Lotfib

	RF24L_CSN = 1;					// Set nRF24L01 CSN pin à high : donc non actif
	SPI1STAT = 0x8000;	// Enable SPI port
	SPI1CON = 0x012E;		// Master mode, SCK = Fcy/5/4 = 1.0 MHz |1110), CKP=0,  CKE=1, Clk idle is low, 8 bits
	for (j=0; j<15000; j++)		__builtin_nop();

	RF24L_CE = 0;					// Set nRF24L01 configuration mode (ie il ne reçoit plus)
	for (j=0; j<20; j++)		__builtin_nop();	// perd 4 us
	SPI1STATbits.SPIROV = 0;            // Clear overflow flag

	SendOnSPI( 0x20, 0x3D);	// PRX, CRC enabled 16 bit, ISR RX only, Power Down
	SendOnSPI( 0x21, 0x00);	// dissable auto-ack for all channels
	SendOnSPI( 0x22, 0x01);	// enable pipe0
	SendOnSPI( 0x23, 0x03);	// address width = 5 bytes 
	SendOnSPI( 0x25, 0x02);	// set channel 2	
	SendOnSPI( 0x26, 0x07);	// data rate = 1MB
	//-------- special envoie de 1+5 byte pour configurer l'adresse ---------------------------------------------
	//set address E76B3697B5
	RF24L_CSN = 0;				// activate SPI for nRF24L01
	uidummy = SPI1BUF; SPI1BUF=0x2A;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
//	uidummy = SPI1BUF; SPI1BUF=0xE7;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
//	uidummy = SPI1BUF; SPI1BUF=0x6B;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
//	uidummy = SPI1BUF; SPI1BUF=0x36;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
//	uidummy = SPI1BUF; SPI1BUF=0x97;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
//	uidummy = SPI1BUF; SPI1BUF=0xB5;	while (SPI1STATbits.SPITBF);	while ( !SPI1STATbits.SPIRBF);
	for (j=0; j<20; j++)		__builtin_nop();
	RF24L_CSN = 1;				// Donnnée envoyée, déselectionne le SPI du nRF24L01 non actif => en VEILLE
	//------------------------------------------------------------------------------------------------------------
	SendOnSPI( 0x31, 0x0A);	// 10 bytes payload	
	SendOnSPI( 0x20, 0x3F); //// PRX, CRC enabled 16 bit, ISR RX, Power UP

I think you are not setting correctly the pipe’s addresses. The datasheet is somewhat unclear about this. I had this problem too and figured out in the end that I was not setting the pipe’s addresses correctly. Try with a symmetrical address first, and check the order of bytes.

yes you are right :

page 55 of the datasheet :

0A

RX_ADDR_P0 39:0 0xE7E7E7E7E7

R/W Receive address data pipe 0. 5 Bytes maximum

length. (LSByte is written first. Write the number

of bytes defined by SETUP_AW)

wheras for the 2401, it is in the opposite order (MSByte first).

I will give it a try.

thanks