study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1761回复:14

PC104定时不准,偏慢大约10%,请问怎么回事?附代码

楼主#
更多 发布于:2003-06-05 11:36
计时偏慢10%,请问为什么?怎样解决?

累计100次中断为1秒,与 秒表对照慢了大约10%

void initialTimer(void)
{
setvect(TIMER_VECT, NewTimerISR);
outportb(0x43, 0x34);
/* Timer is set for 0xF000 * 813.8 ns = 50 ms */
outportb(0x40, 0x00);
outportb(0x40, 0xF0);
outportb(0x21, inportb(0x21) & 0xFE);
}

void interrupt NewTimerISR(void)
{
if(++TimerTick50mS >= 20) /* 1 Second = 50 mS * 20 */
{
TimerFlag = 1;
TimeSecCnt++;
TimerTick50mS = 0;

}
SendEOI; /* #define SendEOI outportb(0x20,0x20) */
}

void main(void)
{
initial...;

while(1)
{
if(TimerFlag )
{
TimerFlag =0;
printf(\"\\n%d\",TimeSecCnt);
}
}
}


[编辑 -  6/5/03 by  study51]

最新喜欢:

blue_windblue_w...
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-05 19:13
我们买的几台连时钟都不准,可能质量有问题,你用的是那个公司的?
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-05 20:11
桑达的,你的呢?

我觉得应该不时钟的问题,因为厂商不应该犯这样的错误
kiteliu
驱动牛犊
驱动牛犊
  • 注册日期2003-06-06
  • 最后登录2003-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-06 16:24
我用过研祥的104,都存在时钟不准,
我看过,都是类似DS12887一类的芯片,本身就精度不高
如果想高精度,就必须自己做时钟卡
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-06 23:48
我以前用的是digital logic公司的(是不是研祥啊?)就有这个问题,有几块时间差的离谱。
如果是ds12887就好了,datasheet上说误差是2s/月。我自己做的产品上误差不是很大。
现在我想有i-cop的试试
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-07 00:10
问个问题,pc104主板不是和ibm机兼容的嘛,在ibm机0x43不是分配给了pc喇叭吗?怎么还可以用来定时啊?我以前用的是系统的18.5s的中断。
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-07 09:26
我现在是在PC上面调试程序,结果同样不准。觉得应该是我自己的程序不对。大虾们帮我看看。 :(
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-07 21:40
碰到国类似的,解决方法是再引用一个计时精确的晶振。
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-07 21:47
碰到国类似的,解决方法是再引用一个计时精确的晶振。

你的意思是再自己做块卡?
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-07 22:49
那么我的程序没有问题?
另外能不能帮忙写一个实时时钟(IRQ8)的例程?我自己写的不能动作,而且不知道怎样设定时间间隔,是不是outport(0x41,0x00);outport(0x41,0xF0);?
study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-07 22:52
还有如何给别人分?上次有给分的选项,现在没有了
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-07 23:12
[quote]碰到国类似的,解决方法是再引用一个计时精确的晶振。

你的意思是再自己做块卡? [/quote]

就是切断原来的晶震连线,连接自己卡上的晶震。

我们是作成上下层的,一样大。(共做了无层)
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-07 23:30
还有如何给别人分?上次有给分的选项,现在没有了


只能给一次分。你给blue_wind了。
blue_wind
驱动中牛
驱动中牛
  • 注册日期2002-11-24
  • 最后登录2006-11-30
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-07 23:47
[quote][quote]碰到国类似的,解决方法是再引用一个计时精确的晶振。

你的意思是再自己做块卡? [/quote]

就是切断原来的晶震连线,连接自己卡上的晶震。

我们是作成上下层的,一样大。(共做了无层) [/quote]
这样做弄的不好,整块板子报废!而且你这样做可靠性是不是有问题啊。我觉得还做一块定时的卡,电路也很简单的,直接插在104总线上,不用时也可以拔掉。
好东西大家共享,没必要做从复的劳动! 冒着微软的炮火前进!前进!前进!进!
study51
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2005-09-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-08 00:08
有现成的中断资源,就用现成的好了。

而且,通常,即使板子很差,也不应该差到10%,所以自己以为程序有问题。

我加不了分,真遗憾
游客

返回顶部