智能车制作

标题: 今年有木有用S12做摄像头的小伙伴啊,求讨论:怎样解决摄像头采集和直立控制的冲突 [打印本页]

作者: ccs5433    时间: 2014-2-17 22:46
标题: 今年有木有用S12做摄像头的小伙伴啊,求讨论:怎样解决摄像头采集和直立控制的冲突
我是这样做的,在摄像头采集期间关闭PIT,把直立程序放在死循环里,摄像头各行采集,在遇到不需要的行时直接跳出行中断,执行死循环里的直立程序...这样控制时序全被打乱了...小伙伴们是怎样解决这个问题的啊?
作者: 爱走来的那天    时间: 2014-2-17 22:46
O(∩_∩)O哈哈~,沙发是我的啦
爱走来的那天 于 2014-3-14 20:13 使用 抢沙发 抢夺本帖沙发
作者: Jyoun    时间: 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。
作者: 李新帅    时间: 2014-2-18 08:50
同样
作者: 戥家三少    时间: 2014-2-18 09:42
Jyoun 发表于 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。

你的意思是不是隔行采集,然后在隔开的行里处理直立??

作者: 机器人没名字    时间: 2014-2-18 09:47
实测不用关闭PIT中断,需要注意的是定时器计数器的值得一个保存或清零,不然就会乱的
作者: 姑娘放开那黄瓜    时间: 2014-2-18 10:21
学习
作者: ccs5433    时间: 2014-2-18 16:35
Jyoun 发表于 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。

定时器关掉后,在行中断里执行直立程序时,直立控制时间远大于63.6ms(行中断之间的时间差),控制结构都弄好了,结果用示波器一测时间,直立控制根本无法执行完...行中断用的PT1口,请问在执行直立控制时有没有办法屏蔽掉一个或者几个行中断?
作者: ccs5433    时间: 2014-2-18 16:37
李新帅 发表于 2014-2-18 08:50
同样

共勉...
作者: ccs5433    时间: 2014-2-18 16:39
戥家三少 发表于 2014-2-18 09:42
你的意思是不是隔行采集,然后在隔开的行里处理直立??

直立程序执行时间远大于行中断周期,会被打断

作者: ccs5433    时间: 2014-2-18 16:43
机器人没名字 发表于 2014-2-18 09:47
实测不用关闭PIT中断,需要注意的是定时器计数器的值得一个保存或清零,不然就会乱的

那你的意思是PIT一直开着,然后摄像头中断来了之后,PIT优先级低,会被打断,执行完摄像头中断里的程序后,再继续执行PIT对吗?那这样PIT岂不是被打断N次,控制时序也被打乱了...具体怎样解决?
作者: 机器人没名字    时间: 2014-2-18 17:13
ccs5433 发表于 2014-2-18 16:43
那你的意思是PIT一直开着,然后摄像头中断来了之后,PIT优先级低,会被打断,执行完摄像头中断里的程序后 ...

PIT定时器5ms一个周期,场中断16.67ms

作者: Jyoun    时间: 2014-2-18 17:44
ccs5433 发表于 2014-2-18 16:35
定时器关掉后,在行中断里执行直立程序时,直立控制时间远大于63.6ms(行中断之间的时间差),控制结构都 ...

63.6是us,中断内是处理不过来的,可以在主函数通过记行中断次数来执行,缺点是会被串口中断干扰。

作者: ccs5433    时间: 2014-2-18 20:58
Jyoun 发表于 2014-2-18 17:44
63.6是us,中断内是处理不过来的,可以在主函数通过记行中断次数来执行,缺点是会被串口中断干扰。

单位打错了...是us。即使放到主函数里执行,也不能在一个行中断周期内执行完吧?那这样还是会被行中断打断,那怎么办?

作者: 我為伊狂    时间: 2014-2-18 22:24
此帖果断顶啊~我也在用xs128做摄像头直立小车,把直立任务调节好了,速度任务加上去后感觉没有什么效果,速度任务没有调节好,方向任务把去年做摄像头的代码加上了,有拐弯的感觉,但是方向任务加上后,车就不同站起来了!我程序PIT有一个中断,还有摄像头有行,场中断,各位用XS128芯片的有没有设置中断优先级啊!?肯定是直立的中断优先级高不用说的。速度任务你们是按照官网的代码写的,还是P,I,D都加了,还是怎么滴?

