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

About disabling ESB and setting addresses with NRF51822

Hello!

I am working with a NRF51822 and I need to change the address of pipes regularly (so I can use more than 8 NRF communicating together with ESB protocol).

My problem is the following : to make the function nrf_esb_set_address_prefix_byte work, I need to stop ESB via the function nrf_esb_disable() and wait for the nrf_esb_disabled() to be called. Unfortunately, this takes a lot of time : up to 62ms in my tests. This is not acceptable for my need. Changing addresses isn't so long with NRF24. Is there a solution to change addresses more quickly with NRF51822?

Thanks.

PS: I posted the same question here.

Parents
    1. The disable-time is variable, from 5ms to 60ms

    2. Here are my ESB settings:

    
    nrf_esb_init(NRF_ESB_MODE_PRX);
    	
    if(!nrf_esb_set_enabled_prx_pipes(0x3F)) error(0);
    	
    if(!nrf_esb_set_channel(rf_ch)) error(0);
    
    if(!nrf_esb_set_crc_length(NRF_ESB_CRC_LENGTH_2_BYTE)) error(0);
    if(!nrf_esb_set_max_number_of_tx_attempts(8)) error(0);
    if(!nrf_esb_set_retransmit_delay(750)) error(0);
    	
    nrf_esb_enable_dyn_ack();
    	
    nrf_esb_enable();
    
    1. When this happens, I am in PRX mode and no other NRF is using ESB on the same channel.
Reply
    1. The disable-time is variable, from 5ms to 60ms

    2. Here are my ESB settings:

    
    nrf_esb_init(NRF_ESB_MODE_PRX);
    	
    if(!nrf_esb_set_enabled_prx_pipes(0x3F)) error(0);
    	
    if(!nrf_esb_set_channel(rf_ch)) error(0);
    
    if(!nrf_esb_set_crc_length(NRF_ESB_CRC_LENGTH_2_BYTE)) error(0);
    if(!nrf_esb_set_max_number_of_tx_attempts(8)) error(0);
    if(!nrf_esb_set_retransmit_delay(750)) error(0);
    	
    nrf_esb_enable_dyn_ack();
    	
    nrf_esb_enable();
    
    1. When this happens, I am in PRX mode and no other NRF is using ESB on the same channel.
Children
No Data
Related