New CCxx00 Platforms Troubleshooter

From TinyOS Wiki
Revision as of 09:54, 8 May 2008 by Dmoss (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Automatic Gain Control Settings

The automatic gain control registers stored in the CC1100.h and CC2500.h files need to be modified for use in your particular platform or application. Use SmartRF Studio to calculate:

  • AGCCTRL2
  • AGCCTRL1
  • AGCCTRL0

If you do not set your automatic gain control registers correctly, the radio will always see the channel as "in use". This means you will never be able to transmit.

The AGCCTRL* registers vary based on data rate, CC1100 vs. CC1101, etc.


Basic Troubleshooting

1. Are you getting a SplitControl.startDone() event?

  • There are lots of while() loops in BlazeInitP. Is execution getting locked up in one of those? This could indicate a hardware problem. When debugging this part, I typically surround the while loops with Leds.set(xyz) statements to read the error code off the leds and see which while() loop is causing the lock up:
 call Leds.set(1);
 while(...);
 call Leds.set(0);
 
 call Leds.set(2);
 while(....);
 call Leds.set(0);


2. Are you able to get an AMSend.sendDone() event back?

  • BlazeTransmitP will not transmit if it sees the channel is not clear.

There have been quite a few cases where the channel is definitely clear but the hardware doesn't think so. This is most likely due to LNA settings in AGCCTRL2, and RSSI threshold settings. Try lowering the gain of the LNA to allow the radio to think the channel is clear.

3. Is the RxInterrupt being fired inside of BlazeReceiveP?

  • If the RxInterrupt is not firing with another CC1100 transmitter nearby, you could be on the wrong frequency or the other transmitter isn't working properly.
  • Make sure IOCFG2 is configured to be 0x1, which is an RXFIFO threshold indicator for the receive branch.