智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3238|回复: 7
打印 上一主题 下一主题

定时中断中的AD采样

[复制链接]

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
跳转到指定楼层
1#
发表于 2012-3-20 07:37:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个定时中断函数,将AD采样写在定时中断中,结果不能得到正确的AD值,可是,单独利用AD中断,在主程序中读取数值就行,这是为什么啊?定时中断为5ms
#pragma CODE_SEG NON_BANKED
///////////////////////////////////////////////////
interrupt 66 PIT0_Interrupt(void)
{
   DisableInterrupts;
   //SpeedControlOutput();
   //GetMotorPulse();
   sum++;
   for(count=0;count<20;count++)
   {
      while(!ATD0STAT2_CCF0);
      g_AccValue+=ATD0DR0;
      while(!ATD0STAT2_CCF1);
      g_GyoValue+=ATD0DR1;
   }
      AD_value=g_AccValue/20;
      AD_enc=g_GyoValue/20;
      PORTB=PORTB+1;
      AngleCalculate();
      //AngleControl();   
      //MotorOutput();
        OutData[0]=g_fAccAngle;
        OutData[1]=g_fGyoAngleSpeed;
        OutData[2]=g_fCarAngle;
        OutData[3]=g_fCarspeed;
        OutPut_Data();
        //SpeedControl();
        EnableInterrupts;
}
#pragma     CODE_SEG DEFAULT

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
2#
发表于 2012-3-20 09:27:21 | 只看该作者
楼主建议你不要把 OutData[0]=g_fAccAngle;
        OutData[1]=g_fGyoAngleSpeed;
        OutData[2]=g_fCarAngle;
        OutData[3]=g_fCarspeed;
        OutPut_Data();
放到中断里面,因为这个执行时间挺长的!!!
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
3#
发表于 2012-3-20 10:00:20 | 只看该作者
中断函数里干那么多事情……
回复 支持 反对

使用道具 举报

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
4#
 楼主| 发表于 2012-3-20 18:51:42 | 只看该作者
wo520 发表于 2012-3-20 09:27
楼主建议你不要把 OutData[0]=g_fAccAngle;
        OutData[1]=g_fGyoAngleSpeed;
        OutData[2]=g ...

哦 谢谢!经常在论坛里看到你,加个QQ好吗?1017547234
回复 支持 反对

使用道具 举报

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
5#
 楼主| 发表于 2012-3-20 18:52:05 | 只看该作者
野火 发表于 2012-3-20 10:00
中断函数里干那么多事情……

主要是想看一下数据
回复 支持 反对

使用道具 举报

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
6#
 楼主| 发表于 2012-3-20 20:55:02 | 只看该作者
我把那些去掉了,可是取回的AD数据震荡的厉害,怎么回事?可是用其他方法都已经能站起来了
回复 支持 反对

使用道具 举报

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
7#
 楼主| 发表于 2012-3-20 21:02:11 | 只看该作者
图像如下所示。可是传感器我已经调好了,用其他方法都已经站起来了

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
8#
发表于 2012-3-21 09:43:13 | 只看该作者
linping9656 发表于 2012-3-20 20:55
我把那些去掉了,可是取回的AD数据震荡的厉害,怎么回事?可是用其他方法都已经能站起来了

已经加你QQ了!!你试试把采样的那个地方做成一个函数,然后再在中断里面调用这个函数!!看行不行,如果还不行的话,就检查你的AD初始化!!
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 04:07 , Processed in 0.047346 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表