智能车制作

 找回密码
 注册

扫一扫,访问微社区

123
返回列表 发新帖
楼主: lanx
打印 上一主题 下一主题

[采集类] CCD模拟摄像头可以采集后,加了奇偶场分工就歇菜了,谁来救救啊!!!

  [复制链接]

1

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
QQ
威望
233
贡献
28
兑换币
0
注册时间
2010-5-9
在线时间
1 小时
21#
发表于 2010-5-21 13:10:04 | 只看该作者
ha
回复

使用道具 举报

1

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
QQ
威望
233
贡献
28
兑换币
0
注册时间
2010-5-9
在线时间
1 小时
22#
发表于 2010-5-21 13:11:16 | 只看该作者
haoya
回复

使用道具 举报

0

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
威望
306
贡献
83
兑换币
0
注册时间
2010-6-24
在线时间
33 小时
23#
发表于 2010-6-24 17:09:06 | 只看该作者
虚心学习的:
void vPLLInit(void)//锁相环初始化
{                                  //BUS-CLOCK=PLL-CLOCK/2=32M
   REFDV = 1;  // set the REFDV register 16M*2*(3+1)/(1+1)=64M
   SYNR =3;    // set the SYNR register to give us a 64 MHz PLL-clock.
    asm nop    // nops required for PLL stability.
    asm nop
    asm nop
    asm nop
   while ((CRGFLG&0x08)==0); // wait here till the PLL is locked.
   CLKSEL|=0x80;             // switch the bus clock to the PLL.
}
设置总线时钟为32M

void vECTInit(void)//定时器初始化
{
  TIOS =0x00;    //设为输入捕捉
  TSCR1=0x80;    //定时器使能
  TSCR2=0x83;    //允许定时器溢出中断,定时器时钟32M/(2^3)=4M
  TCTL4=0xAA;    //触发电平:下降沿
  TIE  =0x07;    //开中断
  TFLG1=0xFF;    //清除中断标志
}

输入捕捉的1,2通道接行场中断。

void vADInit(void)//AD转换初始化程序
{
//ATD1设置
//上电,标志位快速清零,忽略外部触发,执行一次停止,中断禁止。
  ATD1CTL2  = (ATD1CTL2_AFFC_MASK | ATD1CTL2_ADPU_MASK);

//转换序列长度为1,FIFO模式,Freeze模式下继续转换。|ATD0CTL3_FIFO_MASK
  ATD1CTL3  = (ATD1CTL3_S1C_MASK);

//8位精度,2AD采样周期,采样长度8。
//ATDClock=[BusClock*0.5]/[PRS+1]  ; PRS=15, divider=32
  ATD1CTL4  =(ATD1CTL4_SRES8_MASK|ATD1CTL4_PRS0_MASK);
   
//右对齐无符号,扫描模式连续采样,单通道采样//多通道采样|ATD0CTL5_MULT_MASK。
  ATD1CTL5  = (ATD1CTL5_DJM_MASK|ATD1CTL5_SCAN_MASK);

//禁止数字输入缓冲
ATD1DIEN=0x00;
}

ATD1的0通道用于AD转换

下面是真正的图像采集程序  
//当前采样图像的行和列。
unsigned int ui_SampleRow=0,ui_SampleColumn=0;

//图像数据缓存
unsigned char uca_Buffer1[IMAGE_ROW][IMAGE_COLUMN];
unsigned char uca_Buffer2[IMAGE_ROW][IMAGE_COLUMN];

//指向当前采集数据采样缓存首地址的指针
unsigned char *puca_BufferSample=&uca_Buffer1[0][0];
//指向当前处理数据采样缓存首地址的指针
unsigned char *puca_BufferProcess=&uca_Buffer2[0][0];

//用于图像采集和处理交换缓存。(注意:在每次交换指针后保证puca_BufferTemp与puca_BufferSample相同)
unsigned char *puca_BufferTemp=&uca_Buffer1[0][0];

