智能车制作

标题: 中断程序 [打印本页]

作者: 跳跳糖    时间: 2015-4-10 16:55
标题: 中断程序
//*******************直立 中断*************************//
void PIT0_IRQHandler(void)
{     time3++;
      PITCounter++;
      g_nSpeedControlPeriod++;
      SpeedControlOutput();
      g_nDirectionControlPeriod++;
      DirectionControlOutput();
//***********************时间片段0 - 采集数据 直立5MS******************//  
   if(PITCounter>=5)
   {
         if(g_nSpeedControlCount >= 20)
          {
            Speed_control(Speed_Set_Check);             //0.4 Speed_Set_Check
            g_nSpeedControlPeriod=0;
            g_nSpeedControlCount=0;
          }
         
        if(g_nDirectionControlCount >= 2)
         {  
           //Direction_control(Middle-64);               //传递中线误差,计算出转弯速度
           g_nDirectionControlPeriod=0;
           g_nDirectionControlCount=0;  
         }
    Calculate_Speed();                                //编码器采集做差速度控制 测出编码器速度 Check_Speed
    PITCounter = 0;                     
   }
//***********************时间片段1- 控速 100Ms******************//     
else if(PITCounter==1)
  {
           Get_Ang();                                 //1ms调整一次姿态  算出speed_Start直立速度
           MotorOutput();
  }
else if(PITCounter==2)
{      
          MotorOutput();
}
else if(PITCounter==3)
{
         g_nSpeedControlCount++;
}
else if(PITCounter==4)
{
         g_nDirectionControlCount++;//方向控制
}
//***********************时间片段3- 调正左右轮速10Ms ******************//  
   if(time3>=500&&TC==0)
   {
            time3=0;
            Speed_gap();
   }
     led_turn(LED0);
     PIT_Flag_Clear(PIT0);                            //清中断标志位
     
}
作者: 跳跳糖    时间: 2015-4-10 16:55
本帖最后由 跳跳糖 于 2015-4-10 17:00 编辑


//*******************直立 中断*************************//
void PIT0_IRQHandler(void)
{      
     time0++;time1++;time2++;time3++;time4++;
      SpeedControlOutput();
      DirectionControlOutput();
//***********************时间片段0 - 采集数据 直立5MS******************//  
   if(time0>=5)
   {

    time0=0;   
    Get_Ang();                     //1ms调整一次姿态  算出speed_Start直立速度
    Calculate_Speed();             //编码器采集做差速度控制 测出编码器速度 Check_Speed

   }
//***********************时间片段1- 控速 100Ms******************//     
   if(time1>=50)
   {
     time1=0;

         g_nSpeedControlCount++;
         g_nSpeedControlPeriod++;
   if(g_nSpeedControlCount >= SPEED_CONTROL_PERIOD)
         {  
           Speed_control(Speed_Set_Check);      //0.4
           g_nSpeedControlPeriod=0;
           g_nSpeedControlCount=0;

         }

   }
//***********************时间片段2 - 输出5Ms ******************//         
   if(time2>=5)
   {
            time2=0;
            MotorOutput();

   }
//***********************时间片段3- 调正左右轮速10Ms ******************//  
   if(time3>=1000&&TC==0)
   {
            time3=0;
            Speed_gap();
   }
//***********************时间片段4- 方向 10Ms******************//     
   if(time4>=10)
   {
     time4=0;
          Direction_control(con_line);               //传递中线误差,计算出转弯速度
         g_nDirectionControlCount++;
         g_nDirectionControlPeriod++;
   if(g_nDirectionControlCount >= DIRECTION_CONTROL_PERIOD)
         {  
          // Direction_control(con_line);               //传递中线误差,计算出转弯速度
           g_nDirectionControlPeriod=0;
           g_nDirectionControlCount=0;

         }

   }
     led_turn(LED0);
     PIT_Flag_Clear(PIT0);                            //清中断标志位



作者: 跳跳糖    时间: 2015-4-10 16:56
本帖最后由 跳跳糖 于 2015-4-10 17:00 编辑

他们 有什么不同 我现在很纠结。第2个是我写的。。。。求救
作者: 夏日之恋    时间: 2015-5-2 17:34
跳跳糖 发表于 2015-4-10 16:56
他们 有什么不同 我现在很纠结。第2个是我写的。。。。求救

关于那个中断程序我们也出了一些问题 能不能交流




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2