智能车制作

标题: 数字摄像头到底用不用像素时钟(PCLK)好呢? [打印本页]

作者: 睿之星    时间: 2012-2-4 10:01
标题: 数字摄像头到底用不用像素时钟(PCLK)好呢?
本帖最后由 睿之星 于 2012-2-4 10:04 编辑

    我刚刚起步,参考网上的程序发现有的不用像素时钟,而是一直赋值,但是这样子时间利用什么方法确定,是到汇编层来确定的吗?而且这样能做到刚刚好吗?你们呢?你们用不用像素时钟?
我的程序是这样的,我对于像素时钟,我不用中断,而是查询IO口的方法:
           while(PCLKup);
           while(PCLKdown);  

我应该改为用中断吗?还有我是写在行中断里面的,所以我觉得很危险的。。我想问的是大家是怎么处理PCLK的,我的单片机MC9XS128  ,暂时用64M频率。。。够快吗?
作者: zjh3123629    时间: 2012-2-4 11:14
摄像头一行的时间大约为64us,假设你摄像头一行有400个像素点,则每个像素的像素时间为0.16us=160ns,
你的总线时钟为64M,则系统时钟为128M,则每个时钟脉冲的时间为7.8ns

1:160/7.8 约等于20,每隔20个系统时钟脉冲就要被中断一次,执行采样程序,而且你要保证你的采样程序不能超过20个系统时钟脉冲(ps:必须是隔点采样的,所以这个条件是可以满足的)
2:最关键的是,触发中断不是说前一个系统时钟脉冲采样为低电平,后一个系统时钟脉冲为高电平就能产生中断了,它可能是隔几个系统时钟脉冲采样一次,发现有电平翻转才认为有中断产生的,所以,很可能就捕捉不到这隔160ns产生一次的中断

