PDA

View Full Version : need help coding NRF24L01. What am I missing?



rudyauction509
- 11th November 2013, 03:09
OK first off I know my code is horrible and I have no intention of becoming a professional coder so I'm not going to change that. But to the point, I'm trying to send the number 1, wait a second, the number 2, wait a second, the number 3 then repeat, and have an LED light up based on the # received. I haven't gotten a response from the receiving end no matter what I try. What am I missing here? FYI the most complex thing I've interfaced before these is a 1kbit i2c eeprom so this is a bit over my head. The LED for the number 2 does light up dimly whenever power is connected. Power supply is 3.3 volts. Do these need pull up/down resistors? Did I miss a register? How do I select the data pipe to use, or the addres to send to? I couldn't find any answers in the datasheet or the diyembedded tutorial, and the code examples I have found have all used hardware level SPI and been beyond my understanding.

The address for pipe 1 is "aaaaa" and I've tried to disable every advanced feature on the chip to simplify things. By the way, when I copied and pasted the code, it cut off the first part of my commands. (101010 turns into 101010) WTF??


TX code:

define osc 4


a var byte
csn var portc.1
transmit var portc.3
so var portc.5
si var portc.2
sck var portc.4
high csn
pause 100
low transmit

low csn
shiftout si, sck, 0, [10000, 000000]
high csn
pause 5
low csn
shiftout si, sck, 0, [101010, "a", "a", "a", "a", "a"]
high csn
pause 5
low csn
shiftout si, sck, 0, [110001, 000001]
high csn



do
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000001]
high csn
high transmit
pause 10
low transmit
pause 1000

low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000010]
high csn
high transmit
pause 10
low transmit
pause 1000

low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000011]
high csn
high transmit
pause 10
low transmit
pause 1000





loop


RX code:

define osc 4
#config
__config H'3F46'
#endconfig

a var byte
csn var porta.2
receive var portb.0
so var portb.3
si var portb.2
sck var portb.1

high csn
pause 100

low csn
shiftout si, sck, 0, [10000, 000000]
high csn
pause 5
low csn
shiftout si, sck, 0, [101010, "a", "a", "a", "a", "a"]
high csn
pause 5
low csn
shiftout si, sck, 0, [110001, 000001]
high csn


do
low receive
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 010101]
shiftin so, sck, 0, [a]
high csn
high receive



pause 10



if a = 1 then
high portb.4
low portb.5
low portb.6
elseif a = 2 then
high portb.5
low portb.4
low portb.5
elseif a = 3 then
high portb.6
low portb.4
low portb.5
else
high portb.4
high portb.5
high portb.6
endif

pause 20



loop

Normnet
- 11th November 2013, 03:41
rudyauction509

See other basic nRF24L01 (http://www.protonbasic.co.uk/showthread.php/65349-nRF24L01/page2?highlight=NRF24L01) post #16 for code example.

Norm

rudyauction509
- 11th November 2013, 03:52
I can't. I need their compiler to open it. Can you post it here?

Normnet
- 11th November 2013, 04:05
I can't. I need their compiler to open it. Can you post it here?
rudyauction509

You should only need to register.
The code isn't mine to post.

Norm

rudyauction509
- 11th November 2013, 04:42
Never mind, my computer didn't recognise the .bas file so I opened it directly through microcode studio. However I'm still completely lost. I have no idea what's going on in the code, however it appears they are using hardware spi like all of the other examples. None of the commands used for data transfer are familiar. Looking through my posted code, can anyone see why I'm not getting results?

By the way, the tx picmicro is a 16f886 and the rx picmicro is a 16f819.

rudyauction509
- 11th November 2013, 08:54
I just spent another 3 long hours researching and found another half dozen code examples but all of them were once again for pic18f series with hardware spi and other external parts I don't have access to and I don't have enough experience to understand the commands. So can anyone help with specifically shiftin/shiftout and pic16f series code examples or point out anything I may have missed? And again, how do pipes and addressing work exactly? Do I send the Rx address before the data or the pipe number??? Is it a separate command? I have a feeling that that's where the problem is.

Normnet
- 12th November 2013, 01:53
rudyauction509

See other basic Re: nRF24L01 (http://www.protonbasic.co.uk/showthread.php/65349-nRF24L01/page2?highlight=NRF24L01) again this time post #17 for a 16F88 Shout and Shin (no SPI) version of code.
To open with microcode studio first simply change the file extension from .bas to .pbp as the file is only text.

Their is some porting to be done however taken command by command it can be done as the terms are quite similar.

Norm