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