注册 登录
查看: 658|回复: 20

中断控制电机后,摄像头图像抖动厉害

[复制链接]
发表于 2014-12-8 17:33:29 | 显示全部楼层 |阅读模式
昨晚用FX调闭环,把FTM3模块加上后,用FTM1和FTM2读取脉冲计数,中断5ms控制速度,优先级低于PTA和DMA中断,然后发现摄像头图像抖动,后试了各种方法(降低帧数,增大FX频率,在场中断和PCLK都接个下拉150欧电阻,更换摄像头(鹰眼))都不行,我也心力憔悴了。但是我把控制电机中断时间变长之后抖动的频率会降低,从优先级考虑是不会影响摄像头采集的,不知道怎么解决///
来自PC客户端 来自PC客户端
回复

使用道具 举报

发表于 2014-12-8 19:08:23 | 显示全部楼层
应该是优先级的问题干扰,调一下优先级看看
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 19:10:23 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 19:08
应该是优先级的问题干扰,调一下优先级看看

    /************************ 配置 K60 的优先级  ***********************/
    //K60 的默认优先级 都为 0
    //参考帖子:急求中断嵌套的例程 - 智能车讨论区 - 山外初学123论坛
    //          http://www.vcan123.com/forum.php?mod=viewthread&tid=499&page=1#pid3270
    NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
    NVIC_SetPriority(PORTA_IRQn,0);         //配置优先级
    NVIC_SetPriority(PORTE_IRQn,1);         //配置优先级
    NVIC_SetPriority(DMA0_IRQn,2);          //配置优先级
    NVIC_SetPriority(PIT0_IRQn,3);          //配置优先级

主函数里的~电机控制在PIT0里
回复 支持 反对

使用道具 举报

发表于 2014-12-8 19:11:48 | 显示全部楼层
wijop 发表于 2014-12-8 19:10
/************************ 配置 K60 的优先级  ***********************/
    //K60 的默认优先级  ...

把优先级分组改成0看看
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 19:16:05 | 显示全部楼层
和4的时候一样,图像左右抖,平均几秒钟一次
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 22:31:10 | 显示全部楼层
谁来救救我啊
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-8 22:43:20 | 显示全部楼层

定时中断里,试试排除法,看看哪部分代码影响比较大。

有可能是 抢总线了导致采集数据异常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-9 00:11:17 来自手机 | 显示全部楼层
仰逸致 发表于 2014-12-8 22:43
定时中断里,试试排除法,看看哪部分代码影响比较大。

有可能是 抢总线了导致采集数据异常

嗯~是电机PID控制部分影响最大,不过怎样才能避免抢总线?我看论坛里帖子关于上届摄像头平衡车,如果图像采集中断的优先级最高~2.5ms的直立控制中断都不会给图像采集带来影响~我感觉应该有问题~现在只能能排出外部干扰…
回复 支持 反对

使用道具 举报

发表于 2014-12-9 00:33:03 | 显示全部楼层
wijop 发表于 2014-12-9 00:11
嗯~是电机PID控制部分影响最大,不过怎样才能避免抢总线?我看论坛里帖子关于上届摄像头平衡车,如果图 ...

慢慢注释电机驱动的那部分代码,从而判断是哪个代码影响到的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-9 21:41:01 | 显示全部楼层
仰逸致 发表于 1418056383
慢慢注释电机驱动的那部分代码,从而判断是哪个代码影响到的
代码超过两三行就开始抖了,跟执行代码类型无关,与数量有关。
今天在定时中断里写了一个延时程序,结果发现摄像头图像一卡一卡的,说明中断优先级有问题,抢占优先级没有作用啊详细看了帖子   
急求中断嵌套的例程
http://www.vcan123.com/forum.php?mod=viewthread&tid=499&fromuid=5510
(出处: 山外论坛)

按照上面的讲解,应该是没问题的,现在真不知道怎么办了
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-11 23:49:28 | 显示全部楼层
我错了,,今天又测试了一下,,优先级没有问题,,程序也没有问题,,把debug模式换成release模式就OK了
回复 支持 反对

使用道具 举报

发表于 2014-12-12 00:32:26 | 显示全部楼层
wijop 发表于 2014-12-11 23:49
我错了,,今天又测试了一下,,优先级没有问题,,程序也没有问题,,把debug模式换成release模式就OK了

那肯定代码有部分执行效率不高,或者干扰导致的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-12 01:34:33 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-12 00:32
那肯定代码有部分执行效率不高,或者干扰导致的

谢谢山外哥,,我再把代码优化一下~~再找找
回复 支持 反对

使用道具 举报

发表于 2014-12-12 01:53:22 | 显示全部楼层
wijop 发表于 2014-12-12 01:34
谢谢山外哥,,我再把代码优化一下~~再找找

先试试把debug模式里的宏定义DEBUG删掉看看。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-12 02:19:57 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-12 01:53
先试试把debug模式里的宏定义DEBUG删掉看看。

只找到了预处理   #ifdef DEBUG   宏定义在那个文件里?(愚笨,,,没找到
回复 支持 反对

使用道具 举报

发表于 2014-12-12 10:18:59 | 显示全部楼层
wijop 发表于 2014-12-12 02:19
只找到了预处理   #ifdef DEBUG   宏定义在那个文件里?(愚笨,,,没找到)

在工程选项里配置,就是配置头文件所在路径的那地方。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-12 16:11:02 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-12 10:18
在工程选项里配置,就是配置头文件所在路径的那地方。

刚刚试了几次,不行,,,这样还是抖动
回复 支持 反对

使用道具 举报

发表于 2014-12-12 16:12:45 | 显示全部楼层
wijop 发表于 1418371862
刚刚试了几次,不行,,,这样还是抖动
不清楚是哪部分的代码干扰到了,这个估计有的难调试。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-12 16:19:09 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-12 16:12
不清楚是哪部分的代码干扰到了,这个估计有的难调试。

总之麻烦山外哥了,,,自己边做边找吧,至少release可以用
回复 支持 反对

使用道具 举报

发表于 2014-12-12 16:55:43 | 显示全部楼层
wijop 发表于 1418372349
总之麻烦山外哥了,,,自己边做边找吧,至少release可以用
如果时间不急,最好重新移植,定位到错误的地方。不然工程量大了后,就很难发现问题。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-12 19:55:36 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-12 16:55
如果时间不急,最好重新移植,定位到错误的地方。不然工程量大了后,就很难发现问题。

好的,我花时间找找~  谢谢山外哥了
回复 支持 反对

使用道具 举报

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

本版积分规则

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