本人使用三星2440平台,wince5.0
使用中发现硬件定时器采集不准确,1秒钟采集256次,会出现次数少了,然后又会突然多了的情况。
无论是采用内部时钟还是外部时钟,(外部时钟情况好像好一点),都是不准。
我的操作是用硬件定时器计时,计时到0,产生中断一次,如此反复。
请问大家有没有发现这个问题?或者有什么好的解决办法,谢谢!
这个定时器中断的线程优先级是多少?是否因为你的优先级太低导致这样的问题,建议把优先级设高一些试试,且中断的处理函数尽量的短,不要占用过多的时间。
优先级没设置,发现设置优先级后,其他线程都要跑不动了。很卡
如果是这样估计是因为设优先级太高后会频繁的执行你的定时器中断,导致其它的线程跑不动,而当你不设置优先级的时候其它线程能正常跑就说明你的定时器中断不能得到及时的处理,每秒产生的次数偏差也就正常了。
定时器中断线程是否执行时间太长了?
如果采用系统定时器一般定时都是不会那么准确的,一般都需要使用独立的定时器,之后在驱动里面做。定时器中断之后立刻处理
现在还有个很奇怪的问题,我采用外部晶振32.768KHZ的,是有源晶振,很稳定。
然后我用了timer2
每秒采集256次,
则TCNTB2 = 32768/256
TCMPB2 = 0
奇怪的是采集出来只有190个点,这个是为什么呢?
问题找到,解决,上面提到的其实190个点是我发生器的问题,才误认为少点了。定时器还是很准的。
谢谢上面两位,结贴!