63

帖子

0

TA的资源

一粒金砂(初级)

21
 
引用 17 楼 cstt60777 的回复:
这个问题,典型学生问题。

因为现在基本都是单脉冲,单周期的。

而且你想要高精度,换晶振


我不当学生很多年了,,这个问题也许比较简单吧--但在限定条件下,您有好的解决方案吗?
我们涉猎的东西比较杂,用到的乱七八糟的东西也多,也许在这方面是比较幼稚些,但是其他的方面未必都如您所说的那么菜。。。。。

回复

74

帖子

0

TA的资源

一粒金砂(初级)

22
 
这种情况你就不要再去找什么正好是1S的解决方法了,肯定要进行误差修正的处理了,那有非常完美绝对没有误差的事情呀。就算个人电脑中时间处理也是需要修正的呀。
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

23
 
用定时方式2,自动重装初值,这样子可以减少重新赋初值的累积时间差,可以取0.5ms中断一次,TH0=59H,TL0=59H,累计中断2000次后就是1S了不知道这样子行不行,想要比较精确的定时的话用方式0和方式1是肯定不好的,每次都要重新赋初值,这就造成了累积误差。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

24
 
谢谢楼上两位。。。。。。
再等等看,,还有其他的建议吗?  若没有的话,立马结贴!


//========我是华丽的分隔符,以下为灌水内容,嘎嘎~~~  ============

::.--.-.::
:( (    ):::::  东边日出西边雨
(_,  \ ) ,_)::  道是无晴却有情       |
:::-'--`--:::::::: ~~|     ,       \ _ /
::::::::::::::::::: ,|`-._/|   -==  (_)  ==-
::::::::^^::::::::.' |   /||\      /   \
::::::^^::::::::.'   | ./ ||`\       |
:::::::::::::::/ `-. |/._ ||  \
::::::::::::::|      ||   ||   \
~~=~_~^~ =~ \~~~~~~~'~~~~'~~~~/~~`` ~=~^~
~^^~~-=~^~ ^ `--------------'~^~=~^~_~^=~^~
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

25
 
中断响应也是有代价的

除非,系统只有一个定时器中断

而且严格计算时间

外部温度恒定,等

所有条件都在理想状态下

否则,误差,无处不在
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

26
 
顶一下,,顺便 给自己做个 广告。。。

http://topic.eeworld.net/u/20091021/13/3ec0e7c3-7994-4eff-abea-7a58cabf12c4.html

这个帖子是关于 PC104的采集卡通过 转ISA的转换卡 在研华工控机上采集不正确 的,,大家感兴趣的去给我出出主意,,谢谢~~~
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

27
 
lz请问最小刻度是3MM的尺子怎么精确测量1MM长度的物体??

力所不及啊.

先把初中学过的误差搞清楚一下
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

28
 
引用 26 楼 gelu1040 的回复:
lz请问最小刻度是3MM的尺子怎么精确测量1MM长度的物体??

力所不及啊.

先把初中学过的误差搞清楚一下



是啊 ,问题就是这样啊----3MM的尺子怎么精确测量1M <多写了个M>长度的物体 ??

那看来是无法实现了。。。那就无限接近吧,楼上有个兄弟“3×3×11111=99999us”这个看来还是可行的。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

29
 
要这么精确么?非得要这样,就换一个了时钟了..
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(中级)

30
 
引用 28 楼 yzl140520 的回复:
要这么精确么?非得要这样,就换一个了时钟了..


就算是换时钟,也只是计算上的正确

实际上,有的是可能不正确
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

31
 
晶振频率也太低了吧。拿个示波器,边调边量,直到满意位置。我平时就这么干的。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

32
 
一帮帮都是单片机高手啊 觉得他说的有点切入主题 定时方式2,自动重装初值,这样子可以减少重新赋初值的累积时间差,可以取0.5ms中断一次,TH0=59H,TL0=59H,累计中断2000次后就是1S了不知道这样子行不行,想要比较精确的定时的话用方式0和方式1是肯定不好的,每次都要重新赋初值,这就造成了累积误差。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

