注册 登录
查看: 3111|回复: 37

[摄像头组] 关于鹰眼采集时间和直立时间协调的问题

[复制链接]
发表于 2014-2-18 15:12:44 | 显示全部楼层 |阅读模式
现在用KL26+鹰眼采集图像,帧数为112,算出采集一幅图像的时间为1000/112≈9ms。但是目前的直立需要每5ms就要进入一次直立程序,DMA采集的时候又要避免抢总线所以什么事情都不能做,达不到直立控制时间的标准呀。请问应该如何协调二者呢?求给个参考意见

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2014-2-18 15:34:38 | 显示全部楼层
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可以跟DMA并行处理。

换句话说,直立通过PIT来控制、摄像头通过DMA来采集,两者可以同时进行。
摄像头的场中断需要配置最高中断优先级(处理时间非常短,暂时打断直立控制是没什么影响),这样才可以及时触发DMA采集。
PIT定时器配置第二高中断优先级,进行直立控制。
DMA完成中断可以是最低优先级。
中断优先级配置,请参考如下帖子:Coertx-M4系列 中断嵌套的 说明:
http://www.vcan123.com/forum.php?mod=viewthread&tid=959

主函数按普通的处理方法,在主循环里:采集图像,图像处理,然后把处理结果存放在全局参数里。
定时执行自立控制:采集模块参数,然后自立控制,根据图像处理的全局参数来进行速度控制和方向控制。

主循环:图像采集与处理 ==写==》 全局参数  ==读==》自立控制的速度控制和方向控制



K60和KL26都是多主机并行架构,CPU和DMA就是主机,可以同时运行的。有可能内存读写上有冲突,但鹰眼是采集时间是非常短的,假如一帧是9ms,那么真正采集的数据连1ms也不到,大部分都是消隐区空闲时间。
即时是冲突了,那么单片机内部也自行协调冲突,DMA数据会延迟采集(鹰眼输出的PCLK比ov7620还低几倍,延时采集对鹰眼没影响),初学者不需要关注这些问题。


鹰眼的速度一般都可以跑 112帧每秒,一帧需要9ms的时间。
可以采集一帧,处理一帧,即摄像头控制周期为18ms。

下面的方法适合于高手提速用(因为容易出问题,初学者很容易浪费时间):
可以自行修改我们提供的场中断,配置为双缓冲区采集(通过标志位来判断),那么一边采集,一边处理,控制周期就可以在9ms内。



回复 支持 反对

使用道具 举报

发表于 2014-2-18 15:35:52 | 显示全部楼层
换句话说是 DMA 和 CPU 一起工作,抢总线的问题由KL26内部自行处理,不需要我们管
回复 支持 反对

使用道具 举报

发表于 2014-2-18 15:37:00 | 显示全部楼层
事实上,DMA采集一帧是9ms,实际上真正采集数据的仅仅是非常短的时间,很多时候都是消隐区等待时间。
回复 支持 反对

使用道具 举报

发表于 2014-2-18 17:50:11 来自手机 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:37
事实上,DMA采集一帧是9ms,实际上真正采集数据的仅仅是非常短的时间,很多时候都是消隐区等待时间。

怎么1帧就9毫秒,计算出来的呀,我用pit测我的pll150m,112帧的采集速度,连解压函数一起测,测出来是15.2毫秒
回复 支持 反对

使用道具 举报

发表于 2014-2-18 19:51:58 | 显示全部楼层
470895476 发表于 2014-2-18 17:50
怎么1帧就9毫秒,计算出来的呀,我用pit测我的pll150m,112帧的采集速度,连解压函数一起测,测出来是15.2 ...

用示波器测场中断的时间间隔,一帧就是1000/112 = 9ms
如果你加上解压函数,这样测的话,其实是采集一帧,处理一帧,测到的是接近2帧的时间,这个正常啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-18 20:24:50 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:35
换句话说是 DMA 和 CPU 一起工作,抢总线的问题由KL26内部自行处理,不需要我们管

山外大哥  不是说如果DMA期间做别的事情抢总线会影响摄像头的采集吗?  求教
回复 支持 反对

使用道具 举报

发表于 2014-2-18 20:37:33 | 显示全部楼层
lqy295 发表于 2014-2-18 20:24
山外大哥  不是说如果DMA期间做别的事情抢总线会影响摄像头的采集吗?  求教

是有可能影响图像质量的,尤其是ov7620。
因为鹰眼的输出PCLK比普通的OV7620频率还低几倍,实际上同时采集对鹰眼的图像影响不大,对ov7620大一些而已。
回复 支持 反对

使用道具 举报

