智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1486|回复: 1
打印 上一主题 下一主题

OV7620摄像头标志位问题,我的场标志老为0,请问一下各位大神,怎么处理啊

[复制链接]

10

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
410
QQ
威望
205
贡献
93
兑换币
107
注册时间
2015-1-31
在线时间
56 小时
毕业学校
上海交通大学
跳转到指定楼层
1#
发表于 2015-3-30 17:22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
u8 VSYN_Flag;
void main()
{


DisableInterrupts;                             //禁止总中断
uart_init (UART0 , 115200);                      //初始化UART0,输出脚PTA15,输入脚PTA14,串口频率 9600
///////////////////////////////////


pit_init_ms(PIT0,5);                                    //初始化PIT0,定时时间为: 5ms
  OV7620_Init();
  PWM_Init();
  EnableInterrupts;        
  while(1)

  if( VSYN_Flag == 1)   //SCCB写成功   图像采集一帧结束///////////函数就在这里标志位老是0,请大家帮忙看看吧,谢谢了
      {  
      send_image();//上位机看原始图像、包含发送图像到上位机

      }
}




/////////////////////////////////////////////////////////////

extern u8 Buffer[ROW][COL];
extern u8 VSYN_Flag;
u8 DMA_Over_Flg,row_count =0;
u8 flag_jichang=0,ji_ou_choice=0;
volatile u16 ge_hang = 0 ;   //行计数u8
//每2cm确定的行


void PORTD_IRQHandler()     //行中断 60us
{
  if(PORTD_ISFR & (1 << 14))//PTD14触发中断,采集的行中断
  {
    PORTD_ISFR |=(1 << 14);//写1清中断标志位
    if(VSYN_Flag ==0)//不满一场返回
      return;
    row_count++ ;
    if(row_count==Ge_hang_tuxiang[ge_hang])//隔行采集
    {                          //通过PTD12像素同步信号进行触发,采集下降沿前200个(硬件进行了4分频),数据通过PTD前8个口传送,存入二维数组Buffer[ge_hang]中。
      DMA_PORTx2BUFF_Init (DMA_CH4, (void *)&PTD_BYTE0_IN,Buffer, PTD12, DMA_BYTE1,200, DMA_rising_down);  //_down
      DMA_IRQ_CLEAN(DMA_CH4); //清除通道传输中断标志位    (这样才能再次进入中断)
      DMA_IRQ_EN(DMA_CH4) ;  //允许DMA通道传输
      DMA_EN(DMA_CH4);       //使能通道CHn 硬件请求      (这样才能继续触发DMA传输)  
      ge_hang++;
      if(ge_hang >= 50)//采样行数 50 这里采集的50行是已经隔行处理的
      {
        ge_hang=0;
      }      
    }
  }

   if(PORTD_ISFR &(1 <<13))//PTC8触发中断,采集的场中断。
  {
    PORTD_ISFR  |= (1 <<13);//写1清中断标志位
    ji_ou_choice++;//奇偶场判断
    if(ji_ou_choice==1)//奇场采集
    {
      row_count = 0 ;
      ge_hang=0;
      VSYN_Flag==1;//满一场进入标志
  //    enable_irq(PORTD+87);  
    }
    else if(ji_ou_choice>=2)//290us 偶场处理
    {
      ji_ou_choice=0;
      disable_irq(PORTD+87);
        //process();拟合图像
      //display_saidao();//oled显示赛道
       // display_OLED();//1.2ms
      //send_image();//发送原始图像


    }
  }
}  

回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
威望
123
贡献
69
兑换币
75
注册时间
2015-7-22
在线时间
39 小时
2#
发表于 2015-7-24 08:25:37 | 只看该作者
是不是场信号有杂波,意思就是本来场信号要好几百个行信号来了才来一次,因为杂波原因,估计几十个行信号来了,就把杂波误判成场信号来了,并且你在场中断对count置0,所以你的count无法大于你要的行,所以你的标志位一直为0
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 13:31 , Processed in 0.143803 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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