智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

图像采集问题,你有吗???

[复制链接]

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
跳转到指定楼层
1#
发表于 2013-3-31 11:26:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define uchar unsigned  char
#define uint  unsigned  int
#define lie_max   90  //一行里最多采集90个点
#define row_max   60  //一场里最多采集60行
uint lie_count=0;//计算点数
uchar hang_h=0; //一维数组下标号
uint hang=0;    //计算特定行数
uchar image_data[row_max][lie_max];//存储灰度值
uint get_n[60]=
    { 16,29,41,52,62,71,79,86,92,98,
      103,108,112,116,120,124,128,132,135,138,
      141,144,147,150,153,156,159,162,165,168,
      170,172,174,176,178,180,182,184,186,188,
      190,192,194,196,198,200,202,204,206,208,
      210,211,212,242,243,245,246,247,248,249,
    };          //各行采集

/***************************************************
** 函数名称: 延时函数
** 功能描述:
** 说明:
****************************************************/
void delay(int i)
{
    int j;                     
    for(;i>0;i--)
      for(j=0;j<3200;j++);
}

/***************************************************
** 函数名称: 总线时钟PLL设置40MHz
** 功能描述:总线频率40MHZ 晶振频率为16MHz
** 说明:
****************************************************/
void PLL_Init_40M(void)   
{                    
    CLKSEL=0X00;      //关闭锁相环
    PLLCTL_PLLON=1;   //锁相环电路允许
    SYNR =0xc0|0x04;  //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
  //  SYNR =0xc0|0x05;  //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz;                     
    REFDV=0x80|0x01;
    _asm(nop);          //BUS CLOCK=40M  延时等待稳定
    POSTDIV=0x00;     //fPLL= fVCO/(2xPOSTDIV)
    _asm(nop);        //fBUS=fPLL/2=40M
    _asm(nop);
    while(!(CRGFLG_LOCK==1))//时钟频率已经稳定,锁相环频率锁定
      {
          ;
      }
    CLKSEL_PLLSEL =1; //使能锁相环时钟
}

/***************************************************
** 函数名称: IO_Init
** 功能描述: IO口初始化函数
** 说明:     
****************************************************/
void  IO_Init(void)
{
   DDRA=0x00; //8个光电开关检测口均为输入
// DDRB=0xf0;//
}


/***************************************************
** 函数名称:Motor_Init
** 功能描述:电机PWM初始化
** 说明:01级联频率10K
****************************************************/
void Motor_Init(void)
{     
   
    PWME_PWME1 = 0;      //先禁止1通道输出
//   PWME_PWME5 = 0;      //先禁止5通道输出
    PWMCTL_CON01 = 1;    //01两两级联成16位PWM
//   PWMCTL_CON45 = 1;    //45两两级联成16位PWM
    PWMPRCLK_PCKA = 0;  //预分频系数为1,总线频率40
    PWMSCLA = 2;  //SA_CLK = A_CLK / (2*2) == 10MHz
   
    PWMCLK_PCLK1 = 1;   //1通道选择clock SA 做时钟源
  ///  PWMCLK_PCLK5 = 1;   //0通道选择clock SA 做时钟源
     
    PWMCNT01=0;  //01计数器清零
//   PWMCNT45=0;  //45计数器清零
   
   
    PWMCAE_CAE1=0;    //选择输出模式为左对齐输出模式   
//   PWMCAE_CAE5=0;    //选择输出模式为左对齐输出模式
      
    PWMPOL_PPOL1=1;    //先输出高电平,计数到DTY时,反转电平
//    PWMPOL_PPOL5=1;
   
    PWMPER01=1000; // 0.1ms ;10KHz
//   PWMPER45=1000; // 0.1ms ;10KHz
   
     
    PWME_PWME1 = 1;      //各通道打开
//    PWME_PWME5 = 1;
              
}


/***************************************************
** 函数名称:Steer_Init
** 功能描述:舵机PWM初始化
** 说明:23级联               
****************************************************/
void Steer_Init(void)
  {
    PWME_PWME3 = 0;      //先禁止各通道输出
    PWMCTL_CON23 =1;    //两两级联成16位PWM
    PWMPRCLK_PCKB = 2;  //预分频系数为B 4,总线频率,即10MHZ
    PWMSCLB = 2;  //SB_CLK = B_CLK / (2*2) ==2.5MHz
    PWMCLK_PCLK3 = 1;   //通道选  clock SB做时钟源
                                             
    PWMCNT23=0;  //23计数器清零
    PWMCAE_CAE3=0;    //选择输出模式为左对齐输出模式   
    PWMPOL_PPOL3=1;    //先输出高电平,计数到DTY时,反转电平
    PWMPER23=50000; // 20ms ;50Hz
    PWMDTY23=0;
    PWME_PWME3 = 1;      
}


