智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2151|回复: 8
打印 上一主题 下一主题

模拟摄像头图像采集总是不正确

[复制链接]

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1204
威望
705
贡献
241
兑换币
146
注册时间
2011-7-21
在线时间
129 小时
跳转到指定楼层
1#
发表于 2013-3-19 16:32:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void FTM0_IRQHandler()
{
    u32 s = FTM0_STATUS;             //读取捕捉和比较状态     
    if( s & (1 << 5) )     
    {
        PPC[0].x_right[PPC[0].white_n] = FTM0_CNT;
        
        
         FTM_IRQ_EN(FTM0, CH6);
         FTM_IRQ_DIS(FTM0, CH5);
     }
    else if( s & (1 << 6) )
    {
        PPC[0].x_left[PPC[0].white_n] = FTM0_CNT;
        PPC[0].white_n++;
        FTM_IRQ_DIS(FTM0, CH6);
            
        if(PPC[0].white_n==Pulse_Max_Num)
            {
              FTM_IRQ_DIS(FTM0, CH5);
              
            }
        
            FTM_IRQ_EN(FTM0, CH5);
        /*********************/
    }
   
    FTM0_STATUS = 0x00;             //清中断标志位
}
void PORTD_IRQHandler()
{
  u32 a = PORTD_ISFR;

   if(a & (1 << 3))           //PTD3触发场中断
    {
       Field_CNT++;
       Line_CNT=0;
       Field_over=0;
    }
  else if((a & (1 << 4))&&(!Field_over))           //PTD4触发行中断
    {
      FTM0_CNT=0;         
      if(Line_CNT==15)
        {
   
          PPC[0].white_n = 0;
          FTM_IRQ_DIS(FTM0, CH6);
          enable_irq(62);
          FTM_IRQ_EN(FTM0, CH5);
        }
      if(Line_CNT==(First_Capture_Line_N+Line_Max_Num)&&Mode==Video_Get)
      {
          Mode=Cache;
          disable_irq(90);
      }
      Line_CNT++;
      
    }
  PORTD_ISFR |= 0xFFFFFFFF;        //写1清中断标志位
}

求大神看一下这段程序有什么错误没,主要是利用ftm的计数器(靠捕捉上升沿和下降沿的时间)来采集15行中断的图像数据,按理说对于相同的图像应该得到相同的数据,但得到的数据不一样,同时感觉采到的数据不对,行中断用的是PTD4,場中断用的是PTD3,捕捉上升沿用的是PTD5,下降沿用的是PTD6,搞好长时间总是不对,中断都能进去。求帮忙啊!!!

18

主题

380

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4437
QQ
威望
1484
贡献
781
兑换币
779
注册时间
2011-8-26
在线时间
1086 小时
2#
发表于 2013-3-19 16:35:59 | 只看该作者
什么方法采集的啊
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1204
威望
705
贡献
241
兑换币
146
注册时间
2011-7-21
在线时间
129 小时
3#
 楼主| 发表于 2013-3-19 16:40:51 | 只看该作者
cgtiso 发表于 2013-3-19 16:35
什么方法采集的啊

用的是硬件阈值化处理的信号,然后想用k60的ftm模块检测每一行的上升沿和下降沿的时间来得到一行黑白分布
回复 支持 反对

使用道具 举报

18

主题

380

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4437
QQ
威望
1484
贡献
781
兑换币
779
注册时间
2011-8-26
在线时间
1086 小时
4#
发表于 2013-3-19 17:01:43 | 只看该作者
hjl1396 发表于 2013-3-19 16:40
用的是硬件阈值化处理的信号,然后想用k60的ftm模块检测每一行的上升沿和下降沿的时间来得到一行黑白分布 ...

我说我怎么看不懂啊  硬件二值化的啊   
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1204
威望
705
贡献
241
兑换币
146
注册时间
2011-7-21
在线时间
129 小时
5#
 楼主| 发表于 2013-3-19 17:03:42 | 只看该作者
cgtiso 发表于 2013-3-19 17:01
我说我怎么看不懂啊  硬件二值化的啊

对,硬件二值化测过了没问题,就是处理这一块有问题
回复 支持 反对

使用道具 举报

18

主题

380

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4437
QQ
威望
1484
贡献
781
兑换币
779
注册时间
2011-8-26
在线时间
1086 小时
6#
发表于 2013-3-19 17:19:01 | 只看该作者
hjl1396 发表于 2013-3-19 17:03
对,硬件二值化测过了没问题,就是处理这一块有问题

直接利用端口读值呢   就是说利用行场中断  读0和1啊
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1204
威望
705
贡献
241
兑换币
146
注册时间
2011-7-21
在线时间
129 小时
7#
 楼主| 发表于 2013-3-19 17:31:18 | 只看该作者
cgtiso 发表于 2013-3-19 17:19
直接利用端口读值呢   就是说利用行场中断  读0和1啊

那样太浪费时间了,所以想用行程编码,但是总是有问题
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1204
威望
705
贡献
241
兑换币
146
注册时间
2011-7-21
在线时间
129 小时
8#
 楼主| 发表于 2013-3-19 17:32:15 | 只看该作者
cgtiso 发表于 2013-3-19 17:19
直接利用端口读值呢   就是说利用行场中断  读0和1啊

感觉中断没用好,但又不知道哪儿有问题
回复 支持 反对

使用道具 举报

18

主题

380

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4437
QQ
威望
1484
贡献
781
兑换币
779
注册时间
2011-8-26
在线时间
1086 小时
9#
发表于 2013-3-19 21:10:46 | 只看该作者
hjl1396 发表于 2013-3-19 17:32
感觉中断没用好,但又不知道哪儿有问题

DMA会么
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 09:35 , Processed in 0.061434 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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