作者: Jyoun    时间: 2014-2-18 22:42
ccs5433 发表于 2014-2-18 20:58
单位打错了...是us。即使放到主函数里执行,也不能在一个行中断周期内执行完吧?那这样还是会被行中断打断 ...

控制直立只是数毫秒或者数十毫秒控制一次,被打断一下下有什么影响?打断了又不是不继续执行了。我朋友已经按此方法做成功了。

作者: ccs5433    时间: 2014-2-18 22:52
Jyoun 发表于 2014-2-18 22:42
控制直立只是数毫秒或者数十毫秒控制一次,被打断一下下有什么影响?打断了又不是不继续执行了。我朋友已 ...

嗯嗯,现在想明白了,明天试一下效果
作者: ccs5433    时间: 2014-2-18 22:55
我為伊狂 发表于 2014-2-18 22:24
此帖果断顶啊~我也在用xs128做摄像头直立小车,把直立任务调节好了,速度任务加上去后感觉没有什么效果,速 ...

直立调好了,再把速度控制调节好,然后再摄像头采集(主要是处理好时序),然后才是方向控制...不要一下就把所有的加上,不但没效果,而且还不容易调
作者: 动感小麦兜    时间: 2014-2-19 22:52
你的问题解决了没有,这几天我也遇到了这个问题,当开pit时采集的图像中有好几行与附近几行的数据完全不同,关掉pit时采集的图像的效果就特别好,不知道该怎么解决啊
作者: ccs5433    时间: 2014-2-19 23:03
动感小麦兜 发表于 2014-2-19 22:52
你的问题解决了没有,这几天我也遇到了这个问题,当开pit时采集的图像中有好几行与附近几行的数据完全不同, ...

可以把PIT关掉,利用摄像头的时序进行控制

作者: ccs5433    时间: 2014-2-24 18:45
Jyoun 发表于 2014-2-18 17:44
63.6是us,中断内是处理不过来的,可以在主函数通过记行中断次数来执行,缺点是会被串口中断干扰。

大神,请再请教个问题,现在我把直立程序放在了行中断里,调车时发现AD值特别不稳定,12位精度,浮动在100左右。我试了一下以前用PIT周期的程序,AD值很稳定,说明信号板没有问题。请问这样的问题应该怎样解决啊?非常感谢~

作者: Jyoun    时间: 2014-2-24 21:17
ccs5433 发表于 2014-2-24 18:45
大神,请再请教个问题,现在我把直立程序放在了行中断里,调车时发现AD值特别不稳定,12位精度,浮动在10 ...

不能放在行中断里,因为63us是不够处理直立的,你放在中断里,直立没执行完,中断不能退出,新的行中断响应不了,图像自然出错。你是没看明白之前告诉你的那种方法。

作者: ccs5433    时间: 2014-2-24 21:24
Jyoun 发表于 2014-2-24 21:17
不能放在行中断里,因为63us是不够处理直立的,你放在中断里,直立没执行完,中断不能退出,新的行中断响 ...

好吧...是我表达有误...我就是按你说的那种方法,数行中断,然后在主函数中执行直立程序,效果很好。但是车子抖的很厉害,在线调试发现加速度和倾角的AD值拨动很大,会不会是因为摄像头频繁中断引起的?
作者: 远点水    时间: 2014-2-25 10:30
你的车子128测速是用2路捕捉吗?
作者: ccs5433    时间: 2014-2-25 10:31
远点水 发表于 2014-2-25 10:30
你的车子128测速是用2路捕捉吗?

是的,CD4520
作者: 远点水    时间: 2014-2-25 12:38
ccs5433 发表于 2014-2-25 10:31
是的,CD4520

有试过直接使用128的两路捕捉接口吗?不使用CD4520!

作者: ccs5433    时间: 2014-2-25 16:14
远点水 发表于 2014-2-25 12:38
有试过直接使用128的两路捕捉接口吗?不使用CD4520!

你现在加上摄像头了没?加了之后,你就知道为什么不用中断测速了

