智能车制作
标题:
奇怪的数据采集
[打印本页]
作者:
justing88
时间:
2010-4-8 20:15
标题:
奇怪的数据采集
[attach]1987[/attach]我的问题是:为什么我在数据采集到之后,存在数组中的一行数据里面有两至三个低电平,数值是1或2,每一行出现的地方都一样,都是第一个,然后当中会出现1至两个,我想,我是进入行中断采集数据的,数据采集完了之后是通过触发方式存储数据的。行中断是下降沿触发方式,的确,在初始的时候会出现一个低电平,是行消隐区,但是照理说之后的数据应该都是视频数据啊,怎么也会突然出现一个非常低的数值1或者2????????以下是我的中断程序
#pragma CODE_SEG NON_BANKED
void interrupt 6 line_int(void)
{
if((++ad_p)>23) //行中断了24次,开始进行AD转化,废弃前面的行中断
{
ad_q++; //行中断计数器
}
if(ad_q%3==1)
{ //之后,每隔三个行中断,进行一次AD转化
ad_j=0; //列清零
ad_i++; //行加1
}
}
void interrupt 12 row_int(void){ //场中断
TFLG1_C4F=1; //清中断标志位
ad_i=0; //行重新开始
ad_j=0;
ad_q=0;
ad_p=0;
ima_k=1; //奇场,偶场标志位
ima_m++; //图片数加1
}
void interrupt 22 ad_int(void){ // AD转化好了之后,产生中断,存储数据
if((ad_i)>0&&(ad_j)>0) //第一行数据被代替
ima[ad_i-1][ad_j-1]=ATD0DR0L;
ad_j++; //采集到一个,转化一个,转化好了,转化下一个,列数加1
}
#pragma CODE_SEG DEFAULT
作者:
justing88
时间:
2010-4-8 20:15
热心人帮我回答下啊,谢谢!!~~~~~~
作者:
justing88
时间:
2010-4-8 21:27
真不好意思,解决了,哎!!与其上网问别人,还不如自己认认真真研究,谢谢才我
作者:
zjhthefirst
时间:
2010-4-9 22:27
回复
3#
justing88
请问大侠是怎么解决的啊?谢谢啊!我们也出现了类似问题啊!
作者:
justing88
时间:
2010-4-11 16:24
回复
4#
zjhthefirst
请问你也是利用中断的吗????如果用中断的话,并且用的是隔行采集的话,那么如果你出现相同的问题的话,原因很可能就是:
你在行与行中断之间,比如你是采集第一行与第四行,2与3行都跳过去不采集。但是事实上,AD是一直不停地采集,采集2,3行的时候就会采集到2,3行的行同步脉冲,同时会纯在那个你设定的数组里面的,当你采集第四行采集完成的时候,你会发现,你采集到的一行怎么会有两个固定的行中断??事实上,已经包含好几个行中断了。
不知道对你有没有帮助
作者:
zjhthefirst
时间:
2010-4-11 22:49
回复
5#
justing88
谢谢!
作者:
jsl
时间:
2010-4-18 21:04
那是不是说明采集完哪行后就要把它关掉呢 ??
作者:
justing88
时间:
2010-4-19 07:31
回复
7#
jsl
不需要,这个我试过了。如果把AD关掉,然后重新打开的话,这里有硬件上的延迟,硬件上的时间延迟比软件上的时间延迟更长,长到什么时候呢???长到你可能打开了后一场已经扫描完了,行中断也没有用了。。。。所以,我们只是把要的数据存储起来,不要的时段就直接让它采集,这就产生了一个不好的,就是增加了CPU的工作。。。。。。。
作者:
时代还怪
时间:
2010-4-19 10:54
不如在ad的转换中断中设置条件,使其在第2,3行的时候数据不储存,这样更好吧!仅属建议!
作者:
huachou
时间:
2010-4-19 15:42
楼上的说的有一定的道理 楼主怎样啊
作者:
justing88
时间:
2010-4-20 13:58
是的,我也是这样的。哈哈,3X
作者:
dkmy
时间:
2010-5-16 10:53
这是我在论坛里见过最有用的贴了 顶!!!!!!!!!!
作者:
zhanghl
时间:
2010-6-1 23:55
了解
作者:
武当奇人
时间:
2010-6-2 13:33
作者:
jwauto
时间:
2010-6-24 15:06
学习了
作者:
x_yang1989723
时间:
2012-2-15 00:10
楼主说的好啊
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2