智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1429|回复: 1
打印 上一主题 下一主题

ccd融合后无法采集到正确数据

[复制链接]

6

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
522
威望
267
贡献
159
兑换币
145
注册时间
2012-11-12
在线时间
48 小时
毕业学校
安徽交通职业技术学院
跳转到指定楼层
1#
发表于 2013-7-9 12:17:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
void main(void) {   
  unsigned char i;
  unsigned char send_data_cnt = 0;
  unsigned char *pixel_pt;
   
   inticlock();
   AD_init();
   SCI_init();
   CCD_IO_init();
   PIT_init();
   inti_Motor0();
   inti_Motor1();
   inti_Motor2();
   inti_Motor3();
   Init_TIM();
   Init_CD4520();
   
   
   pixel_pt = Pixel;
   for(i = 0;i < 128+10;i++){
   *pixel_pt++ = 0;
  }
   EnableInterrupts;
   for(;;)
{
   if(TimerFlag20ms == 1){
        TimerFlag20ms = 0;
        
        ImageCapture(Pixel);
        CalculateIntegrationTime();
        if(++send_data_cnt >= 5){
          send_data_cnt = 0;
          SendImageData(Pixel);
        }
   }
         
   if(flag == 1){
   static unsigned char TimerCnt20ms = 0;
   unsigned char integration_point;
   unsigned char   IntegrationTime;

   PITTF_PTF = 1;
   TimerCnt20ms++;
  
   integration_point = 20- IntegrationTime;
   if(integration_point >= 2){
   if(integration_point == TimerCnt20ms)
   StartIntegration();
  }
  
  if(TimerCnt20ms >= 20){
    TimerCnt20ms = 0;
    TimerFlag20ms = 1;
  }
    flag = 0;
   }
   }
}

  
//5ms中断      
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 timer0(void) {
  
       static int i = 0;
       static int j = 0;
       _asm(MOVB #$01,PITTF); //clear interrupt falg   
       i++ ;
       if(i == 1000){
        ADGYRO_GetValue0();
        GYRO_ZERO = GYRO_zero;
       }
        if((i> 1000) && (i < 3000) )
        {
        ADGYRO_GetValue0();
        GYRO_ZERO = ( GYRO_zero + GYRO_ZERO )/2.0;
       }
       if(i>=3000){
        
      j++;
       if(j == 1){
     ADGYRO_GetValue1();
      ADGYRO_GetValue2();
      
     }
      if(j == 2){
     AngelCalculate();
     
      }
      if(j == 3){
      Pluse_Get();
       Speed_Calculate();
      }
       if(j == 4){
      //sendInt(GYRO_VAL);
      //sendInt(ACC_VAL);
      //sendInt(ACC_Angle);
      //sendInt(GYRO_Angle);
      //sendInt(Car_Angle);
      }
      if(j == 5){
  
      Angle_Control_Output();
      MotorOutControl();
      init_ZLSU();
  
      j = 0;
      }
      flag = 1;
      i = 3001;
       }
  }
#pragma CODE_SEG DEFAULT   

这是主函数和中断部分,ccd单独测没问题,加进去主程序后一直没法得到正确的反馈数据,在线调试一直是7~15,AD数值很低,到底是怎么回事求解?

2

主题

165

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2152

活跃会员奖章优秀会员奖章

威望
1082
贡献
584
兑换币
538
注册时间
2012-6-2
在线时间
243 小时
毕业学校
广东省阳东第一中学
2#
发表于 2013-7-12 16:54:18 | 只看该作者
曝光时间,估计是
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-30 19:30 , Processed in 0.042288 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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