智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1814|回复: 2
打印 上一主题 下一主题

OV7620的图像采集问题。。各路大神过来瞧瞧吧!

[复制链接]

2

主题

2

帖子

0

精华

高级会员

Rank: 4

积分
941
威望
460
贡献
289
兑换币
298
注册时间
2016-1-12
在线时间
96 小时
毕业学校
常州大学
跳转到指定楼层
1#
发表于 2016-3-1 22:15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前我用的岱默的例程调试在上位机上显示出来还是不错的,但今天我用学长的程序改完之后在上位机上显示就变成。
就是采集的图像分成了四份(不是一副图像分成了四份,而是同一个图像在显示窗口显示了四份)在网上看说什么可能是场行中断的问题。我也不知道具体出在哪 刚改来改去都不行 只好来求助啦。
这是我的主程序
/***********/
void main(void)
{      
        uint8 i,j;
        DisableInterrupts;

        uart_init(UART0,115200);
        delay();
        CCD_INC();
        set_vector_handler(PORTD_VECTORn,PORTD_IRQHandler);
        set_vector_handler(DMA4_VECTORn,DMA_CH4_Handler);
        //enable_irq (PORTD_IRQn);
        disable_irq(PIT0_IRQn);
        disable_irq(PIT1_IRQn);

        gpio_init (PTE10, GPO,HIGH);
        gpio_init (PTE12, GPO,HIGH);

        EnableInterrupts;
        while(1)
        {
          uart_putchar(UART0,0xff);
    for(i=0;i<DATALINE;i++)
    {
        for(j=0;j<DATACOUNT;j++)
        {
                    if(j%2==0)
                        {
                    if(ADdata[j]==0xff)
                        ADdata[j]--;
                    uart_putchar(UART0,ADdata[j]);
                        }
        }

          EnableInterrupts;
        }
        }


这是我的外部中断程序
/***************************/
void PORTD_IRQHandler(){

      if(PORTD_ISFR & 0x2000)            //PTD13触发中断,采集的行中断
    {
        PORTD_ISFR  |= 0x2000;         //写1清中断标志位

         if(Sample_Flag==0)
      {
        return;
      }
      dma_portx2buff_init(DMA_CH4, (void *)&PTE_B0_IN, ADdata[0], PTD14, DMA_BYTE1, DATACOUNT, DMA_RISING);

        if((LinCout%(480/DATALINE)==0)&&(LinADCout<DATALINE))
        {
          delay() ;      //摄像头行中断改为下降沿触发,有效点前面有一段行消隐区,故需要一段延时消除消耗掉,该处的时间,程序里面的需要根据单片机的主频调整。
          DMA_DADDR(DMA_CH4) = (uint32_t)ADdata[LinADCout] ;   //数据存储地址变化
          DMA_EN(DMA_CH4);                                    //使能通道CHn 硬件请求      (这样才能继续触发DMA传输)
          DMA_IRQ_EN(DMA_CH4) ;                             //允许DMA通道传输
          //PTA16_OUT = ~PTA16_OUT ;
         LinADCout ++ ;
        }
        LinCout++;

         if(LinADCout==DATALINE)
         {
           LinADCout=0;
          // DMA_DIS(DMA_CH4);
           //DisableInterrupts;
          DMA_Over_Flg = 1 ;
         }
    }

    if(PORTD_ISFR & 0x8000)         //PTD15触发中断,采集的场中断。
    {
        PORTD_ISFR  |= 0x8000;        //写1清中断标志位

     //uart_putchar(UART0,LinCout>>8);      //采样行数
       //uart_putchar(UART0,LinCout);         //采样行数
        LinCout = 0 ;
        LinADCout=0;
        Sample_Flag=1;
        port_init (PTD13, IRQ_FALLING | ALT1 | PULLUP );
        PORTD_ISFR  |= 0x2000;         //写1清中断标志位
    }

}






有人遇到过这种情况吗
还请大家分享下经验啊

本帖子中包含更多资源

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

x
回复

使用道具 举报

5

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1193
威望
642
贡献
279
兑换币
411
注册时间
2016-1-15
在线时间
136 小时
毕业学校
-。-
2#
发表于 2016-3-21 23:33:50 | 只看该作者
你现在解决了没
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
威望
111
贡献
59
兑换币
70
注册时间
2016-3-24
在线时间
24 小时
毕业学校
河南大学
3#
发表于 2016-3-26 16:57:44 | 只看该作者
行中断不是只能上升沿触发,场中断上升,下降都可以。错了别怪我,看的蓝宙视频。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:26 , Processed in 0.043583 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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