发表于 2014-2-18 21:21:09 来自手机 | 显示全部楼层
隗英秀 发表于 2014-2-18 19:51
用示波器测场中断的时间间隔,一帧就是1000/112 = 9ms
如果你加上解压函数,这样测的话,其实是采集一帧 ...

一幅图像就是一帧吗,没搞懂,而且我测的时候发现不加解压函数和加了,测出来还是基本一样的时间
回复 支持 反对

使用道具 举报

发表于 2014-2-18 21:49:17 | 显示全部楼层
470895476 发表于 2014-2-18 21:21
一幅图像就是一帧吗,没搞懂,而且我测的时候发现不加解压函数和加了,测出来还是基本一样的时间

鹰眼一帧就是一副图像。
ov7620是一帧两场(奇偶场)一副图像
回复 支持 反对

使用道具 举报

发表于 2014-2-18 21:53:42 来自手机 | 显示全部楼层
隗英秀 发表于 2014-2-18 21:49
鹰眼一帧就是一副图像。
ov7620是一帧两场(奇偶场)一副图像

嗯。又学习了.
回复 支持 反对

使用道具 举报

发表于 2014-2-19 11:13:19 来自手机 | 显示全部楼层
隗英秀 发表于 2014-2-18 19:51
用示波器测场中断的时间间隔,一帧就是1000/112 = 9ms
如果你加上解压函数,这样测的话,其实是采集一帧 ...

我又测了,75帧的速度,用了20毫秒,我已经把其他所有函数都关掉了,只留采集函数,测出来就是这个时间,差距那么大啊,还有我用的是pit1测的,更奇怪的是我串口打印时间不一样,测出的时间不一样,500毫秒打印一次是20毫秒,10毫秒打印一次是16毫秒,5毫秒一次打印变成了25毫秒,到底怎么回事,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-19 23:32:15 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

谢谢山外哥!
回复 支持 反对

使用道具 举报

发表于 2014-3-23 21:13:12 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

我按照你说的设置好中断优先级以后  ,时序没加摄像头的时候好好地 ,后来一加摄像头全乱了,我处理采集图像什么也没干啊,用的是鹰眼
回复 支持 反对

使用道具 举报

发表于 2014-3-23 21:13:29 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

我按照你说的设置好中断优先级以后,时序没加摄像头的时候好好地 ,后来一加摄像头全乱了,我处理采集图像什么也没干啊,用的是鹰眼
回复 支持 反对

使用道具 举报

发表于 2014-3-23 21:16:47 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...


     NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
    NVIC_SetPriority(PORTA_IRQn,0);         //配置优先级
    NVIC_SetPriority(PIT0_IRQn,1);          //配置优先级
    NVIC_SetPriority(DMA0_IRQn,2);          //配置优先级
这个是我设置的  不对吗,程序是按照pti跑的,没加 camera_get_img();   时序是正确的,加上以后示波器测的时序不对啊,求解啊
回复 支持 反对

使用道具 举报

