智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: abacrya、军
打印 上一主题 下一主题

时序有点乱,,,求解

[复制链接]

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
11#
 楼主| 发表于 2015-5-1 17:33:49 | 只看该作者
本帖最后由 abacrya、军 于 2015-5-1 17:36 编辑
、痕迹 发表于 2015-4-30 03:49
一个PIT,1Ms中断..3Ms直立控制..第1ms采集方向角速度,2ms采集加速度,3ms采集直立角速度滤波输出,,第10Ms采 ...

现在的问题就是。。。把程序改了之后。但是控制周期不变的情况下。。。出弯乱晃,,,减小P值直接过不了弯,,,而且采集CCD的图像发送到上位机,,会看到跳动,,曝光时间不同引起的跳动
void pit0_incident(void)
{


    time_2++;
    time_10++;
    time_20++;
    /**每2MS进行姿态控制**/
    if(time_2>2)
    {
      time_2=1;
      balance_pwm=balance_control(0);
    }
    L_PWM=balance_pwm;
    R_PWM=balance_pwm;
    switch(time_10)
    {
      /**1MS进行CCD复位,曝光时间=采集时间-复位时间**/  
      case 2:
        {
          ccd_restet(2);
          break;
        }

      /**2MS进行CCD复位,曝光时间=采集时间-复位时间**/  
      case 3:
        {
          ccd_restet(1);
          break;
        }
      /**7MS进行CCD采集**/
      case 8:
        {
          ccd_gather(ccd2_daat,2);
          //uart_putstr (UART0,ccd1_daat);
          break;
        }

      /**8MS进行CCD采集**/
      case 9:
        {
          ccd_gather(ccd1_daat,1);
          //uart_putstr (UART0,ccd1_daat);
          break;
        }
      /**9MS进行CCD数据处理**/
      case 10:
        {
          zz= ccd_data_dispose(ccd1_daat,80);
              //ccd_data_dispose(ccd2_daat,80);
          break;
        }
      /**10MS进行方向控制**/
      case 11:
        {
          time_10=1;
          angle_control(zz);
          //VisualScope_Output(zz,i/100,0,0);
          break;
        }
    }
    /*每20MS进行速度控制*/
    if(time_20>20)
    {
      time_20=1;
      speed_control(sudu);
      //speed_sign=1;
      if(beep_time)
      {
        beep_time++;
        if(beep_time>5)
        {
          beep_time=0;
          beep=1;
        }
      }
    }

    //进行速度控制后加上速度控制PWM值
    speed_pwm=speed_smoothness_out(time_20);
    L_PWM-=speed_pwm;
    R_PWM-=speed_pwm;
    //进行角度控制后加上角度控制PWM值
    angle_pwm=angle_smoothness_out(time_10);
    L_PWM+=angle_pwm;
    R_PWM-=angle_pwm;


    //VisualScope_Output(L_PWM,R_PWM,speed_pwm,angle_pwm);

    L_motor_pwm(L_PWM);
    R_motor_pwm(R_PWM);

/************************************************/   
    PIT_Flag_Clear(PIT0);           //清除中断标志位

}


回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
12#
 楼主| 发表于 2015-5-1 18:32:00 | 只看该作者
本帖最后由 abacrya、军 于 2015-5-1 18:49 编辑
、痕迹 发表于 2015-5-1 04:21
很多事.....但是直立速度方向和保护都在中断里面....ccd图像抖动就表示中断里面的时序溢出了

http://www.znczz.com/thread-120487-1-1.html   按照这个帖子里的意见。。。我在中断中加入了IO口反转,用示波器测的频率是500HZ(1ms中断),之后我在中断中加入2MS延时,频率变为了125HZ,,。。这表示定时器实是在程序执行完之后才开始计时,,就说我中断里的程序一定会执行完。。。
在20MS判断中加入时,测得频率为22.73HZ(则速度控制频率为45.46HZ,21.9ms)(还是比较正常的)。
在10MS判断中加入时,测得频率为45.45HZ(则角度控制频率为90.90HZ,11ms)(还是比较正常的)。


但是我的CCD图像还是抖动,,发送程序放在主函数中的。。
回复 支持 反对

使用道具 举报