作者: 远点水    时间: 2014-2-25 17:10
我知道了!谢谢!时间是个问题!
作者: xushengbo    时间: 2014-2-26 15:51
ccs5433 发表于 2014-2-25 16:14
你现在加上摄像头了没?加了之后,你就知道为什么不用中断测速了

我也想采用这个方法,但是怎么对行中断进行计数呢?这样每场数据只执行一次平衡。控制周期会不会太长呀?
作者: ccs5433    时间: 2014-2-26 18:30
xushengbo 发表于 2014-2-26 15:51
我也想采用这个方法,但是怎么对行中断进行计数呢?这样每场数据只执行一次平衡。控制周期会不会太长呀?

设置一个变量,执行一次行中断加1...
作者: xushengbo    时间: 2014-2-26 22:01
ccs5433 发表于 2014-2-26 18:30
设置一个变量,执行一次行中断加1...

你们弄好了吗?能不能这个思想的实现能不能整体给小弟看一下。这个问题我们弄了好久还是。。。。。。。。
作者: iliver    时间: 2014-2-28 22:23
求楼主详解啊》。。计了行中断次数然后呢?把直立放在主函数中,判断计的数是不是特定的值么?
作者: ccs5433    时间: 2014-2-28 23:05
根据直立控制周期,确定在某些行数执行直立,这就是行计数的作用
作者: singlebrain    时间: 2014-3-5 22:32
ccs5433 发表于 2014-2-24 21:24
好吧...是我表达有误...我就是按你说的那种方法,数行中断,然后在主函数中执行直立程序,效果很好。但是 ...

你们车子抖的问题解决了吗?是什么原因引起的?

作者: ccs5433    时间: 2014-3-6 09:20
singlebrain 发表于 2014-3-5 22:32
你们车子抖的问题解决了吗?是什么原因引起的?

没有解决…你的也这样吗?

作者: 加了盐的糖    时间: 2014-3-7 20:14
顶起  虽然 第一次坐车 但决定就用128 做不出来拉倒   楼主你是不是这样的 在主函数里数行中断次数 然后分成几个区间 把直立控制分成如干部分 放进分好的区间里
作者: 加了盐的糖    时间: 2014-3-7 20:17
还有新手 有点不明白 你们程序执行的时间是怎么测的  能具体点吗 万分感谢
作者: ccs5433    时间: 2014-3-8 10:12
加了盐的糖 发表于 2014-3-7 20:17
还有新手 有点不明白 你们程序执行的时间是怎么测的  能具体点吗 万分感谢

测时间可以在程序执行的开始对某一个输出口进行取反,结束再取反…然后接示波器看电平维持的时间。控制的话,就是把行中断的个数当做pit的个数处理就行了。至于 程序结构,需要根据你自己的来安排。
作者: ppdm    时间: 2014-3-8 11:51
ccs5433 发表于 2014-3-8 10:12
测时间可以在程序执行的开始对某一个输出口进行取反,结束再取反…然后接示波器看电平维持的时间。控制的 ...

楼主用的方法是计行数然后固定多少行数来控制直立的周期一定是吧。这种方法我想过 ,楼主现在能调直立稳定么 ?不稳定的话我想过可能是因为场中断的关系,因为你比如20行的时间也就是63us*20的时间为直立周期 但是换场的时候场中断会有个很短的时间 还有就是场中断结束到下一场第一个行中断来的中间时间也是一个问题 所以每到换场的时候周期不就乱了么?

作者: ccs5433    时间: 2014-3-8 12:02
ppdm 发表于 2014-3-8 11:51
楼主用的方法是计行数然后固定多少行数来控制直立的周期一定是吧。这种方法我想过 ,楼主现在能调直立稳定 ...

换场时间很短,有个场开始和场结束,最长的1ms,影响不大...
作者: ppdm    时间: 2014-3-8 12:11
ccs5433 发表于 2014-3-8 12:02
换场时间很短,有个场开始和场结束,最长的1ms,影响不大...

那你们的车能稳定了么  现在周期定多少

作者: ccs5433    时间: 2014-3-8 12:27
ppdm 发表于 2014-3-8 12:11
那你们的车能稳定了么  现在周期定多少

还可以...

