MC13192 and busy channel

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

MC13192 and busy channel

跳至解决方案
1,321 次查看
Mercurio
Contributor I
Hi evryone,
i'm using an MC13192 for ZigBee application and i find out some problems when more of one divice is in trasmission mode. There are collision and nothing is received from the receiver device.
Then i try to find out in wich way i could test the channel before a transmission to check if it is busy or not.

I think the register 0x24 do the job through CCA bit.

In code worrior i use this code tring to read the state of CCA bit but without success: register 24 is always 0x0000.

Here it is the code:

-------------------------------
UINT16 reg24;
SPIDrvWrite(0x06,0x0411); //I set the CCA mode
SPIDrvWrite(0x04,0x058D); //I set a very low treeshold: 0x05

RTXENAssert();

for( ;; ){
reg24 = SPIDrvRead( 0x24 ); //I read to infinite the register while
} //another device is transmitting to infinite
//on the same channel
------------------------------

Is this the right way to testing if a channel is busy?
Can anybody help me?

Thank's

Message Edited by Mercurio on 2006-08-04 08:37 AM

Message Edited by Mercurio on 2006-08-04 08:38 AM

标签 (1)
标记 (1)
0 项奖励
1 解答
432 次查看
bshaw
Contributor III
Is this your board or one of the Freescale evaluation boards? If register 24 is always zero you probably are not talking to the '192 properly. Read back the contents of the '192 registers after you write them as a test and make sure they have 'sane' values. Make sure your SPI stuff is working properly.

When writing to register 6 (Control_A) you have to set bit 14. This is one of those 'secret initialization' things mentioned in the 13192 errata. Review the errata and make sure you've programmed all the 'secret' bits properly. Also, I've found I need to modify these bits as a read-modify-write operation so that I do not set or reset any bits unintentionally. Read the register into ram, modify only the bits you're interested in, then write the new value to the register. There are probably only a few registers that this is critical on but I have not narrowed it down. Changing all my 13192 accesses to R-M-W got my code working.

Register 24 will tell you that an interrupt occured, it won't tell you the result of the CCA operation.

hth,

Bill

在原帖中查看解决方案

0 项奖励
1 回复
433 次查看
bshaw
Contributor III
Is this your board or one of the Freescale evaluation boards? If register 24 is always zero you probably are not talking to the '192 properly. Read back the contents of the '192 registers after you write them as a test and make sure they have 'sane' values. Make sure your SPI stuff is working properly.

When writing to register 6 (Control_A) you have to set bit 14. This is one of those 'secret initialization' things mentioned in the 13192 errata. Review the errata and make sure you've programmed all the 'secret' bits properly. Also, I've found I need to modify these bits as a read-modify-write operation so that I do not set or reset any bits unintentionally. Read the register into ram, modify only the bits you're interested in, then write the new value to the register. There are probably only a few registers that this is critical on but I have not narrowed it down. Changing all my 13192 accesses to R-M-W got my code working.

Register 24 will tell you that an interrupt occured, it won't tell you the result of the CCA operation.

hth,

Bill
0 项奖励