8

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1115
QQ
威望
468
贡献
411
兑换币
282
注册时间
2014-12-14
在线时间
118 小时
毕业学校
河北大学工商学院
13#
发表于 2015-5-1 19:47:24 | 只看该作者
abacrya、军 发表于 2015-5-1 18:32
http://www.znczz.com/thread-120487-1-1.html   按照这个帖子里的意见。。。我在中断中加入了IO口反转, ...

你的采集中断是不是处理的费时间了,可以再压缩一下,采集1.2都放在一个里处理也可以放在一个里面,时间不会超的,尽量合并处理周期,试一下
回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
14#
 楼主| 发表于 2015-5-1 20:23:43 | 只看该作者
飞思卡尔.呆萌 发表于 2015-5-1 19:47
你的采集中断是不是处理的费时间了,可以再压缩一下,采集1.2都放在一个里处理也可以放在一个里面,时间 ...

嗯嗯,,我的采集需要645us,,,直立控制需要560us,为了能让中断里面的运行时间少于1ms,所以我分开采集,这样改变后,ccd图像跳动好转了,但是转弯控制有了点问题,在ccd前瞻不变,控制周期不变的情况下,相同的控制参数,效果完全不一样,而且速度控制也是
回复 支持 反对

使用道具 举报

8

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1115
QQ
威望
468
贡献
411
兑换币
282
注册时间
2014-12-14
在线时间
118 小时
毕业学校
河北大学工商学院
15#
发表于 2015-5-1 21:07:04 | 只看该作者
abacrya、军 发表于 2015-5-1 20:23
嗯嗯,,我的采集需要645us,,,直立控制需要560us,为了能让中断里面的运行时间少于1ms,所以我分开采集, ...

试着给控制输出做一下平滑处理,将控制量分成多次累加
回复 支持 反对

使用道具 举报

5

主题

348

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4680

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

威望
2065
贡献
1355
兑换币
1329
注册时间
2014-3-5
在线时间
630 小时
毕业学校
重庆大学
16#
发表于 2015-5-1 22:18:24 | 只看该作者
abacrya、军 发表于 2015-5-1 18:32
http://www.znczz.com/thread-120487-1-1.html   按照这个帖子里的意见。。。我在中断中加入了IO口反转, ...

ccd图像抖动..把你的ccd曝光和采集周期改成10ms的整数倍...不然日光灯工频50Hz会让ccd抖动
回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
17#
 楼主| 发表于 2015-5-2 06:36:02 | 只看该作者
飞思卡尔.呆萌 发表于 2015-5-1 21:07
试着给控制输出做一下平滑处理,将控制量分成多次累加

是的,,这个我之前就在使用,,,速度分为20次累加,,角度分为10次,,,我在吧以前的和现在的作对比,希望能找到问题所在,,
回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
18#
 楼主| 发表于 2015-5-2 06:39:43 | 只看该作者
、痕迹 发表于 2015-5-1 22:18
ccd图像抖动..把你的ccd曝光和采集周期改成10ms的整数倍...不然日光灯工频50Hz会让ccd抖动

嗯嗯,,好,那就固定10ms,然后调放大倍数,,,对于比赛时的灯光,好像有余辉效应,不会出现日光灯这种问题,,,
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
威望
112
贡献
54
兑换币
61
注册时间
2015-4-20
在线时间
20 小时
毕业学校
anhuiunivercity
19#
发表于 2015-5-2 11:54:33 | 只看该作者
楼主,你有没有测过ccd_gather(ccd2_daat,2);这个函数执行需要多长时间?也就是ccd  AD转换需要多长时间?我测量的是9MS,所以我采集函数必须被打断
回复 支持 反对

使用道具 举报

38

主题

446

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6454
威望
4774
贡献
644
兑换币
1264
注册时间
2014-3-19
在线时间
518 小时
20#
 楼主| 发表于 2015-5-2 12:10:23 | 只看该作者
up_and_up 发表于 2015-5-2 11:54
楼主,你有没有测过ccd_gather(ccd2_daat,2);这个函数执行需要多长时间?也就是ccd  AD转换需要多长时间? ...

你这个太长了把,,我的才645us
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 21:00 , Processed in 0.049523 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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