Hello,
Now I've completed some tests using the debugger to look at the value of the read back data.
bool CanSend() {
uint8_t status = Byte(0x00);
if (rxstate == TXRECV && rxfill == 0 && (status & (RF_RSSI_BIT >> 8)) == 0) {...
With that code status is always read back as a byte value of 0xFF and no Ack is send.
Then the code was changed to this:
bool CanSend() {
uint16_t status = Control(0x0000);
if (rxstate == TXRECV && rxfill == 0 && (status & (RF_RSSI_BIT >> 8)) == 0) {...
Now the status variable contains values different from 0, also the read back value often changes each time this function is called. In this case the Ack is send.
This indicates that the if statement should be changed to
if (rxstate == TXRECV && rxfill == 0 && (Control(0x0000) & (RF_RSSI_BIT >> 8)) == 0) {
What do you think?
Cheers,
Soeren