作者: 60飘过    时间: 2014-3-11 23:10

作者: 加了盐的糖    时间: 2014-3-13 11:53
ccs5433 发表于 2014-3-8 12:27
还可以...

大神 再问一下 你超频超多少 我的64M 但是每次上电的时候 我现在调的直立  有时候程序能执行的很好 车子 稳稳地 有的时候  程序直接输出 满pwm 车子怎么 晃都是满PWM 同样的程序 怎么会出现这种情况 是程序跑飞了吗

作者: arkey    时间: 2014-3-14 11:02
Jyoun 发表于 2014-2-18 22:42
控制直立只是数毫秒或者数十毫秒控制一次,被打断一下下有什么影响?打断了又不是不继续执行了。我朋友已 ...

大神能说的具体点吗?频率是多少啊?求真相

作者: ccs5433    时间: 2014-3-14 13:00
本帖最后由 ccs5433 于 2014-3-14 13:01 编辑
加了盐的糖 发表于 2014-3-13 11:53
大神 再问一下 你超频超多少 我的64M 但是每次上电的时候 我现在调的直立  有时候程序能执行的很好 车子  ...

满pwm有可能是温漂导致零点值不准或者程序有问题,总线64应该没问题
作者: abb200628    时间: 2014-3-18 20:16
移植uC/OS操作系统
作者: 11机电测控    时间: 2014-4-7 17:51
s128超频到64m后,cd4520计数就不稳定了,数值一直乱变,求教大神,这是什么问题
作者: vincent_goodwin    时间: 2014-4-7 18:21
Jyoun 发表于 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。

我也是这样,不知道你们能调到多快,我中线没写好,根本快不起来

作者: ccs5433    时间: 2014-4-7 20:30
11机电测控 发表于 2014-4-7 17:51
s128超频到64m后,cd4520计数就不稳定了,数值一直乱变,求教大神,这是什么问题

查看硬件稳定性是否有问题...
作者: yyyzrxh    时间: 2014-4-7 20:43
ucos-ii
作者: ccs5433    时间: 2014-4-7 21:44
yyyzrxh 发表于 2014-4-7 20:43
ucos-ii

S12能运行吗?

作者: yyyzrxh    时间: 2014-4-8 10:18
ccs5433 发表于 2014-4-7 21:44
S12能运行吗?

可以

作者: HHHvictor    时间: 2014-4-8 10:23
学习学习
作者: ccs5433    时间: 2014-4-9 22:51
yyyzrxh 发表于 2014-4-8 10:18
可以

大神,你实现跑系统了吗?我也想跑,可是没有思路啊,能否给点思路啊?谢谢~
作者: yyyzrxh    时间: 2014-4-10 09:08
标题: RE: 今年
ccs5433 发表于 2014-4-9 22:51
大神,你实现跑系统了吗?我也想跑,可是没有思路啊,能否给点思路啊?谢谢~

我做电磁的,不过操作系统我调通了,ucos-II在xs128跑起来了,K60也有,你要就留个邮箱吧
作者: ccs5433    时间: 2014-4-10 09:13
yyyzrxh 发表于 2014-4-10 09:08
我做电磁的,不过操作系统我调通了,ucos-II在xs128跑起来了,K60也有,你要就留个邮箱吧

907229744@qq.com,万分感谢~

作者: yyyzrxh    时间: 2014-4-10 20:27
ccs5433 发表于 2014-4-10 09:13
,万分感谢~

已发送,注意查收

作者: arkey    时间: 2014-4-17 02:38
Jyoun 发表于 2014-2-18 22:42
控制直立只是数毫秒或者数十毫秒控制一次,被打断一下下有什么影响?打断了又不是不继续执行了。我朋友已 ...

省去PIT直接用计数行中断来作为直立的控制时序,比如计数到大约3ms时执行直立程序,我的直立速度方向控制是放在一起执行的,程序执行时间大约400us。请问在这400US的时间内可以允许行中断打断吗?如果允许的话那么行中断处理函数的执行会正常吗?就是这一行图像的采集会正常吗(在那个400US里面的行图像采集)?求大神帮忙解答分析一下,万分感谢。

