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...