信号源发了16个脉冲,每个脉冲高电平是2ms左右。
问题现象:
程序用的是SerialApp例程进行修改。CC2530使用P2.0外部中断,在HAL_KEY中的halProcessKeyInterrupt()中进行相关信息的打印,发现只接收了8个脉冲。
机制说明:
在P2.0上升沿启动TIM4,下降沿停止TIM4,打印出脉冲时长,使用8分频,时长和实际是差不多的。就是个数少了一半。
Pulse(1)=30
Pulse(2)=28
Pulse(3)=28
Pulse(4)=31
Pulse(5)=28
Pulse(6)=28
Pulse(7)=28
Pulse(8)=29
VV:
先别用定时器计时,先看下16个脉冲,进中断的次数对不对?
Winter Two:
回复 VV:
VV你好,在2.5.1协议栈上验证进中断次数还是只有8次。
今天在HA的heat_cool_unit上验证,未使用定时器功能,屏蔽按键去抖动、KEY POLL等处理,仅在halProcessKeyInterrupt捕捉中断次数,发现也是只有8个。
我将信号源的脉冲电平扩大一倍,高电平大概4ms左右,即可捕捉到16个。(调试发现若高电平为3ms多,可捕捉到10余个中断,数量有时多点,有时少一点)
如下图
我觉得是否有可能是低电平的持续时间过短,CC2530来不及判断出上升沿。原来的低电平大概是持续500多us,这种情况下有时进不了上升沿中断;扩大后的信号源低电平时持续了1ms左右,这种情况就能稳定进入上升沿中断。
Winter Two:
回复 VV:
另外我打算尝试下定时器捕获。
想请教下,CC2530官方的代码目前是不是不支持定时器捕获功能?
“NOTE: Only Output Compare Mode is supported. There is no provision to support Input Capture Mode.“
如果现在支持的话是否有例程提供下,谢谢啦。
VV:
回复 Winter Two:
http://e2e.ti.com/support/wireless_connectivity/f/158/p/187470/675542.aspx#675542
CC2530本身支持这个功能,但是官方没有这样的例程。
你可以参考上面的链接。
谢谢!
Winter Two:
回复 VV:
VV大神,谢谢你的回复。
我尝试了那样的捕获功能,分别在P2.0和P1.0都做了尝试,捕捉几百us的脉冲依旧会有个数丢失。如果脉冲时长扩大至几ms就不会丢失了。
截止到目前,外部中断和定时器捕获所产生的效果都一样的。
能否麻烦你们也做下测试,看看CC2530捕获几百us的脉冲是否会有部分脉冲个数丢失。