#pragma CODE_SEG NON_BANKED
//输入捕捉2通道中断函数,行同步 ,用于数据采集。
void interrupt 10 vIC2ISR(void)   
{
  unsigned char ucTemp;
  unsigned char *pucTemp;
  TFLG1_C2F=1;
  
  if(ui_SampleRow>=SAMP_ROW_START&&ui_SampleRow<SAMP_ROW_MAX)
  {
    if(ui_SampleRow%SAMP_ROW_SEP==0)
    {
      for(ui_SampleColumn=0;ui_SampleColumn<SAMP_COL_MAX;ui_SampleColumn++)
      {
        while(!ATD1STAT1_CCF0);
        if(ui_SampleColumn>=SAMP_COL_START)
        {
          if(ui_SampleColumn%SAMP_COL_SEP==0)
          {
            pucTemp=puca_BufferSample
              +((ui_SampleRow-SAMP_ROW_START)/SAMP_ROW_SEP)*IMAGE_COLUMN
              +(ui_SampleColumn-SAMP_COL_START)/SAMP_COL_SEP;
            *pucTemp=ATD1DR0L;
          }
        }
      }
    }
  }
  ucTemp=ATD1DR0L;
  ui_SampleRow++;               //采样行坐标加一。
}
//输入捕捉1通道中断函数,场同步,交换缓存以及图像处理和模型车控制。
void interrupt 9 vIC1ISR(void)   
{     
  TFLG1_C1F=1;
  ui_SampleRow=0;               //把采样行坐标清零。
  ui_SampleColumn=0;

//交换图像采集和处理缓存
  puca_BufferSample=puca_BufferProcess;
  puca_BufferProcess=puca_BufferTemp;
  puca_BufferTemp=puca_BufferSample;
  
//系统时间加一。
  ul_SystemTime+=1;
  
//开中断,允许行信号中断进行采样。
  EnableInterrupts;
   
  if(uc_CarState==STATE_START)
  {
//    PORTB_BIT1=1;
   //分析图像,获取路径参数,根据路径参数控制模型车。。
    vImageProcess();
   
    //根据路径参数控制模型车。
    vAutoControl();
//    PORTB_BIT1=0;
  }
}
回复

使用道具 举报

0

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
威望
306
贡献
83
兑换币
0
注册时间
2010-6-24
在线时间
33 小时
24#
发表于 2010-6-24 17:11:50 | 只看该作者
楼主,我想问一下用串口大师收集不到摄像头采集的图像该怎么办,摄像头调试都没好
回复

使用道具 举报

0

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
威望
306
贡献
83
兑换币
0
注册时间
2010-6-24
在线时间
33 小时
25#
发表于 2010-6-24 17:28:09 | 只看该作者
楼主,我的程序也有问题,能不能把改过后的代码给贴上来
回复

使用道具 举报

1

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
QQ
威望
264
贡献
72
兑换币
0
注册时间
2010-11-28
在线时间
3 小时
26#
发表于 2010-11-28 22:49:40 | 只看该作者
我觉得没什么经验,还是数字的好!
回复

使用道具 举报

4

主题

226

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
QQ
威望
472
贡献
584
兑换币
0
注册时间
2010-8-30
在线时间
91 小时
27#
发表于 2010-11-29 11:34:13 | 只看该作者
回复

使用道具 举报

5

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
702
QQ
威望
468
贡献
126
兑换币
67
注册时间
2011-12-5
在线时间
54 小时
28#
发表于 2012-4-17 18:44:30 | 只看该作者
我也遇到了楼主遇到的问题,接入奇偶场同步信号之后就不行了,希望楼主指点一下
回复

使用道具 举报

3

主题

17

帖子

0

精华

高级会员

Rank: 4

积分
674
威望
494
贡献
152
兑换币
73
注册时间
2013-8-31
在线时间
14 小时
毕业学校
青岛农业大学
29#
发表于 2014-1-14 08:42:37 | 只看该作者
lanx 发表于 2010-3-9 20:01
额……注释很全了啊。
另外我重新写了算法,这个问题解决了。有兴趣的话我上传上来。

能不能把你的资料发过来一份 ?? 不知如何利用采集的信息 控制转弯。  924514210@qq.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 03:09 , Processed in 0.041891 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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