以上就是大致原因了,一般的做法是场中断,行中断,不管像素中断,你觉得这样不稳妥的话(ps:我用过这种方法,没什么大问题),可以去网上买带FIFO的数字摄像头,价格和不带的差不多,你可以试试,嘿嘿~
作者: sonwendi    时间: 2012-2-5 22:10
没太看明白LZ的意思,不过采样一般都是需要行场中断来确定采集的行数,以及保证这个时序的正确进行
作者: Make_it!    时间: 2012-5-20 11:05
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8  PT0_Interrupt()
{
  TFLG1_C0F=1;
  Line++;     
  if ( SampleFlag == 0 || Line<ROW_START ||  Line>ROW_MAX )
  {
    return;
   }      
     
if(Line<=132)                Interval=12;                                          
else if(Line>132&&Line<=200) Interval=8;
  else if(Line>200&&Line<=248) Interval=6;
  else                         Interval=4;        
      
  if(Line%Interval==0)
  {
  Buffer[m][0]=
PORTA;  Buffer[m][n+0]=PORTA;    //楼主的意思是这里  一直赋值会是重复吧  我也有这样的理解  
Buffer[m][1]=PORTA;  Buffer[m][n+1]=PORTA;    //如果楼主已经明白了 求解释  分享下
Buffer[m][2]=PORTA;  Buffer[m][n+2]=PORTA;
  Buffer[m][3]=PORTA;  //Buffer[m][n+3]=PORTA;
  Buffer[m][4]=PORTA;  Buffer[m][n+4]=PORTA;
  Buffer[m][5]=PORTA;  Buffer[m][n+5]=PORTA;
  Buffer[m][6]=PORTA;  Buffer[m][n+6]=PORTA;
  Buffer[m][7]=PORTA;  //Buffer[m][n+7]=PORTA;
  Buffer[m][8]=PORTA;  Buffer[m][n+8]=PORTA;
  Buffer[m][9]=PORTA;  Buffer[m][n+9]=PORTA;
  Buffer[m][10]=PORTA; Buffer[m][n+10]=PORTA;
  Buffer[m][11]=PORTA; //Buffer[m][n+11]=PORTA;
  Buffer[m][12]=PORTA; Buffer[m][n+12]=PORTA;
  Buffer[m][13]=PORTA; Buffer[m][n+13]=PORTA;
  Buffer[m][14]=PORTA; Buffer[m][n+14]=PORTA;
  Buffer[m][15]=PORTA; //Buffer[m][n+15]=PORTA;
  Buffer[m][16]=PORTA; Buffer[m][n+16]=PORTA;
  Buffer[m][17]=PORTA; Buffer[m][n+17]=PORTA;
  Buffer[m][18]=PORTA; Buffer[m][n+18]=PORTA;
  Buffer[m][19]=PORTA; //Buffer[m][n+19]=PORTA;
  Buffer[m][20]=PORTA; Buffer[m][n+20]=PORTA;
  Buffer[m][21]=PORTA; Buffer[m][n+21]=PORTA;
  Buffer[m][22]=PORTA; Buffer[m][n+22]=PORTA;
  Buffer[m][23]=PORTA; //Buffer[m][n+23]=PORTA;
  Buffer[m][24]=PORTA; Buffer[m][n+24]=PORTA;
  Buffer[m][25]=PORTA; Buffer[m][n+25]=PORTA;
  Buffer[m][26]=PORTA; Buffer[m][n+26]=PORTA;
  Buffer[m][27]=PORTA; //Buffer[m][n+27]=PORTA;
  Buffer[m][28]=PORTA; Buffer[m][n+28]=PORTA;
  Buffer[m][29]=PORTA; Buffer[m][n+29]=PORTA;
  Buffer[m][30]=PORTA; Buffer[m][n+30]=PORTA;
  Buffer[m][31]=PORTA; //Buffer[m][n+31]=PORTA;
  Buffer[m][32]=PORTA; Buffer[m][n+32]=PORTA;
  Buffer[m][33]=PORTA; Buffer[m][n+33]=PORTA;
  Buffer[m][34]=PORTA; Buffer[m][n+34]=PORTA;
  Buffer[m][35]=PORTA; //Buffer[m][n+35]=PORTA;
  Buffer[m][36]=PORTA; Buffer[m][n+36]=PORTA;
  Buffer[m][37]=PORTA; Buffer[m][n+37]=PORTA;
  Buffer[m][38]=PORTA; Buffer[m][n+38]=PORTA;
  Buffer[m][39]=PORTA; //Buffer[m][n+39]=PORTA;
  Buffer[m][40]=PORTA; Buffer[m][n+40]=PORTA;
  Buffer[m][41]=PORTA; Buffer[m][n+41]=PORTA;
  Buffer[m][42]=PORTA; Buffer[m][n+42]=PORTA;
  Buffer[m][43]=PORTA; //Buffer[m][n+43]=PORTA;
  Buffer[m][44]=PORTA; Buffer[m][n+44]=PORTA;
  Buffer[m][45]=PORTA; Buffer[m][n+45]=PORTA;
  Buffer[m][46]=PORTA; Buffer[m][n+46]=PORTA;
  Buffer[m][47]=PORTA; //Buffer[m][n+47]=PORTA;
  Buffer[m][48]=PORTA; Buffer[m][n+48]=PORTA;
  Buffer[m][49]=PORTA; Buffer[m][n+49]=PORTA;
   Buffer[m][50]=PORTA; Buffer[m][n+50]=PORTA;
  Buffer[m][51]=PORTA; //Buffer[m][n+51]=PORTA;
  Buffer[m][52]=PORTA; Buffer[m][n+52]=PORTA;
  Buffer[m][53]=PORTA; Buffer[m][n+53]=PORTA;
  Buffer[m][54]=PORTA; Buffer[m][n+54]=PORTA;
  Buffer[m][55]=PORTA; //Buffer[m][n+55]=PORTA;
  Buffer[m][56]=PORTA; Buffer[m][n+56]=PORTA;
  Buffer[m][57]=PORTA; Buffer[m][n+57]=PORTA;
  Buffer[m][58]=PORTA; Buffer[m][n+58]=PORTA;
  Buffer[m][59]=PORTA; //Buffer[m][n+59]=PORTA;
  Buffer[m][60]=PORTA; Buffer[m][n+60]=PORTA;
  Buffer[m][61]=PORTA; Buffer[m][n+61]=PORTA;
  Buffer[m][62]=PORTA; Buffer[m][n+62]=PORTA;
  Buffer[m][63]=PORTA; //Buffer[m][n+63]=PORTA;
  Buffer[m][64]=PORTA; Buffer[m][n+64]=PORTA;
  Buffer[m][65]=PORTA; Buffer[m][n+65]=PORTA;
  Buffer[m][66]=PORTA; Buffer[m][n+66]=PORTA;
  Buffer[m][67]=PORTA; //Buffer[m][n+67]=PORTA;
  Buffer[m][68]=PORTA; Buffer[m][n+68]=PORTA;
  Buffer[m][69]=PORTA; Buffer[m][n+69]=PORTA;
  m++;
  }
  Image_Binaryzation(m);
}



作者: 1003598246    时间: 2012-5-23 21:12
数据不是一字节一字节的来吗?赋值应该不会重复吧/




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