打印

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

[复制链接]
2783|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BitFu|  楼主 | 2009-7-21 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define AT91B_MAIN_OSC        18432000    // Main Oscillator MAINCK
#define AT91B_MCK    ((18432000*73/14)/2) // Output PLL Clock
MCK出来的不是一个整数,定时器计数器也就不会那么准了,这可怎么整啊?
有没有好办法?

相关帖子

沙发
lelee007| | 2009-7-21 10:26 | 只看该作者

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

如果你要求精度超过晶振的精度范围,那是无法实现的

即使用汇编一条指令一条指令的算时间也无法实现

使用特权

评论回复
板凳
BitFu|  楼主 | 2009-7-21 10:45 | 只看该作者

不是那个意思

我是想用定时器精确定时一个整数
1ms或1秒
定时器用的是PLL输出的时钟,凑不了整数啊

使用特权

评论回复
地板
lelee007| | 2009-7-21 12:35 | 只看该作者

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

4舍5入会不?

使用特权

评论回复
5
BitFu|  楼主 | 2009-7-22 08:21 | 只看该作者

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

如果计算上还有误差那一天累积误差就太大了。
问题已解决,不使用USB了。
感谢楼上两位!

使用特权

评论回复
6
lpcfans| | 2009-7-22 10:16 | 只看该作者

呵呵。。。

使用特权

评论回复
7
古道热肠| | 2009-7-22 12:54 | 只看该作者

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

可以定时补偿.

使用特权

评论回复
8
BitFu|  楼主 | 2009-7-23 09:10 | 只看该作者

晶振的误差是可以接受的

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

使用特权

评论回复
9
BitFu|  楼主 | 2009-7-23 10:34 | 只看该作者

算了,就这样吧

不要再讨论了,没意思了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

194

主题

1053

帖子

3

粉丝