为什么同一个程序烧到几个单片机中延时时间会不同

[复制链接]
3965|15
 楼主| yyyy45 发表于 2013-3-28 11:10 | 显示全部楼层 |阅读模式
为什么同一个程序烧到几个单片机中延时时间会不同?单片机是PIC12F629
tianyaddy 发表于 2013-3-28 11:19 | 显示全部楼层
不同型号单片机的自身震荡频率不一样,也就是机器周期不一样。。
 楼主| yyyy45 发表于 2013-3-28 11:28 | 显示全部楼层
是同一个型号的单片机啊    试了20多个,时间总是差几秒
yewuyi 发表于 2013-3-28 13:10 | 显示全部楼层
多长时间差几秒?

按照2楼说的自测频率精度是否和这一致u?
 楼主| yyyy45 发表于 2013-3-28 13:18 | 显示全部楼层
定时36秒   现在试产了100个,延时很不一致,最大相差8秒多
baoshi_libo 发表于 2013-3-28 15:59 | 显示全部楼层
12F508 12F629一直在用,是有误差,但远没有这么大
做的不好的第三方编程器会导致这问题
修改了内部振荡器校准字
yewuyi 发表于 2013-3-28 16:55 | 显示全部楼层
可能是烧写的时候把内部的校准字擦除掉了吧。

否则不可能的,校准后的RC振荡精度在25度的时候可达到1%,全温度段、全工作电压电压内都保证在5%以内,实际只在2%~3%,也就是说,100秒也就差过1~3秒,最多5秒
youss 发表于 2013-3-28 20:12 | 显示全部楼层
在软件中有将校准值载入到OSCCAL 寄存器中吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| yyyy45 发表于 2013-3-29 15:16 | 显示全部楼层
本帖最后由 yyyy45 于 2013-4-17 09:47 编辑

:)
yewuyi 发表于 2013-3-29 16:41 | 显示全部楼层
这样的程序如果能如你所愿的正确工作,那就真是奇怪了。

另外,请不要在BBS里面重复发贴。
diweo 发表于 2013-3-30 22:22 | 显示全部楼层
本帖最后由 diweo 于 2013-3-30 22:25 编辑

在ISR里你delay()?
 楼主| yyyy45 发表于 2013-3-30 23:06 | 显示全部楼层
在中断里不能用delay()吗?为什么?
diweo 发表于 2013-3-31 09:59 | 显示全部楼层
中断程序应该短小精悍,仅处理不得不处理的紧急事件。也尽量不要调用其它函数,因为会增加额外的系统开销。
Ryanhsiung 发表于 2013-3-31 10:54 | 显示全部楼层
ISR 本身就不准,你的delay函数也不准哦。再你的ISR中写入delay 增加误差了
tianyazhix 发表于 2013-3-31 10:54 | 显示全部楼层
中断,程序怎可以进行delay(),
M_Turly 发表于 2013-4-1 12:58 | 显示全部楼层
这个问题去年我还遇到过。。还是功夫没到家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

335

帖子

0

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