cc2540 1ms定周期获取
hi 各位:
我现在需要一个最小单位1ms的定周期。
我使用osal_start_timerEx设置。结果功耗约2.5mA。
后来我是用timer3 定时1mS中断获取定周期1ms,功耗约3.0mA。
想用系统时钟获取准确的1ms,发现无法获取如此精细的1ms。
我该如何获取准确的1ms定周期,而且对功耗影响不大的方法?
T_MAC,
timer 2 和 timer 3 为了 省功耗, 在PM2 或 3 的模式下是关闭的, 这个时候你用他们必然会提高功耗.
但从理论上讲, 用 timer 2 的周期去轮询时间, 或者你打开timer 3 或 4 自己再计时, 这是最靠谱的两个方法了. 目前据我所知也没有其他更好的办法.
另外还有一个sleep timer, 是以 32K 时钟来计时的, 在PM2 模式下 也是工作的. 我没有试过用这个timer 去做过定时, 但sleep timer 也用来在PM 2 模式下作为定时来计数, 用以在需要的情况下唤醒系统. 我没有尝试过用这个去计时, 目前也不知道是否可行, 你有时间的话可以尝试一下, 可以通过读取它的counter 寄存器的值, 判断时间间隔. 就是不清楚精准度会如何. 希望能有用.
hi yan:
谢谢你的回答,如果用timer3不仅会增加功耗,而且 由于经常进入PM2 导致timer3其实是不准确的。
顺便问下 timer3 有个捕获功能,不知道怎么去配置捕获功能?如果配置成捕获功能,那必须在捕获这段时间不允许进入Pm2.不然高速时钟会被停止,否则捕获也会不准确,功耗应该也会大大提高?
HI YAN:
问题解决了。
我不使用连续的定周期1ms,而是在1s里面 使用其中的几十ms来代替,功耗最大打到1.68mA,平均电流约0.7-0.8mA左右,勉强可以接受
不太明白你的1s 里面几十毫秒 代替是什么意思, 能解释一下吗?
不过很高兴看到你的问题解决了 : )
hi yan:
我这1ms功能不是实时打开,而是在1s里面使用其中的50ms左右。这样大大降低了功耗
什么是"1s 里面使用其中的50ms"?
就是1s里面只工作50ms其他时间进入PM2。
听上去很有意思
HI YAN:
USB Dongle抓出来的数据包,很多不懂得分析。请问有什么资料可以学习的么?