Forum: Mikrocontroller und Digitale Elektronik CCA mit dem CC2420


von Christoph M. (ruuby)


Lesenswert?

Hallo, ich benutze den Chipcon CC2420 Transceiver Chip. Pakete zu senden 
funktioniert einwandfrei, wenn ich den Commandstrobe STXON benutze. Um 
Kollisionen zu vermeiden möchte ich jedoch nur senden wenn der Kanal 
auch wirklich frei ist. Habe hierzu folgen Beispielcode gefunden:

// TX begins after the CCA check has passed
do {
  FASTSPI_STROBE(CC2420_STXONCCA);
  FASTSPI_UPD_STATUS(spiStatusByte);
  halWait(1);
} while (!(spiStatusByte & BM(CC2420_TX_ACTIVE)));

Mein Problem ist jedoch, dass das Status Byte welches bei absetzen des 
Kommandstrobes zurückgeliefert wird, immer auf 0x40 steht und ich daher 
nie aus der Schleife aussteigen kann.

Danke für Hilfe!

von Christian R. (supachris)


Lesenswert?

Hmm...hast du den Receiver vorher angeschaltet? Ich benutze auch den 
CC2420 mit dem MSP430 zusammen. Da gibts bei TI den MAC-Layer kostenlos 
für MSP430 und Atmel.

Kannst dir das dort ja mal angucken. Übrigens ist das CCA ganz schöner 
Mist, ist zwar laut 802.15.4 Standard so vorgesehn, aber sobald da eine 
Störquelle (Bluetooth argh) in der Nähe ist, bekommst du deine 
nachricht nie los.

Ich hab daher das Senden etwas abgewandelt: Der erste Versuch wird mit 
STXONCCA gemacht, wenn kein Ack kommt bis zu 256 weitere Versuche mit 
STXON. Und dazwischen immer ca 30ms Pause. Somit hab ich die ganze 
Geschichte resistent gegen BT hinbekommen. Wenn ich mein Handy direkt 
neben die Antenne lege, und BT-Geräte suche, geht zwar die 
Übertragungsrate in die Knie (von ca 10kByte/s auf manchmal 1,5kByte/s), 
aber es werden alle Pakete fehlerfrei übertragen.

BT wechselt so schnell den Kanal, dass man im ungünstigsten Fall nie das 
CCA bekommt, weil immer wenn der Transceiver wieder nachguckt, BT gerade 
wieder in der Nähe ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.