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

micro_esb receiver data not update

Hi ~ I use nrf51-micro-esb on GitHub

In Tx-Device: auto sent (data+1) to Rx-Device

But Rx-Device receiver data still the same not Increment....

why in Rx-Device can't receiver Increment data ??

Uart Tx-Device :

Rx Data :0x1e,0x1f,0x20,0x21,0x22    
Rx Data :0x1f,0x20,0x21,0x22,0x23    
Rx Data :0x20,0x21,0x22,0x23,0x24
....

Uart Rx-Device :

Rx Data :0x1e,0x1f,0x20,0x21,0x22    
Rx Data :0x1e,0x1f,0x20,0x21,0x22    
Rx Data :0x1e,0x1f,0x20,0x21,0x22 
....

[Tx-Device]

void uesb_event_handler()
{
    static uint32_t rf_interrupts;
    static uint32_t tx_attempts;
    
    uesb_get_clear_interrupts(&rf_interrupts);
    
    if(rf_interrupts & UESB_INT_TX_SUCCESS_MSK)
    {   
    }
    
    if(rf_interrupts & UESB_INT_TX_FAILED_MSK)
    {
        uesb_flush_tx();
    }
    
    if(rf_interrupts & UESB_INT_RX_DR_MSK)
    {
        uesb_read_rx_payload(&rx_payload);
        NRF_GPIO->OUTCLR = 0xFUL << 8;
        NRF_GPIO->OUTSET = (uint32_t)((rx_payload.data[2] & 0x0F) << 8);
    }
    uesb_get_tx_attempts(&tx_attempts);
    NRF_GPIO->OUTCLR = 0xFUL << 12;
    NRF_GPIO->OUTSET = (tx_attempts & 0x0F) << 12;
}

int main(void)
{
    uint8_t rx_addr_p0[] = {0x12, 0x34, 0x56, 0x78, 0x9A};
    uint8_t rx_addr_p1[] = {0xBC, 0xDE, 0xF0, 0x12, 0x23};
    uint8_t rx_addr_p2   = 0x66;
		
    simple_uart_config(RTS_PIN_NUMBER, TX_PIN_NUMBER, CTS_PIN_NUMBER, RX_PIN_NUMBER, HWFC);
    simple_uart_putstring((const uint8_t *)"\n\rTx-Start: \n\r");
		        
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART = 1;
    while(NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);

    uesb_config_t uesb_config       = UESB_DEFAULT_CONFIG;
    uesb_config.rf_channel          = 5;
    uesb_config.crc                 = UESB_CRC_16BIT;
    uesb_config.retransmit_count    = 6;
    uesb_config.retransmit_delay    = 500;
    uesb_config.dynamic_ack_enabled = 0;
    uesb_config.payload_length      = 8;
    uesb_config.protocol            = UESB_PROTOCOL_ESB_DPL;
    uesb_config.bitrate             = UESB_BITRATE_2MBPS;
    uesb_config.event_handler       = uesb_event_handler;
    
    uesb_init(&uesb_config);

    uesb_set_address(UESB_ADDRESS_PIPE0, rx_addr_p0);
    uesb_set_address(UESB_ADDRESS_PIPE1, rx_addr_p1);
    uesb_set_address(UESB_ADDRESS_PIPE2, &rx_addr_p2);

    tx_payload.length  = 8;
    tx_payload.pipe    = 0;
    tx_payload.data[0] = 0xA1;
    tx_payload.data[1] = 0x42;
    tx_payload.data[2] = 0xB3;
    tx_payload.data[3] = 0x44;
    tx_payload.data[4] = 0xC5;
    int a = 0x1e;
    while (true)
    {   	
		tx_payload.pipe = 0;
		tx_payload.data[0] = a;	
		tx_payload.data[1] = a+1;	
		tx_payload.data[2] = a+2;
		tx_payload.data[3] = a+3;
		tx_payload.data[4] = a+4;	
		a++;
        if(uesb_write_tx_payload(&tx_payload) == UESB_SUCCESS)
        {			  
		printf("Tx Data :0x%x,0x%x,0x%x,0x%x,0x%x\r\n",tx_payload.data[0],tx_payload.data[1],tx_payload.data[2],tx_payload.data[3],tx_payload.data[4]);            	
        }
        nrf_delay_us(250000);
    }
}

[Rx-Device]

void uesb_event_handler()
{
    static uint32_t rf_interrupts;
    
    uesb_get_clear_interrupts(&rf_interrupts);
    
    if(rf_interrupts & UESB_INT_TX_SUCCESS_MSK)
    {   
    }
    
    if(rf_interrupts & UESB_INT_TX_FAILED_MSK)
    {
    }
    
    if(rf_interrupts & UESB_INT_RX_DR_MSK)
    {
        uesb_read_rx_payload(&rx_payload);
        //NRF_GPIO->OUTCLR = 0xFF << 8;
        //NRF_GPIO->OUTSET = rx_payload.data[1] << 8;
	   printf("Rx Data :0x%x,0x%x,0x%x,0x%x,0x%x\r\n",rx_payload.data[0],rx_payload.data[1],rx_payload.data[2],rx_payload.data[3],rx_payload.data[4]);
    }
}

int main(void)
{
    uint8_t rx_addr_p0[] = {0x12, 0x34, 0x56, 0x78, 0x9A};
    uint8_t rx_addr_p1[] = {0xBC, 0xDE, 0xF0, 0x12, 0x23};
    uint8_t rx_addr_p2   = 0x66;    
		
    simple_uart_config(RTS_PIN_NUMBER, TX_PIN_NUMBER, CTS_PIN_NUMBER, RX_PIN_NUMBER, HWFC);
    simple_uart_putstring((const uint8_t *)"\n\rRx-Start: \n\r");
		        
    NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
    NRF_CLOCK->TASKS_HFCLKSTART = 1;
    while(NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);

    uesb_config_t uesb_config       = UESB_DEFAULT_CONFIG;
    uesb_config.rf_channel          = 5;
    uesb_config.crc                 = UESB_CRC_16BIT;
    uesb_config.dynamic_ack_enabled = 0;
    uesb_config.payload_length      = 8;
    uesb_config.protocol            = UESB_PROTOCOL_ESB_DPL;
    uesb_config.bitrate             = UESB_BITRATE_2MBPS;
    uesb_config.mode                = UESB_MODE_PRX;
    uesb_config.event_handler       = uesb_event_handler;
    
    uesb_init(&uesb_config);

    uesb_set_address(UESB_ADDRESS_PIPE0, rx_addr_p0);
    uesb_set_address(UESB_ADDRESS_PIPE1, rx_addr_p1);
    uesb_set_address(UESB_ADDRESS_PIPE2, &rx_addr_p2);
  
    uesb_start_rx();
  
    while (true)
    {   
    }
}
Related