33
 
引用 31 楼 linsheng_111 的回复:
一帮帮都是单片机高手啊 觉得他说的有点切入主题 定时方式2,自动重装初值,这样子可以减少重新赋初值的累积时间差,可以取0.5ms中断一次,TH0=59H,TL0=59H,累计中断2000次后就是1S了不知道这样子行不行,想要比较精确的定时的话用方式0和方式1是肯定不好的,每次都要重新赋初值,这就造成了累积误差。


人家LZ要的是丝毫不差

没有误差!!!

嘿嘿
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

34
 
。。。学习来得。。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

35
 
哪能做到一点也不差呀,一个周期3us,根本没法实现1s的准确定时,只是大概的值,
并且(片机的定时器在你写过一点程序后,也就不是很准了),何必要算那么准呢,钻牛角尖,咳
也没多大用处
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

36
 
就是12M的你也不一定能够保证你能很准确的定时1S,小样
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

37
 
看精确到多少。
1S这么长肯定是用中断了。
一般误差也是累积的固定误差,可以动态标定。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

38
 
给你弄个通过校准提高精度的方法吧


  1. #define jingdu 1        //校准精度控制
  2. int32 timeconst;
  3. void delays(int32 t)
  4. {
  5.         int32 c;
  6.     while(t--)
  7.         {
  8.                 c=timeconst;
  9.                 while(c--);
  10.         }
  11. }

  12. void xiaozhun()
  13. {
  14.         int32  ext1;        //外部精确时钟单位数据1(如0.1us)
  15.         const int32 ext=0x********;//外部时钟秒钟ext1-ext0的个数;
  16.     timeconst=readtc();        //初始化时间常数(外部存储器)
  17.         while(1)
  18.         {
  19.                 start_ext();        //外部校准时钟开始计时
  20.                 delays(1);
  21.                 end_ext();        //停止外部校准时钟
  22.                 ext1=readext(); //读取外部时钟走过的时间
  23.                 if(ext1<=ext+jingdu&&ext1>=ext-jingdu)        //符合精度要求
  24.                         break;
  25.                 if(ext1>ext)        //定时常数调节,自己看着办,这里仅仅是肯定成功的比较费时间的方法
  26.                         jingdu++;
  27.                 else
  28.                         jingdu--;
  29.         }
  30.         writetc(timeconst);//将定时常数写入外部非易失存储器,
  31. }

复制代码


在和校准相同的外部环境条件和MCU配置条件下,误差=振荡器的随机误差(不是系统误差哦)+发送end_ext();        指令的时间(系统误差)。如果要消除系统误差,可以读取校准源之后减去花费时间。那么误差只有随机误差。
随机误差不可消除。
随机误差最多是误差一组指while(c--);指令所需的 clock,4M12分频率=3.3333us;
系统误差是一个从发送end_ext() 其实硬件设计好的话,只要一条汇编指令就OK,0.25us.
总误差 = 3.4us+0.25us=3.65us

前提条件:在校准温度,校准湿度,校准大气压下,MCU以校准时候的配置运行delays(1)的误差是3.65us
相对误差:0.000365%

够精确了吧.




优点:不依赖于系统频率,只是误差计算和频率相关
缺点:每个产品都要校准(你要高精度嘛,没办法,校准是唯一选择)
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

39
 
上面用的是软件延迟的方式,当然还有硬件定时的方式,不过其实不管什么方式,归根结底都是对脉冲的计数。也存在定时常数,确定定时常数是关键。

于是,问题转化为:经过多少脉冲(定时常数和它线性相关),时间走过1S。
不同频率的振荡器频率不同,所以脉冲个数不同。采用逼近的方法将定时定时常数(脉冲个数)调节到符合精度的范围。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

40
 
楼主未必也太较真了吧,一点误差都不允许是不可能的,况且了即使你使用12MHZ的晶振,也未必得出一点不差的1S定时,晶振的实际值和标称值之间还有误差存在呢...
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表