智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8391|回复: 43
打印 上一主题 下一主题

回帖有贡献K60摄像头采集信号有问题,求大神帮助,

  [复制链接]

68

主题

718

帖子

0

精华

跨届大侠

火云邪神

Rank: 10Rank: 10Rank: 10

积分
6644

论坛元老奖章

QQ
威望
3359
贡献
2001
兑换币
765
注册时间
2011-8-24
在线时间
642 小时
跳转到指定楼层
1#
发表于 2012-6-15 07:42:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ☆_。寒泉..+ 于 2012-6-15 08:14 编辑

前言:我摄像头是倒着装的,我打印的时候是倒着打印的所以看起来图像还是正的
首先说明一下我的场中断和行中断都是好的,我测试的时候首先关闭总中断,然后开启场中断在场中断里面关闭场中断,开启行中断和某一IO口置高,然后进行中断在行中断关闭行中断,开启场中断IO置低,这样就能看到是否可以两个中断互相制约,我两个都是下降沿上拉。我就用地线测试程序,结果小灯会量暗证明中断好使,我的视频奇偶场信号与行中断信号都是好使的,用示波器侧过了绝对没有问题,
我的采集程序是这样的,首先程序一开始的时候开场中断,在场中断里面关闭场中断,开启行中断,行清零
在行中断里面的是关闭行中断,用for循环采集图像,(这个采集行的程序是正常的没有问题)然后hang++   当行数大于100的时候关闭行中断并且令flag=1;(用于开启打印程序),否则开启行中断以便于下次进入
下面是程序
中断:
void PORTC_IRQHandler()
{
   
    if(PORTC_ISFR & (1 << 4))                                 //PTC4触发中断 行中断
    {   
        PORTC_ISFR |= (1 << 4);                               //写1清中断标志位
        disable_irq(89);                                      //关行中断
        point=0;
         
      
            for(count2=0;count2<100;count2++)      
            {
                asm("nop");
            }
            for(point=0;point<LIST;point++)
            {
                PIC[line][point]=PTC8_IN;                   //  gpio_get(PORTD,7);
                count2=PTC3_IN;                 
            }
            line++;     
        
       // gpio_set(PORTA,15,0);
       // count1++;   
  
        if(hang>=100)
        {
         
            disable_irq(89);  //关行中断
            flag=1;
            
            
        }
        else
        {
            enable_irq(89);      //开行中断
        }
      
      
    }

      
}

//场中断任务
void PORTD_IRQHandler()
{
   
    if(PORTD_ISFR & (1 << 4))                                     //PTD4  触发中断   场中断
    {
        PORTD_ISFR  |= (1 << 4);                                  //写1清中断标志位
        /*  用户任务  */
      
        disable_irq(90);                                          //关场中断               
        count1=0;
        line=0;                                                   //行列清零
        
        enable_irq(89);                                           //开行中断
    }  
}
其中count2=PTC3_IN;当做是延时了,波形侧过了没问题一行采集图像没问题的
打印函数:
void video_print(void)
{   
    u8 i=201,j=100;
    disable_irq(90u);
    disable_irq(89u);
    for(j=LINE-1;j>0;j--)
    {
        printf("1: ");//行数加一  
        for(i=LIST-1;i>0;i--)
        {
            printf("%d",PIC[j]);
        }
        printf(" \n ");                                //换行
    }
    printf(" \n ");
    printf(" \n ");
    printf(" \n ");
    printf(" \n ");
    flag=0;
    enable_irq(90);                                   //开场中断
}
主函数
while(1)
   {
        if(flag==1)
        {
        video_print();
        }
  
   }
这样的程序是只有打印完了才能进入采集,采集完了才会进入打印,不会出现打印一半又重新采集去了,
下面上图 注意:中间的白色空格就是两场之间的空隙,我用了四个回车,但是两幅图像貌似接到一起了但是衔接的也不怎么样,我就怀疑是场中断没有关闭造成的,或者是行中断没有关闭造成的,这就导致行数无法清零,或者是场中断以后不知道什么时候才进入行中断,或者是总线时钟不够,我的是200M不知道有没有能力识别到行中断,有的时候采集起跑线发现有时候是3行有时候是2行,不知道是不是行中断有的时候没有进去,悲催啊,求大神啊


本帖子中包含更多资源

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

x

9

主题

77

帖子

0

精华

高级会员

Rank: 4

积分
605
威望
369
贡献
104
兑换币
0
注册时间
2012-2-3
在线时间
66 小时
毕业学校
合肥学院
2#
发表于 2012-6-15 08:26:58 | 只看该作者

回帖奖励 +10

先回复一个,虽然不知道
回复 支持 反对

使用道具 举报

5

主题

404

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3587
QQ
威望
1907
贡献
992
兑换币
255
注册时间
2011-12-3
在线时间
344 小时
3#
发表于 2012-6-15 08:45:42 | 只看该作者

回帖奖励 +10

果断要顶啊
回复 支持 反对

使用道具 举报

68

主题

718

帖子

0

精华

跨届大侠

火云邪神

Rank: 10Rank: 10Rank: 10

积分
6644

论坛元老奖章

QQ
威望
3359
贡献
2001
兑换币
765
注册时间
2011-8-24
在线时间
642 小时
4#
 楼主| 发表于 2012-6-15 09:15:09 | 只看该作者
回复 支持 反对

使用道具 举报

55

主题

1589

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
24758

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章资源大师奖章

威望
14177
贡献
8803
兑换币
1162
注册时间
2012-3-4
在线时间
889 小时
毕业学校
5#
发表于 2012-6-15 09:36:17 | 只看该作者

回帖奖励 +10

回复 支持 反对

使用道具 举报

55

主题

1589

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
24758

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章资源大师奖章

威望
14177
贡献
8803
兑换币
1162
注册时间
2012-3-4
在线时间
889 小时
毕业学校
6#
发表于 2012-6-15 09:36:36 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
85
威望
130
贡献
45
兑换币
0
注册时间
2012-2-5
在线时间
4 小时
毕业学校
浙江海洋学院
7#
发表于 2012-6-15 10:12:51 | 只看该作者

回帖奖励 +10

回复 支持 反对

使用道具 举报

10

主题

155

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1506
威望
802
贡献
382
兑换币
231
注册时间
2012-5-18
在线时间
161 小时
毕业学校
北京师范大学珠海分校
8#
发表于 2012-6-15 11:13:48 | 只看该作者

回帖奖励 +10

首先告诉你一个很重要的问题吧,K60用普通的场行中断方法采集的话肯定是吃亏的。。。一般K60都是用内置的DMA采集效果才会比较好。。至于DMA采集如何实现。。找下K60的资料,肯定会有的。然后就是你的摄像头是啥型号的?要是CCD模拟采集的话。。估计也不一定适合。不过我看你的代码。。估计是用7620.
回复 支持 反对

使用道具 举报

10

主题

155

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1506
威望
802
贡献
382
兑换币
231
注册时间
2012-5-18
在线时间
161 小时
毕业学校
北京师范大学珠海分校
9#
发表于 2012-6-15 11:19:30 | 只看该作者
补充一下。。而你这个问题最多是因为串口发送传输出现的。。。因为K60的速度肯定是够的。。。
回复 支持 反对

使用道具 举报

26

主题

913

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5207

活跃会员奖章在线王奖章优秀会员奖章论坛元老奖章

威望
2267
贡献
1804
兑换币
117
注册时间
2011-3-16
在线时间
568 小时
10#
发表于 2012-6-15 11:26:07 | 只看该作者

回帖奖励 +10

顶!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 15:24 , Processed in 0.055323 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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