Forum: HF, Funk und Felder CC2420 Kanalwechsel zu Laufzeit


von dachsi (Gast)


Lesenswert?

Hallo,

ich versuche gerade den Kanal des CC2420 interaktiv zu setzen... Ich 
Arbeite mit einem ATMega128L und dem o.g. CC2420 Funkmodul. Mein Code 
sieht bisher so aus:
1
void setKanal(uint8_t kanal)
2
{
3
  uint16_t FSCTRL_reg;
4
  uint16_t FSCTRL_kanal;
5
6
  SPI_TxRx(0x06);      // SRFOFF
7
8
  FSCTRL_kanal = 357 + 5 * (kanal - 11);
9
  FSCTRL_reg = (SPI_RxReg(0x18) & 0xfc00) | FSCTRL_kanal;
10
11
  SPI_TxReg(0x18, FSCTRL_reg);
12
  FSCTRL_reg = SPI_RxReg(0x18);
13
/*  
14
USART_Tx(0x7e);
15
USART_Tx(0x02);
16
USART_Tx((uint8_t)(FSCTRL_kanal>>8));
17
USART_Tx((uint8_t)FSCTRL_kanal);
18
USART_Tx(0x7e);
19
20
USART_Tx(0x7e);
21
USART_Tx(0x02);
22
USART_Tx((uint8_t)(FSCTRL_reg>>8));
23
USART_Tx((uint8_t)FSCTRL_reg);
24
USART_Tx(0x7e);
25
*/
26
  SPI_TxRx(0x08);      // SFLUSHRX
27
  SPI_TxRx(0x08);      // SFLUSHRX
28
29
  SPI_TxRx(0x03);          // STRXON
30
}

Der Wert kanal liefert ein Wert von 11-26! Der Code funktioniert 
eigentlich auch, solange man den Kanal einmal setzt. Wenn man es erneut 
versucht Funktionierts jedoch nicht mehr. Vielleicht könnt ihr mir 
helfen. Es sollte denke ich nur eine kleinigkeit sein.

Vielen Dank im Voraus...

von Christian R. (supachris)


Lesenswert?

Schau doch mal in die AN033 bei TI. Mit der Funktion rfBasicInit() kann 
man beliebig oft den Kanal neu setzen. Ich benutze das auch, um den 
Koordinator automatisch zu finden. Wenn du da vergleichst, findest du 
sicher schnell was...

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.