智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5170|回复: 15
打印 上一主题 下一主题

奇怪的数据采集

  [复制链接]

19

主题

160

帖子

0

精华

高级会员

Rank: 4

积分
919
QQ
威望
487
贡献
284
兑换币
0
注册时间
2009-11-4
在线时间
74 小时
跳转到指定楼层
1#
发表于 2010-4-8 20:15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的问题是:为什么我在数据采集到之后,存在数组中的一行数据里面有两至三个低电平,数值是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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

19

主题

160

帖子

0

精华

高级会员

Rank: 4

积分
919
QQ
威望
487
贡献
284
兑换币
0
注册时间
2009-11-4
在线时间
74 小时
2#
 楼主| 发表于 2010-4-8 20:15:55 | 只看该作者
热心人帮我回答下啊,谢谢!!~~~~~~
回复 支持 反对

使用道具 举报

19

主题

160

帖子

0

精华

高级会员

Rank: 4

积分
919
QQ
威望
487
贡献
284
兑换币
0
注册时间
2009-11-4
在线时间
74 小时
3#
 楼主| 发表于 2010-4-8 21:27:13 | 只看该作者
真不好意思,解决了,哎!!与其上网问别人,还不如自己认认真真研究,谢谢才我
回复 支持 反对

使用道具 举报

8

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
571
威望
217
贡献
272
兑换币
12
注册时间
2009-10-25
在线时间
41 小时
4#
发表于 2010-4-9 22:27:08 | 只看该作者
回复 3# justing88


    请问大侠是怎么解决的啊?谢谢啊!我们也出现了类似问题啊!
回复 支持 反对

使用道具 举报

19

主题

160

帖子

0

精华

高级会员

Rank: 4

积分
919
QQ
威望
487
贡献
284
兑换币
0
注册时间
2009-11-4
在线时间
74 小时
5#
 楼主| 发表于 2010-4-11 16:24:19 | 只看该作者
回复 4# zjhthefirst


    请问你也是利用中断的吗????如果用中断的话,并且用的是隔行采集的话,那么如果你出现相同的问题的话,原因很可能就是:

你在行与行中断之间,比如你是采集第一行与第四行,2与3行都跳过去不采集。但是事实上,AD是一直不停地采集,采集2,3行的时候就会采集到2,3行的行同步脉冲,同时会纯在那个你设定的数组里面的,当你采集第四行采集完成的时候,你会发现,你采集到的一行怎么会有两个固定的行中断??事实上,已经包含好几个行中断了。

不知道对你有没有帮助
回复 支持 反对

使用道具 举报

8

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
571
威望
217
贡献
272
兑换币
12
注册时间
2009-10-25
在线时间
41 小时
6#
发表于 2010-4-11 22:49:29 | 只看该作者
回复 5# justing88


    谢谢!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
威望
176
贡献
29
兑换币
0
注册时间
2010-3-27
在线时间
2 小时
7#
发表于 2010-4-18 21:04:26 | 只看该作者
那是不是说明采集完哪行后就要把它关掉呢 ??
回复 支持 反对

使用道具 举报

19

主题

160

帖子

0

精华

高级会员

Rank: 4

积分
919
QQ
威望
487
贡献
284
兑换币
0
注册时间
2009-11-4
在线时间
74 小时
8#
 楼主| 发表于 2010-4-19 07:31:10 | 只看该作者
回复 7# jsl


    不需要,这个我试过了。如果把AD关掉,然后重新打开的话,这里有硬件上的延迟,硬件上的时间延迟比软件上的时间延迟更长,长到什么时候呢???长到你可能打开了后一场已经扫描完了,行中断也没有用了。。。。所以,我们只是把要的数据存储起来,不要的时段就直接让它采集,这就产生了一个不好的,就是增加了CPU的工作。。。。。。。
回复 支持 反对

使用道具 举报

6

主题

185

帖子

0

精华

高级会员

Rank: 4

积分
963
威望
435
贡献
438
兑换币
0
注册时间
2010-1-11
在线时间
45 小时
9#
发表于 2010-4-19 10:54:28 | 只看该作者
不如在ad的转换中断中设置条件,使其在第2,3行的时候数据不储存,这样更好吧!仅属建议!
回复 支持 反对

使用道具 举报

0

主题

302

帖子

0

精华

高级会员

Rank: 4

积分
591
威望
475
贡献
62
兑换币
0
注册时间
2010-3-19
在线时间
27 小时
10#
发表于 2010-4-19 15:42:24 | 只看该作者
楼上的说的有一定的道理  楼主怎样啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 00:29 , Processed in 0.255059 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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