智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4069|回复: 4
打印 上一主题 下一主题

数字摄像头到底用不用像素时钟(PCLK)好呢?

[复制链接]

2

主题

12

帖子

0

精华

高级会员

Rank: 4

积分
943
威望
453
贡献
188
兑换币
42
注册时间
2012-2-2
在线时间
151 小时
毕业学校
GZHU
跳转到指定楼层
1#
发表于 2012-2-4 10:01:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 睿之星 于 2012-2-4 10:04 编辑

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

我应该改为用中断吗?还有我是写在行中断里面的,所以我觉得很危险的。。我想问的是大家是怎么处理PCLK的,我的单片机MC9XS128  ,暂时用64M频率。。。够快吗?

9

主题

222

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1693
QQ
威望
863
贡献
216
兑换币
0
注册时间
2011-3-5
在线时间
307 小时
2#
发表于 2012-2-4 11:14:18 | 只看该作者
摄像头一行的时间大约为64us,假设你摄像头一行有400个像素点,则每个像素的像素时间为0.16us=160ns,
你的总线时钟为64M,则系统时钟为128M,则每个时钟脉冲的时间为7.8ns

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

以上就是大致原因了,一般的做法是场中断,行中断,不管像素中断,你觉得这样不稳妥的话(ps:我用过这种方法,没什么大问题),可以去网上买带FIFO的数字摄像头,价格和不带的差不多,你可以试试,嘿嘿~
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
3#
发表于 2012-2-5 22:10:07 | 只看该作者
没太看明白LZ的意思,不过采样一般都是需要行场中断来确定采集的行数,以及保证这个时序的正确进行
回复 支持 反对

使用道具 举报

2

主题

23

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7608
威望
6207
贡献
1307
兑换币
4
注册时间
2012-3-27
在线时间
47 小时
4#
发表于 2012-5-20 11:05:26 | 只看该作者
#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);
}


回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
威望
138
贡献
61
兑换币
2
注册时间
2012-5-21
在线时间
8 小时
毕业学校
武汉工程大学
5#
发表于 2012-5-23 21:12:20 | 只看该作者
数据不是一字节一字节的来吗?赋值应该不会重复吧/
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 16:22 , Processed in 0.077473 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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