作者: Jyoun    时间: 2014-4-17 08:32
arkey 发表于 2014-4-17 02:38
省去PIT直接用计数行中断来作为直立的控制时序,比如计数到大约3ms时执行直立程序,我的直立速度方向控制 ...

不存在这些问题。

作者: arkey    时间: 2014-4-17 09:58
Jyoun 发表于 2014-4-17 08:32
不存在这些问题。

意思就是这个方案是可行的,正常的喽

作者: Jyoun    时间: 2014-4-17 10:15
本帖最后由 Jyoun 于 2014-4-17 10:16 编辑
arkey 发表于 2014-4-17 09:58
意思就是这个方案是可行的,正常的喽

是的,注意根据行中断次数执行直立,直立需要放在主函数,正常直立时需要关闭串口。
作者: Flaming★☆    时间: 2014-4-17 21:12
yyyzrxh 发表于 2014-4-10 09:08
我做电磁的,不过操作系统我调通了,ucos-II在xs128跑起来了,K60也有,你要就留个邮箱吧

给我也发一份吧!看看加上操作系统行不行!358892037@qq.com 谢谢!

作者: yyyzrxh    时间: 2014-4-19 21:29
Flaming★☆ 发表于 2014-4-17 21:12
给我也发一份吧!看看加上操作系统行不行! 谢谢!

已发送

作者: cscs698    时间: 2014-4-22 02:27
Jyoun 发表于 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。

这样做把单片机资源几乎都占满了。数据都没空打,怎么破?少采几行像?大神求助!~~~

作者: aiyaya    时间: 2014-4-24 21:28
Jyoun 发表于 2014-4-17 10:15
是的,注意根据行中断次数执行直立,直立需要放在主函数,正常直立时需要关闭串口。

我也是采用你说的这种方法,但是还是不能执行直立,请教大神,这是什么原因?


作者: Jyoun    时间: 2014-4-24 22:43
aiyaya 发表于 2014-4-24 21:28
我也是采用你说的这种方法,但是还是不能执行直立,请教大神,这是什么原因?

程序写得有问题。

作者: 无人的回忆    时间: 2014-4-24 22:52
学习学习~
作者: 殇夜    时间: 2014-4-26 20:58
楼主,能给我来一份直立部分的代码吗?过两天老师就 要检查了,可是我还没搞懂呢,748382907@qq.com
谢谢了,
作者: 1023968138    时间: 2014-4-28 23:13
Jyoun 发表于 2014-4-17 10:15
是的,注意根据行中断次数执行直立,直立需要放在主函数,正常直立时需要关闭串口。

大神,摄像头的采集分奇偶场吗?也就是奇数场采集,偶数场不采集,利用偶数场的时间处理刚从奇数场采到的数据。这样可以吗?总感觉不太对头

作者: anmo    时间: 2014-4-29 21:13
yyyzrxh 发表于 2014-4-10 09:08
我做电磁的,不过操作系统我调通了,ucos-II在xs128跑起来了,K60也有,你要就留个邮箱吧

大神可以来个K60的UC/OS系统么  谢谢  QQ:2256391479

作者: yyyzrxh    时间: 2014-4-29 23:28
anmo 发表于 2014-4-29 21:13
大神可以来个K60的UC/OS系统么  谢谢  QQ:2256391479

你用的谁的库,库里都带着的

作者: 灬爱    时间: 2014-4-30 01:32

作者: anmo    时间: 2014-4-30 16:09
yyyzrxh 发表于 2014-4-29 23:28
你用的谁的库,库里都带着的

哦   好的   多谢

作者: vincent_goodwin    时间: 2014-4-30 18:10
Jyoun 发表于 2014-2-18 00:08
把定时中断关了,直接用摄像头的时序。支持用s12做摄像头的~s12很好,性能差点,但做的好,一样不会差。

同意

作者: yaorumeng    时间: 2014-6-28 12:26
yyyzrxh 发表于 2014-4-10 09:08
我做电磁的,不过操作系统我调通了,ucos-II在xs128跑起来了,K60也有,你要就留个邮箱吧

朋友,能发一份让我好好学习吗?感谢。1592967712@qq.com

作者: laughtianxia    时间: 2014-6-28 12:37
楼主的方法没得问题




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2