AT91SAM7S64如何产生一个精确的定时中断

[复制链接]
4288|8
 楼主| BitFu 发表于 2009-7-21 10:06 | 显示全部楼层 |阅读模式
#define&nbsp;AT91B_MAIN_OSC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18432000&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Main&nbsp;Oscillator&nbsp;MAINCK<br />#define&nbsp;AT91B_MCK&nbsp;&nbsp;&nbsp;&nbsp;((18432000*73/14)/2)&nbsp;//&nbsp;Output&nbsp;PLL&nbsp;Clock<br />MCK出来的不是一个整数,定时器计数器也就不会那么准了,这可怎么整啊?<br />有没有好办法?<br />
lelee007 发表于 2009-7-21 10:26 | 显示全部楼层

定时精度是以晶振频率为单位的

如果你要求精度超过晶振的精度范围,那是无法实现的<br /><br />即使用汇编一条指令一条指令的算时间也无法实现
 楼主| BitFu 发表于 2009-7-21 10:45 | 显示全部楼层

不是那个意思

我是想用定时器精确定时一个整数<br />1ms或1秒<br />定时器用的是PLL输出的时钟,凑不了整数啊
lelee007 发表于 2009-7-21 12:35 | 显示全部楼层

晕了,谁规定一定要凑整数了

4舍5入会不?
 楼主| BitFu 发表于 2009-7-22 08:21 | 显示全部楼层

哈哈,四舍五入就不叫精确了

如果计算上还有误差那一天累积误差就太大了。<br />问题已解决,不使用USB了。<br />感谢楼上两位!
lpcfans 发表于 2009-7-22 10:16 | 显示全部楼层

呵呵。。。

  
古道热肠 发表于 2009-7-22 12:54 | 显示全部楼层

哈哈,原来是担心累积误差呀

可以定时补偿.
 楼主| BitFu 发表于 2009-7-23 09:10 | 显示全部楼层

晶振的误差是可以接受的

我这个东西要求24小时按360HZ频率采样,我尽可能的减少误差,至少在计算上不允许有误差,硬件误差是不可避免的,也是可以接受的。<br />因为我要使用SAM-BA所以晶振必须是18.432000MHz<br />而在这个晶振下使用USB,再把MCK设置成48M(大约)后无法产生没有计算误差的360Hz时钟。<br />现在我的办法是不使用USB了,这样MCK可以是其它值,就可以用定时器产生360Hz的中断了。
 楼主| BitFu 发表于 2009-7-23 10:34 | 显示全部楼层

算了,就这样吧

不要再讨论了,没意思了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

195

主题

1058

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部