标题: C52单片机中用定时器2做中断产生PWM波这样有问题吗? [打印本页]

作者: 丿THnnk丶斌    时间: 2022-3-25 13:48
标题: C52单片机中用定时器2做中断产生PWM波这样有问题吗?
  。。。。。。
        //  左电机调速                              
void pwm_out_left_moto(void)
{  
   if(Left_moto_stop)
   {
    if(pwm_val_left<=push_val_left)
               {
                     Left_moto_pwm=1;  //                     Left_moto_pwm1=1;
                   }
        else
               {
                 Left_moto_pwm=0; //                     Left_moto_pwm1=0;
                   }
        if(pwm_val_left>=20)
               pwm_val_left=0;
   }
   else   
          {
           Left_moto_pwm=0; //           Left_moto_pwm1=0;
                  }
}
       // 右电机调速                                
   void pwm_out_right_moto(void)
{
  if(Right_moto_stop)
   {
    if(pwm_val_right<=push_val_right)
              {
               Right_moto_pwm=1;  //                   Right_moto_pwm1=1;
                   }
        else
              {
                   Right_moto_pwm=0;   //                   Right_moto_pwm1=0;
                  }
        if(pwm_val_right>=20)
               pwm_val_right=0;
   }
   else   
          {
           Right_moto_pwm=0; //           Right_moto_pwm1=0;
              }
}

///*TIMER2中断服务子函数产生PWM信号*/
         void timer0()interrupt 5  
{        
         TF2=0;                                                
TH2=0XFc;          (65536-1000)/256 //1M定时
         TL2=0X18;   (65536-1000)%256        
         time++;
         pwm_val_left++;
         pwm_val_right++;
         pwm_out_left_moto();
         pwm_out_right_moto();
EA=1;
ET2=1;
RT2=1;
}


作者: xuyaqi    时间: 2022-3-25 18:45
电机调速,就不要用定时器中断产生PWM,电机速度无法及时调整。
作者: yzwzfyz    时间: 2022-3-26 15:44
所问不是问题的关键。
驱动的原理是什么?服务对象的特性是什么?
清楚了吗?
而后再谈程序。
例如电机从0速到高速是需要时间的,而你的PWM可以瞬间给出一个调整的参数,这样行吗?讨论过没有。
如何加速、减速、控速,理论上先说得过去才行。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1