MC13192 and busy channel

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MC13192 and busy channel

Jump to solution
1,306 Views
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

Labels (1)
Tags (1)
0 Kudos
1 Solution
417 Views
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

View solution in original post

0 Kudos
1 Reply
418 Views
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 Kudos