- Tue Apr 15, 2008 4:23 am
#46443
Hi all!
I'm sending 8192 bytes through nRF24L01, using Brennens library on ATMega168.
The bandwidth archived so far is 338kbit/s with auto ack, and 478 kbit/s without.
I've modified tutorial 2 heavily, and what I'm doing is basiclly a start and stop thing: Upload a packet. When IRQ fires, upload next packet, and so on... The CE line is never low, so the nRF24L01 goes from TX MODE to Standby-II, and back again.
However, I would like to have higher bandwidth. I want to poll the FIFO_STATUS register to see if the TX FIFO is full. If it it's not full, then I can upload a new packet, which gets transmitted as soon as the previous packet has been sent.
Like this:
The nrf24l01_fifo_tx_full() seems to return false wether or not the TX FIFO is full or not, so the program constantly pumps data into the nRF24L01 causing massive packet loss.
I'm sending 8192 bytes through nRF24L01, using Brennens library on ATMega168.
The bandwidth archived so far is 338kbit/s with auto ack, and 478 kbit/s without.
I've modified tutorial 2 heavily, and what I'm doing is basiclly a start and stop thing: Upload a packet. When IRQ fires, upload next packet, and so on... The CE line is never low, so the nRF24L01 goes from TX MODE to Standby-II, and back again.
However, I would like to have higher bandwidth. I want to poll the FIFO_STATUS register to see if the TX FIFO is full. If it it's not full, then I can upload a new packet, which gets transmitted as soon as the previous packet has been sent.
Like this:
Code: Select all
But it's not working Any suggestions?while ( count < NUM_PACKETS)
{
while (!nrf24l01_fifo_tx_full())
{
// upload new packet
datas[0] = count & 0xFF; // low byte of counter
datas[1] = (count >> 8); //high byte of counter
nrf24l01_write_tx_payload(datas, PAYLOAD_SIZE, false); //upload to nRF
count++;
}
}
The nrf24l01_fifo_tx_full() seems to return false wether or not the TX FIFO is full or not, so the program constantly pumps data into the nRF24L01 causing massive packet loss.