SMAC通信调试的时候发现,在等待gu8RTXMODE!=IDLE_MODE
- UID
- 339451
- 性别
- 男
|
在drivers.c这个文件中,有一个 interrupt void IRQIsr(void) 中断函数,这个函数处理很多事情,比如发送结束、接收结束的时候,射频模块都会给MCU中断信号,然后进入这个函数。
这个函数里有这么一段代码,正是这段代码,使得射频模块发送完成后,将 gu8RTxMode 改回了 IDLE_MODE.
if ((gu8RTxMode == IDLE_MODE) || ((u16StatusContent & CCA_IRQ_MASK) != 0) || \ ((u16StatusContent & TX_IRQ_MASK) != 0)) { // 发送完毕后,就会满足 (u16StatusContent & TX_IRQ_MASK) != 0 这个条件 /* If in idle mode already or if CCA or TX is done, just return. */ RTXENDeAssert(); /* Forces the MC13192 to idle. */
/* Check for Pulse TX Mode for PRBS9 Test mode sequence */ if (gu8RTxMode == PULSE_TX_MODE) { u16StatusContent = (SPIDrvRead(MODE_ADDR) & 0xFF7F); /* Read the MC13192 trx register. Timer trigger off. */ SPIDrvWrite(MODE_ADDR, u16StatusContent); /* Re-write the trx register. */ RTXENAssert(); /* Re-start the sequence. */
#if defined (PA) MC13192_PA_CTRL = PA_OFF; //Turn off the PA when TX is complete #endif return; }
gu8RTxMode = IDLE_MODE; // 在这里,gu8RTxMode 被恢复成了 IDLE_MODE return; }
你发送数据进行调试的时候,看看程序有没有进到中断里呢?如果没有进入中断,那可能是MCU的中断设置有问题——比如是否允许了中断?中断向量表是否设置正确?(中断向量表在 vectortable.c 这个文件里) [此贴子已经被作者于2007-5-31 16:15:31编辑过]
[此贴子已经被作者于2007-5-31 16:18:27编辑过] |
让我在月光下许三个愿望:
-愿世界上再没有战争的硝烟,
-愿世界上的每一个家庭都幸福快乐,
-愿我天天都能看见大家甜甜的笑 ^_* |
|
|
|
|
|