发表于 2014-3-23 21:17:44 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...


     NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
    NVIC_SetPriority(PORTA_IRQn,0);         //配置优先级
    NVIC_SetPriority(PIT0_IRQn,1
回复 支持 反对

使用道具 举报

发表于 2014-3-29 18:44:01 | 显示全部楼层
feodora 发表于 2014-3-23 21:17
NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
     ...

问题解决了吗?遇到了同样的问题
回复 支持 反对

使用道具 举报

发表于 2014-3-29 18:52:22 | 显示全部楼层
feodora 发表于 2014-3-23 21:16
NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
     ...

camera_get_img(); 这个是采集图像而已啊,按理应该不影响时序的啊
回复 支持 反对

使用道具 举报

发表于 2014-4-3 12:59:23 | 显示全部楼层
feodora 发表于 2014-3-23 21:13
我按照你说的设置好中断优先级以后,时序没加摄像头的时候好好地 ,后来一加摄像头全乱了,我处理采集图像 ...

请问一下你解决了么?能探讨一下么?qq278111457
回复 支持 反对

使用道具 举报

发表于 2014-4-18 14:46:09 | 显示全部楼层
fe5f13 发表于 2014-4-3 12:59
请问一下你解决了么?能探讨一下么?qq278111457

这个???
回复 支持 反对

使用道具 举报

发表于 2014-4-18 17:24:52 | 显示全部楼层
fe5f13 发表于 2014-4-3 12:59
请问一下你解决了么?能探讨一下么?qq278111457

请问一下你解决了么?我也是这个问题
回复 支持 反对

使用道具 举报

发表于 2014-4-20 13:00:11 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

我开始还在想鹰眼采集应该很快 但是为什么还要9MS之类 后来看到图像采集的里面好多等待,为什么不把这些等待时间去掉,全都是中断就可以为main里面省下很多时间了。 希望山外哥能在发个贴说明下最后那个双缓冲区采集的具体修改策略笑坏我的肚子了
回复 支持 反对

使用道具 举报

发表于 2014-4-20 13:37:05 | 显示全部楼层
ppdm 发表于 2014-4-20 13:00
我开始还在想鹰眼采集应该很快 但是为什么还要9MS之类 后来看到图像采集的里面好多等待,为什么不把这些等 ...

双缓冲区采集的具体修改策略,我们不做讲解。因为用这个策略本身需要比较高的要求,而且容易出现不稳定。
如果有能力,其实看名字就知道大致思路,然后再自己尝试来修改。
如果没能力,讲了,后面出现各种异常,反而更浪费时间。

采集里的等待不是不可去掉,而是去掉会容易出现不稳定。
回复 支持 反对

使用道具 举报

发表于 2014-4-30 11:37:09 | 显示全部楼层
这个问题很值得讨论,,
回复 支持 反对

使用道具 举报

发表于 2014-4-30 14:28:40 | 显示全部楼层
抢沙发~给哥们顶一个
又学习了一次,,
回复 支持 反对

使用道具 举报

发表于 2014-5-7 19:24:24 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

为什么采集一帧、处理一帧,摄像头的控制时间就是18MS?
回复 支持 反对

使用道具 举报

发表于 2014-5-7 19:34:04 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

http://www.vcan123.com/forum.php?mod=viewthread&tid=959
链接进不去,说用户组要升级,怎么办?
回复 支持 反对

使用道具 举报

发表于 2014-5-7 20:54:04 | 显示全部楼层
feodora 发表于 2014-3-23 21:16
NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
     ...

还应该把,电机编码器计数的定时中断加进去吧,
要不要再来配一个中断优先级?
回复 支持 反对

使用道具 举报

发表于 2014-5-7 20:54:30 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

还应该把,电机编码器计数的定时中断加进去吧,
要不要再来配一个中断优先级?
回复 支持 反对

使用道具 举报

发表于 2014-5-8 07:44:00 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

摄像头控制周期18ms,再加上提取中线之类的,很有可能超过了我的方向控制周期20ms,唉,回头改改
回复 支持 反对

使用道具 举报

发表于 2014-5-31 16:19:43 | 显示全部楼层
feodora 发表于 2014-3-23 21:16
NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
     ...

NVIC_SetPriorityGrouping(3);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
应该是3吧?
解决了吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-31 16:20:47 | 显示全部楼层
zglyr 发表于 2014-3-29 18:44
问题解决了吗?遇到了同样的问题

解决了吗?
貌似我也有这样的问题,求指教
回复 支持 反对

使用道具 举报

发表于 2014-6-17 11:49:27 | 显示全部楼层
feodora 发表于 2014-3-23 21:16
NVIC_SetPriorityGrouping(4);            //设置优先级分组,4bit 抢占优先级,没有亚优先级
     ...

同样的问题,,时序完全错了,求解。。
强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-7-14 11:54:25 | 显示全部楼层
草原上的星星 发表于 2014-5-8 07:44
摄像头控制周期18ms,再加上提取中线之类的,很有可能超过了我的方向控制周期20ms,唉,回头改改

你们内核频率,总线频率,flash频率配置的是多少?
回复 支持 反对

使用道具 举报

发表于 2014-7-14 11:58:16 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:34
DMA采集的时候可以进入中断来进行直立控制
直立控制 一般有 ADC采集、参数计算、电机控制,这些操作都是可 ...

测摄像头采集时间是不是仅仅在摄像头采集
camera_get_img();                           //摄像头获取图像
前加开始PIT计时,后加结束PIT计时,
就行了,,
回复 支持 反对

使用道具 举报

发表于 2014-12-1 11:43:44 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-20 13:37
双缓冲区采集的具体修改策略,我们不做讲解。因为用这个策略本身需要比较高的要求,而且容易出现不稳定。 ...

山哥,我改了采集的函数,就是不关场中断,再处理一下标志位为FINISH的情况,然后在DMA中断里面加个标志位用来判断一场采集完成,然后为什么只能采集一次,就感觉第一次取了数据,后面就再也没取了
回复 支持 反对

使用道具 举报

发表于 2016-9-4 09:16:27 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-18 15:35
换句话说是 DMA 和 CPU 一起工作,抢总线的问题由KL26内部自行处理,不需要我们管

那KL26怎么解决呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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