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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.