Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tx not receiving acknowledgement with NRF24L01+PA+LNA module. Interrupt stopped working in Transmitter side. #44

Closed
Dream-Project opened this issue Jun 9, 2020 · 6 comments

Comments

@Dream-Project
Copy link

Dream-Project commented Jun 9, 2020

Transmitter is not receiving acknowledgement. Interrupt stopped working in Transmitter side.

I tried IRQ sample. Receiver is receiving data but the acknowledge is not received by Transmitter. This issue started after taking the release on 8th June 2020.

On Tx side, _radio.hasAckData() is always false.

@dparson55
Copy link
Owner

Try adding a 0.1uF capacitor between Vcc and Gnd on both your TX and RX radios. Also, there are some nRF24L01+ PA/LNA high-powered radios that do not work correctly with acknowledgement packets. Someone actually sent me such a radio and sure enough, it did not work with the hardware-based acknowledgement system that these radios support.

I confirmed all is still working fine with two ATmega328's running the IRQ_TX and IRQ_RX examples. The transmitter resports success and if I unplug the receiver, the transmitter begins reporting a failure as expected. If I plug in the receiver again, the transmitter starts reporting success.

The release a couple days ago only included a new method called discardData for #39, so it did not affect any of the sending or receiving logic in NRFLite. If you did another library update or other hardware change, look at those changes instead.

Note the hasAckData method is only used when sending and receiving acknowledgement data packets, not plain acknowledgement packets that contain no data. In order for a transmitter to get data from a receiver, the receiver needs to add an acknowledgement data packet to itself via addAckData. See TwoWayCom_HardwareBased_RX for an example.

  • RX side: call addAckData to add an acknowledgement data packet
  • TX side: call sendData and then check hasAckData to see if the receiver provided an acknowledgement data packet

@Dream-Project
Copy link
Author

I was using 10uf. Do you recommend to change to 0.1uf?

@dparson55
Copy link
Owner

dparson55 commented Jun 17, 2020

10uF is fine as well.

@Dream-Project
Copy link
Author

Dream-Project commented Jun 18, 2020

i am trying to build a RC car. For receiving part, instead of loop, i want to use interrupt. is it good approach? does it consume less current than looping?

Just want to let you know. i am using Chinese clone model of NRF24L01+. It was breaking my head for morethan 2 months to make it to work but failed. It worked only with your library. Hats up thanks to you.

@dparson55
Copy link
Owner

Using the interrupt will not help with battery life unless you also sleep the microcontroller, which I'm sure you would not want to do. Still though, using the interrupt should work perfectly well, you just need to make sure to use the interrupt examples and slowly make changes to not break anything. I've found interrupt programming to be harder to avoid bugs, but that is just me. Were you able to get the interrupt examples working?

@dparson55
Copy link
Owner

Closing the issue, sounds like you're figuring things out.

@dparson55 dparson55 changed the title Tr. is not receiving acknowledgement. Interrupt stopped working in Transmitter side. Tx not receiving acknowledgement with NRF24L01+PA+LNA module. Interrupt stopped working in Transmitter side. Jan 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants