智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1940|回复: 3
打印 上一主题 下一主题

ov5116采集程序不理解,求指教

[复制链接]

7

主题

226

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2467
威望
1101
贡献
692
兑换币
711
注册时间
2014-4-22
在线时间
337 小时
毕业学校
dabuliedian大学
跳转到指定楼层
1#
发表于 2015-1-27 21:17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  找的一个程序,有两个函数不理解,shijain() 周期性中断大概是9.375ms,这个数字代表什么?10ms采集一场?还有
TIM_init()与摄像头的采集有关系吗?谢谢
#include <hidef.h>      
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"


int ii,jj;
unsigned  int  t,t1;
unsigned  char sdata;
//------------------------------------------------

  #define lie_end  100
  #define hang_end  91
  #define lie  52   
  unsigned  char ab[lie+1];


  #define delay(num)   \
  { \
     unsigned int i,j; \
    for(i=0;i<num;i++) \
       for(j=0;j<58;j++); \
  }

  unsigned char c_lie=0,g_lie=0;
  unsigned int lie_count=0,hang_count=0,am;  

  unsigned char ta[lie][hang_end];

  unsigned int get_n[]={  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,250};


unsigned char ts1,ts2, ge,shi;

void SciTx(unsigned char text);




void chuankou(){

      delay(1700);
      ge=37%10;
     shi=37/10;

        //sdata=shi*16+ge;  
     //SciTx(sdata);

     for(ii=1;ii<40;ii++){///第一次的调试的时候把40修改为2,校对调试助手的屏幕大小,当出现的数据刚刚一行时,说明串口调试助手的屏幕大小适合。
                          //当完成上面的操作后,把2修改为40,这时候就能够看到一幅图像的数据了。
        for(jj=1;jj<90;jj++){

           ts1=0;ts2=0;

           if(ta[ii][jj]==1&&ta[ii][jj+1]==1) ts1=16;//&&ta[ii][jj]>20
             jj++;
           if(ta[ii][jj]==1&&ta[ii][jj+1]==1) ts2=1;//&&ta[ii][jj]>20

           sdata=ts1+ts2;
           SciTx(sdata);  
        }
     }  for(;;) {}      

}

void SciInit()
{
  DDRM=0x01;
  SCI0BDH=0x00|0x01;
SCI0BDL =0xA0;        
SCI0CR2=0X2C;      
SCI0CR1=0;     

}

/*-------发射端程序----------------------*/
void SciTx(unsigned char text)
{

while (!(SCI0SR1&0x80));   
SCI0DRH=0;
SCI0DRL=text;

}


void chaopin(void)
{  
    CLKSEL=0X00;    //  fbus == 64M
    PLLCTL_PLLON=1;   
    SYNR =0xc0 | 0x07;                        
    REFDV=0xc0 | 0x01;
    POSTDIV=0x00;      
    _asm(nop);         
    _asm(nop);
    _asm(nop);
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   
    CLKSEL_PLLSEL =1;                    
}

void TIM_init(void)
{   
  PACTL=0X50;  //  脉冲累加器+门控时间累加器
  PACNT=0X0000;

    TIOS =0x00;//  相应通道做输入捕捉。
    TSCR1=0x80;  // start the timer
    TCTL4=0x18;  // 跳变沿触发。
    TIE=0x06;    //allow the interrupt flag
    TFLG1=0xFF;  // 清零相应标志位
}

void shijian(void) {
   PITCFLMT_PITE=0;//   禁用      
   PITCE_PCE0=1; //  使能pit定时器0的通道         
   PITLD0=9999;  // 9999
   PITMTLD0=5;   // 微定时器装载初值     
   PITMUX=0X00;  //   微定时基准0计数
   PITINTE_PINTE0=1; //允许相应的pit通道中断请求。   
   PITCFLMT_PITE=1;  //  使能pit模块。   
}

   void atd_init(void)
{   
        ATD0CTL1=0x00;   
        ATD0CTL2=0X40;  //禁止中断 转换后自动清除寄存器
        ATD0CTL3=0X88;  //没有断点  没有FIFO 通道0开始 单通道 继续转换右对齐 转换序列1
        ATD0CTL4=0X00;    //4周期,64/2,最快
        ATD0CTL5=0X24;  // 连续转换 单通道转换 通道AN4开始
       ATD0DIEN=0x00;   //相应的数字信号输入禁止


}



//===========================================================================================
void main(void)
{     

DDRA=0X00;
DDRJ=0X02;
DDRK=0X30;



   DisableInterrupts;                 
   {

     DDRB=0X01;


     DDRM=0X00;
     DDRJ=0XBF;
     PTJ_PTJ6=1;

    DDRS=0XEE;
    PPSS=0X11;
    PPSJ=0XFF;


    }

    chaopin();            

    TIM_init();
    shijian();
     atd_init();

    SciInit();                     
    EnableInterrupts;
  {  
      unsigned  int e,w;
       for(e=1;e<6;e++)
        for(w=0;w<10;w++);     
  }

DDRS=0XFF;
PPSS=0X11;
PPSJ=0XFF;
DDRB=0XFF;
DDRJ=0XfF;


// DDRA=0X00;


for(;;)
  {

chuankou();
/*这个函数一定要开启,串口调试方法
首先链接好线:通过USB转串口或者是MAX232,把芯片的S0与TXD接通,S1与RXD接通,共地线。
接着把接通芯片的电源,和摄像头的电源,同时保证摄像头和芯片的线连接正确,并保证摄像头看到完整的赛道。
把本程序拷入芯片里。打开串口调试助手,校对对应的串口端口,并选择十六进制显示。接下来的操作看上面的注释。

  */
  }
}


//---------------------------------  
#pragma CODE_SEG NON_BANKED
void interrupt 10 IC2ISR(void) {

     TFLG1_C2F=1;

  if(lie_count==get_n[c_lie]) {
    delay(1);


    for(hang_count=0;hang_count<=hang_end;hang_count++)
    {

//  while(!ATD0STAT2L_CCF4);
      ta[c_lie][hang_count]=PORTA_PA0;//ATD0DR0LORTA_PA4


    }

   c_lie++;
  }
  lie_count++;
  }
void interrupt 9 IC1ISR(void){              
   TFLG1_C1F=1;
   hang_count=0;
   lie_count=0;
   c_lie=0;   
   }  

void interrupt 66 PIT0Interrupt(void)
{
   //chesudu=PACNT;

   PITTF_PTF0=1;
    PACNT=0X0000;


}   
#pragma CODE_SEG DEFAULT
//接脚是行同步接pt2  场同步接pt1  


回复

使用道具 举报

28

主题

2228

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
15817

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章资源大师奖章

QQ
威望
7430
贡献
4213
兑换币
5193
注册时间
2013-12-9
在线时间
2087 小时
2#
发表于 2015-1-27 22:28:37 | 只看该作者
:L:L
回复 支持 反对

使用道具 举报

7

主题

226

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2467
威望
1101
贡献
692
兑换币
711
注册时间
2014-4-22
在线时间
337 小时
毕业学校
dabuliedian大学
3#
 楼主| 发表于 2015-1-27 22:50:57 | 只看该作者
本帖最后由 萍水相 于 2015-1-27 22:52 编辑
六步上篮 发表于 2015-1-27 22:28

亲,为何是这个表情啊。。那个笑是程序上没有,不知道怎么就变成了偷笑。。。
回复 支持 反对

使用道具 举报

5

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
545
QQ
威望
287
贡献
140
兑换币
175
注册时间
2014-8-16
在线时间
59 小时
毕业学校
电子科技大学
4#
发表于 2015-1-28 08:51:38 | 只看该作者
6666666666666666666
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 13:37 , Processed in 0.099325 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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