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)
{
}
}