[Tinyos-help] RE: CC2420 Back-by-Back Sending Problem
David Moss
dmm at rincon.com
Mon Jul 2 14:06:53 PDT 2007
Jiakang -
I know the issue; I've tried to implement this behavior before with similar
results.
The CC2420 has a delay between Rx and Tx switching. The radio is defaulted
to Rx, so when you transmit, it has to go from Rx->Tx, transmit, then
Tx->Rx. Basically you see these Tx->Rx->Tx gaps between each transmission,
when CCA is disabled properly.
The solution to this is sort of a hack I implemented with the last rev of
the 2.0.1 CC2420 stack, and it will be removed in the next rev because I
don't want to support it or spend time maintaining it. The CC2420 has an
option to continuously modulation the channel, resending the contents of the
TXFIFO over and over without any gaps between the transmissions. This
allows a receiver to perform an extremely small receive check to detect if a
transmitter is nearby in a low power listening scheme. Because it's
resending only the contents of the TXFIFO with no additional calculations,
the packet's CRC needs to be pre-calculated and loaded onto the chip. Also,
I'm not sure if a preamble/sync byte is automatically sent for each round of
the TXFIFO transmission, so that may need to be uploaded as part of the
packet too.
Another option is to have your receivers do more complex backoffs. For
example, sample the channel multiple times instead of once before
transmitting when you know other transmitters in the area are going to be
doing no-CCA packet trains. This would increase latency, but decrease
collisions.
-David
-----Original Message-----
From: Jiakang Lu [mailto:jl9jb at cs.virginia.edu]
Sent: Sunday, July 01, 2007 9:24 PM
To: David Moss
Subject: CC2420 Back-by-Back Sending Problem
Hi David,
I'm trying to control the CCA and backoff in CC2420 radio on tinyos-1.x.
However, I met some unexpected radio performance when sending the
packets back-by-back. I've been debugging for a long time, but still
cannot fix the problem. I really hope that you can give me some idea or
suggestion.
Basically, my scenario is to send one packet train or two: 1. there is
no CCA and backoff between any pair of packets in the train; 2. for the
overall train, CCA is required. To do so, I wrote an interface called
ConfigureMac to control the CCA and backoff part in CC2420RadioM by
setting some flags. With ConfigureMac, my application is supposed to
tell MAC layer if it's the first car of the packet train, and whether
the CCA and backoff should be eliminated or not. And to make sure that
every and each packet will be sent, I made countRetry not to decrease in
all cases. Besides, I recorded send time and sendDone time of each
packet to get a clear view how it actually works. These are all the
changes I made based on standard CC2420RadioM in tinyos-1.x.
But when I send this packet train as stated above, sometimes I got very
weird performance: the train is separated for some reason, though each
part shows back-by-back transmission. This situation doesn't happen all
the time and the broken pattern is random, which makes me really
confused. Does the change in countRetry cause something wrong in the
operation? Does the back-by-back transmission cause some problem in
TxFIFO buffer?
For your reference, I related files in the mail and snapshot some cases
in my data plot. I do appreciate your patience and help!
Thank you very much.
Best,
Jiakang
More information about the Tinyos-help
mailing list