第三届全国大学生智能汽车大赛
if(AD_Value[i]>AD_LEVEL) {
atd_value[i]=1;
count0++; //检测到的个数 } else
atd_value[i]=0; }
if(count0==0) {
exit1=3000;
ave_weight[2]=ave_weight[1]; }
else if(count0>6 && count0<14) { } else {
exit1=3000;
ave_weight[2]=((atd_value[0]*(-13)+atd_value[1]*(-11)+atd_value[2]*(-9)+atd_value[3]*(-7)+atd_value[4]*(-5)+atd_value[5]*(-3)+atd_value[6]*(-1)+atd_value[7]*(1)+atd_value[8]*(3)+atd_value[9]*(5)+atd_value[10]*7+atd_value[11]*9+atd_value[12]*11+atd_value[13]*13)/count0); } }
for(i=0;i<3;i++){
if(atd_value[i]==1){
30
第三届全国大学生智能汽车大赛
for(j=i;j<7;j++){ if(atd_value[j]==0){ for(k=j;k<9;k++){ if(atd_value[k]==1){ for(l=k;l<12;l++){ if(atd_value[l]==0){ for(m=l;m<14;m++){ if(atd_value[m]==1){ exit_flag=1; }else exit_flag=0; }
}else exit_flag=0; }
}else exit_flag=0; } }else exit_flag=0; }
}else exit_flag=0; } if(exit_flag==1) {
exit1++; if(exit1>3003) {
// if(stop_stop<4&&stop_stop>=0) // { exit++;
31
第三届全国大学生智能汽车大赛
// stop_stop=0xff; // } exit1=0; if(exit>2)exit=2; } }
zanshi++; if(zanshi>5) { zanshi=0;
DCDuty=DC_Limit-CaiXinBoPIDController(Object_Speed,(int)AveSpeed,&SpdPID);//
if(DCDuty<1) DCDuty=0; if(DCDuty>DC_Limit) DCDuty=DC_Limit; if (exit==2) DCDuty=1;
PWMDTY45=DCDuty; //change Motor PWM duty] } }
/*******************************************/
定
时
器
溢
出
中
断
void interrupt 16 TIMER_OVERFLOW(void)//187.5khz counter freq.349.5ms overflow once { int i; i=TCNT; if(stop_flag==1)
32
第三届全国大学生智能汽车大赛
{
if(exit<2)
PWMDTY45=DC_Limit; }
stop_flag=1;//in IC0_int ,clearing it }
/**********************ECT************************/
捕
捉
中
断
void interrupt 8 IC0_ISR(void) //when speed is 2.4m/s,15 rounds per sec,15*32=480 int per sec {
// if(exit_flag==1) // {
// stop_stop1++; // }
// else if(exit_flag==0) // {
// stop_stop=stop_stop1; // stop_stop1=0; // }
stop_flag=0;
IC0Counter=TC0;//获得当前IC0的计数值 ,clearing C0F flag
pulse_counter=IC0Counter-IC0Counter_1; IC0Counter_1=IC0Counter; GearWidth[3]=pulse_counter;
for(GearIndex=0;GearIndex<4;GearIndex++)
33
第三届全国大学生智能汽车大赛
{
GearWidthSum=GearWidthSum+(unsigned long)GearWidth[GearIndex]; }
AveGearWidth=GearWidthSum/4; AveSpeed=93750L/AveGearWidth; NowSpeed=(int)AveSpeed; GearWidthSum=0;
GearWidth[0]=GearWidth[1];; GearWidth[1]=GearWidth[2]; GearWidth[2]=GearWidth[3]; }
34
第三届全国大学生智能汽车大赛
35