/***************************************************
** 函数名称IT0_Init
** 功能描述:定时器
** 说明: 1ms
****************************************************/
void PIT0_init(void)
{
    PITCFLMT=0x00; //关闭PIT模块
    PITCE_PCE0=1;  // PIT0通道时能
    PITMUX=0x00;   //采用微时间基准0
    PITMTLD0=5;
    PITLD0=10665; //设置16位递减计数器载入初值 Time_out_period=(PITMTLD+1)x(PITLD+1)/fbus  
    PITINTE_PINTE0=1;   //PIT0通道中断使能
    PITCFLMT_PITE=1 ;   //pit模块使能
}


/**************************************************
** 函数名称:TIM_Init
** 功能描述:行场中断初始化函数
** 说明: 1ms
**************************************************/
void TIM_Init(void)
{
   TIOS=0x00; //外部输入捕捉 1,2 通道      
   TCTL4=0x24; //通道1上升沿触发,通道 2 下降沿触发         
   TSCR1=0x80; //使能
   TIE=0x06; //通道 1,2 中断使能     
   TFLG1=0xFF; //清中断标志位
               
}

/***************************************************
** 函数名称:SCI_Init
** 功能描述:SCI初始化
** 说明:               
****************************************************/  
void  SCI0_Init()
{
    SCI0BD=217;//总线频率40M?SCI0BD=fbus/16/11520
    SCI0CR1=0x00;//LOOPS=0,SCISWAI=0,RSRC=0,M=0
    SCI0CR2=0x2c;//TIE=0,TCIE=0,RIE=0,ILIE=0
}

/***************************************************
** 函数名称:SCI_Init
** 功能描述:SCI初始化
** 说明:               
****************************************************/
void sci_send(uchar send_data)
{
    while (!SCI0SR1_TC);        //正在发送数据
    while (!SCI0SR1_TDRE);      //等待发送数据寄存器为空
    SCI0DRH=0;
    SCI0DRL=send_data;
}


void main(void)
{
  PLL_Init_40M();
  IO_Init();
  Motor_Init();
  Steer_Init();
  SCI0_Init();
  PORTA=0x00;
EnableInterrupts;

  TIM_Init();
  PIT0_init();
  for(;;)
  {
  
  }

}






/***************************************************
** 函数名称:行中断
** 功能描述:
** 说明:
****************************************************/
#pragma CODE_SEG NON_BANKED
interrupt 10 void HREF_Count(void)
{  
    TFLG1_C2F = 1;  //清10中断
    if(hang==get_n[hang_h])
    {
       delay(5);
       for(lie_count=0;lie_count<lie_max;lie_count++)
       {
         image_data[row_max][lie_max]=PORTA;
       }
       hang_h++;
    }
   
    hang++;
}

/***************************************************
** 函数名称:场中断
** 功能描述:
** 说明:
****************************************************/
//#pragma CODE_SEG NON_BANKED
interrupt 9 void VSYN_Interrupt(void)
{  
    TFLG1_C1F = 1;  //清9中断
    hang_h=0;
    lie_count=0;
    hang=0;
}
#pragma CODE_SEG DEFAULT

郁闷啊!!!求大神解答,在此先谢谢啦!!!



10

主题

455

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6364
QQ
威望
3231
贡献
1725
兑换币
495
注册时间
2011-3-12
在线时间
704 小时
2#
发表于 2013-3-31 11:30:05 | 只看该作者
一次性贴这么长的代码没多少人看的。。还是直接说问题比较好
回复 支持 反对

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
3#
 楼主| 发表于 2013-3-31 11:37:20 | 只看该作者
天秤星座 发表于 2013-3-31 11:30
一次性贴这么长的代码没多少人看的。。还是直接说问题比较好

好的,谢谢提醒啊。就是采集图像时,什么都没有,好奇怪的。
回复 支持 反对

使用道具 举报

13

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2984
威望
1576
贡献
656
兑换币
306
注册时间
2011-10-9
在线时间
376 小时
4#
发表于 2013-3-31 12:56:23 | 只看该作者
楼主摄像头是倒过来安装的?
回复 支持 反对

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
5#
 楼主| 发表于 2013-3-31 13:13:10 | 只看该作者
是人何装神 发表于 2013-3-31 12:56
楼主摄像头是倒过来安装的?

从哪里看是正看,从哪里看是倒看
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 19:35 , Processed in 0.050436 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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