智能车制作

标题: 回帖有贡献K60摄像头采集信号有问题,求大神帮助, [打印本页]

作者: ☆_。寒泉..+    时间: 2012-6-15 07:42
标题: 回帖有贡献K60摄像头采集信号有问题,求大神帮助,
本帖最后由 ☆_。寒泉..+ 于 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行,不知道是不是行中断有的时候没有进去,悲催啊,求大神啊
[attach]25765[/attach][attach]25764[/attach]


作者: chenkai    时间: 2012-6-15 08:26
先回复一个,虽然不知道
作者: 840149319    时间: 2012-6-15 08:45
果断要顶啊
作者: ☆_。寒泉..+    时间: 2012-6-15 09:15

作者: Smile_Sun    时间: 2012-6-15 09:36

作者: Smile_Sun    时间: 2012-6-15 09:36

作者: gumu654976    时间: 2012-6-15 10:12

作者: 新人类    时间: 2012-6-15 11:13
首先告诉你一个很重要的问题吧,K60用普通的场行中断方法采集的话肯定是吃亏的。。。一般K60都是用内置的DMA采集效果才会比较好。。至于DMA采集如何实现。。找下K60的资料,肯定会有的。然后就是你的摄像头是啥型号的?要是CCD模拟采集的话。。估计也不一定适合。不过我看你的代码。。估计是用7620.
作者: 新人类    时间: 2012-6-15 11:19
补充一下。。而你这个问题最多是因为串口发送传输出现的。。。因为K60的速度肯定是够的。。。
作者: wgl404    时间: 2012-6-15 11:26
顶!
作者: 赵仁煊    时间: 2012-6-15 11:58
顶!!!
作者: zhanghao1403    时间: 2012-6-15 12:35
不懂呀 回一个
作者: 燕大    时间: 2012-6-15 12:49
什么东东
作者: lsdoo·    时间: 2012-6-15 12:58
额……虽然不懂……但是10贡献诱惑力太大……帮顶吧……
作者: 青龙00    时间: 2012-6-15 13:50
谢谢楼主分享!
作者: msc.apk    时间: 2012-6-15 14:09
建议不用关闭场中断
作者: 吴亚举    时间: 2012-6-15 14:28
这个问题我也遇到过,好像一幅图像扫描完上面又接着扫描下面,我也不知道为什么,就是把采集的行数提高一些就好了,如640*320的图像,你得采到200行以后,我试的是200行以后才不会错位,最好写一个数组,定行采集,我的是

unsigned char getline[ROW_END]={
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,
110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,
142,144,146,148,150,152,154,156,158,160,163,166,169,172,175,178,
181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,
229,232
};你可以试一下。
作者: dennisi123    时间: 2012-6-15 14:43

作者: vgjkl    时间: 2012-6-15 14:58
帮顶!
作者: vgjkl    时间: 2012-6-15 14:59
K60采集的确不好搞
作者: martain    时间: 2012-6-15 15:03
别急慢慢调试

作者: martain    时间: 2012-6-15 15:28

作者: jinyunting    时间: 2012-6-15 16:16
顶~!呵呵
作者: dongyunlong    时间: 2012-6-15 17:04
ding a
作者: dongyunlong    时间: 2012-6-15 17:06
刚刚没看就回复了你的帖子 呵呵 你的图像应该是实际采集的行数和你要求采集的行数不一致造成的 你可以看看是不是这方面的原因。
作者: ☆_。寒泉..+    时间: 2012-6-15 21:15
是不是啊,都这么不靠谱!!!我进入调试界面,发现根本没有进入场中断,如果不进入场中断的话就没办法开行中断,但是程序一直在行中断与打印之间转悠,为啥啊!!
作者: 筱明    时间: 2012-6-15 22:39
遇到过同样的问题 用的是DMA采集 发到上位机中看 关闭场中段和不关场中断效果差不多大概采集几百次图像后会有一次图像采集错误,不知道是怎么回事!一直很纠结图像的!
作者: wj0915    时间: 2012-6-16 00:14
楼主加油
作者: 厚荏    时间: 2012-6-16 02:47

估计我最晚的了。
作者: ailiuxinting    时间: 2012-6-16 12:07
谢谢分享
作者: kevin2009    时间: 2012-6-16 12:22
回帖有贡献?
作者: kevin2009    时间: 2012-6-16 12:22

作者: 568581185    时间: 2012-6-17 09:12
楼主加油
呵呵
作者: 雾里看花    时间: 2012-7-11 15:05
{:soso_e100:}
作者: 邛于    时间: 2012-7-11 15:12

作者: 邛于    时间: 2012-7-11 15:12

作者: yah1010    时间: 2012-7-23 16:03
我也不会写啊
作者: 青龙00    时间: 2012-11-23 15:01
回复
作者: kido    时间: 2012-11-26 11:04
:L
作者: kido    时间: 2012-11-26 11:04
:o
作者: kido    时间: 2012-11-26 11:04
:@
作者: xinxiang    时间: 2012-11-29 17:49

作者: 蓦然回首mxk    时间: 2012-11-29 18:13
现在呢
作者: ☆_。寒泉..+    时间: 2012-11-30 11:57
蓦然回首mxk 发表于 2012-11-29 18:13
现在呢

没问题了





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