SparkFun Forums 

Where electronics enthusiasts find answers.

All things pertaining to wireless and RF links
By Zman
#2166
hi all

I am trying to get the module up and running but no luck so far :(
(writing my own code). Here is a couple questions:

1) Do I have to transmit exact number of bits that have been configured or it can be less then that ?

2) When I want to switch between Tx and Rx mode, do I have to load whole last byte into config, or just one bit 0 ? From the docs I think it should be enough to load one bit, but in the SMIRF firmware source it is one byte, including channel number...

3) how can I detect if something actually sent through air ? ;) I am working on two modules at the same time (Tx Rx) and there is no transmission, is there any way to detect if it is Rx device or Tx device problem ?
User avatar
By sparky
#2203
Once you setup the size of the payload, you must clock in exactly this number of bits/bytes.

We clock in the last byte. Get the entire byte working and then try the one bit idea.

What I do is just monitor the DR1 pin. At first, who cares what data shows up? You just what to know something is moving right?

Unfortunately the RF-24G modules have no way of telling you if they heard what you clocked in. For instance, you can't clock out the configuration bytes to verify that everything is connected correctly.

Best of luck - keep whacking at it,
-Nathan
By Zman
#2210
Hello, Sparky

I tried several versions of source codes, including that one from your site (TRW-24G-Example), tried different sizes of payload, CRC and all other options, but nothing is working :(.

If I set 'no CRC' in Shockburst mode and short address field I guess the receiver must get a lot of noise as valid data ? But the DR1 pin NEVER goes high! I guess there is some hardware problem.

Re: TRW-24G-Example
Would you be so kind to recompile this source for 20Mhz and F870, or make the full source code available ? (delay.c and stdio.c mentioned inside are not there, so I tried to cut them from .asm file :). I can compile the source now, but still no luck with transmission :( )
[/b]
By pittuck
#2211
i see the (or a) problem

At 20Mhz the instruction time is 200ns

There must be a minimum of 500ns before each pin state change.

So when u pulse the line to clock in a bit, the line is high for only 200ns so it is not registering.

I cannot help with code as i have a project i need to work on. But it should be easy to do (perhaps add some nop(); statements in (use 3 for good measure))
By Zman
#2212
pittuck
thanks for advice, but this was accounted from start!
I never use other crystals, only 20Mhz and I know all timings pefectly.
My code was properly written and timed from the beginnig, as I learned

sparky and all!
I just have fixed the problem!

Guys, in your example source code, RX module connected to PORTA !
what a bad approach :(
never ever connect outputs to PORTA unless you are running out of other pins!, why to do that while you still have PORTB and C ?

PORTA mainly targeted for inputs (ADC, Schmidtt triggers are there), so if you use it for output triple-check the datasheet! I didn't, and I lost a week trying to spot software problem.

Finally, I realised that I forgot about RA4 pin, which is the only pin with open drain design in all PIC models. So when you guys use it as output pin (RX_CLK in the TRW-24G example code), it must be pulled-up with external 4.7-10k resistor.

bad luck, good experience