打印

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

[复制链接]
3019|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?

使用特权

评论回复
5
yyyy45|  楼主 | 2013-3-28 13:18 | 只看该作者
定时36秒   现在试产了100个,延时很不一致,最大相差8秒多

使用特权

评论回复
6
baoshi_libo| | 2013-3-28 15:59 | 只看该作者
12F508 12F629一直在用,是有误差,但远没有这么大
做的不好的第三方编程器会导致这问题
修改了内部振荡器校准字

使用特权

评论回复
7
yewuyi| | 2013-3-28 16:55 | 只看该作者
可能是烧写的时候把内部的校准字擦除掉了吧。

否则不可能的,校准后的RC振荡精度在25度的时候可达到1%,全温度段、全工作电压电压内都保证在5%以内,实际只在2%~3%,也就是说,100秒也就差过1~3秒,最多5秒

使用特权

评论回复
8
youss| | 2013-3-28 20:12 | 只看该作者
在软件中有将校准值载入到OSCCAL 寄存器中吗?

12f629.JPG (56.19 KB )

12f629.JPG

使用特权

评论回复
9
yyyy45|  楼主 | 2013-3-29 15:16 | 只看该作者
本帖最后由 yyyy45 于 2013-4-17 09:47 编辑

:)

使用特权

评论回复
10
yewuyi| | 2013-3-29 16:41 | 只看该作者
这样的程序如果能如你所愿的正确工作,那就真是奇怪了。

另外,请不要在BBS里面重复发贴。

使用特权

评论回复
11
diweo| | 2013-3-30 22:22 | 只看该作者
本帖最后由 diweo 于 2013-3-30 22:25 编辑

在ISR里你delay()?

使用特权

评论回复
12
yyyy45|  楼主 | 2013-3-30 23:06 | 只看该作者
在中断里不能用delay()吗?为什么?

使用特权

评论回复
13
diweo| | 2013-3-31 09:59 | 只看该作者
中断程序应该短小精悍,仅处理不得不处理的紧急事件。也尽量不要调用其它函数,因为会增加额外的系统开销。

使用特权

评论回复
14
Ryanhsiung| | 2013-3-31 10:54 | 只看该作者
ISR 本身就不准,你的delay函数也不准哦。再你的ISR中写入delay 增加误差了

使用特权

评论回复
15
tianyazhix| | 2013-3-31 10:54 | 只看该作者
中断,程序怎可以进行delay(),

使用特权

评论回复
16
M_Turly| | 2013-4-1 12:58 | 只看该作者
这个问题去年我还遇到过。。还是功夫没到家

使用特权

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

本版积分规则

45

主题

335

帖子

0

粉丝