[Oberon] FPGA - nRF24L01 `RPI Net' server

Tomas Kral thomas.kral at email.cz
Wed May 16 15:58:48 CEST 2018


On Wed, 16 May 2018 07:40:22 +0200
Jörg Straube <joerg.straube at iaeth.ch> wrote:

> REPEAT
>   GetRegister(status)
> UNTIL {SENT, MAXRETRY} * status <> {};
> ResetBit;

This is what I actually do in `RF24::Write()', but with delays between
retries over chip MAXRETRY, and coding is not so elegant as above.
Timeouts used for receiving end.

I have discovered that I sometimes miss `ACK' for otherwise CRC good
payload. Which causes `RPI' to retransmit, which fills RX_FIFO with
a duplicate at oberon receiver end.

How can this be rectified?

Please see.

Oberon log
==========

012345678901234567890123456789x rcv-done
 snd-done
 00000040 RX_DR data ready
 00000010 RX_FIFO not empty

012345678901234567890123456789x rcv-done
 00000000 RX_DR no data
 00000010 RX_FIFO not empty

012345678901234567890123456789x rcv-done
 0000000E RX_DR no data
 00000011 RX_FIFO empty


RPI log
=======

Recv: size=31 payload=0123456789012345678901234567890 pipe=0
status 16 <== ACK missed retry
status 16 <== ACK missed retry
status 32
Send: size=31 payload=012345678901234567890123456789x pipe:0 retry:2


-- 
Tomas Kral <thomas.kral at email.cz>


More information about the Oberon mailing list