关于cc2530协议栈3.0的资源问题。一个驱动裸机调试OK,但是加到协议栈出问题了。具体描述在下面。
一个自发电的按键触发一个无线发射芯片会送一次码值,与之配对有一个接受芯片,会把收到的载波解调发给2530,连在P2.0口。其实就和红外遥控是一样的。
然后我用的T4的输入捕获(在P2.0口的),裸机调试,每次都可以收到可以控制一个继电器的状态翻转。但是当我yizhi到协议栈的时候,T4捕获解码就灵敏了。一开始我猜想可能是其他中断打断了T4,所以我把T4所在中断组的优先级给到最高了(IP0 |=(1<<4);IP1 |=(1<<);),并且在每次进入T4捕获关了EA,退出之前再打开EA。测试后还是不灵敏。裸机OK,到了协议栈不行,那肯定是解码T4中断的时候CPU资源被占用导致的。想请教下,在协议栈里还有那些情况会造成影响的。
先感谢各位大神和TI工作人员,望解答
在协议栈内P2_0已经被占用了,您需要将按键功能关闭
/* Joystick Center Press */
#define PUSH2_BV BV(0)
#define PUSH2_SBIT P2_0
#define PUSH2_POLARITY ACTIVE_HIGH
P2.0我知道,,已经被我关了
/* Set to TRUE enable KEY usage, FALSE disable it */
#ifndef HAL_KEY
#define HAL_KEY FALSE
#endif
解码出来的波形看了下,总是有的捕获时间被延后。那也就是进入捕获被推迟了,导致时间不对。还有其他情况会出现CPU资源被占用么?
我的载波脉宽是比较短的,最短的 “0” 只有20US,但是这应该也没什么问题啊,主时钟32M,根本没什么问题。
您好,我想我可能查到问题了,希望您确认下。首先在任务轮询的时候有关EA的操作,当我把那些关EA操作屏蔽以后,解码就正常了。那么,这样看来,是不是刚好在关EA的时候,捕获中断发生,就造成了捕获丢失。