• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

msp430 f149单片机写的电调驱动,但电机不转

//电调是新西达30A的上电后 电机1^2^3 然后格一秒左右一滴一下 一直循环

#include

#define uint unsigned int

#define uchar unsigned char

 uint pwm;

void delay(uint x)

{  

        uint i; 

         while(x--)   

         for(i=1300;i>0;i--);

}

void main (void)

{  

        WDTCTL=WDTPW+WDTHOLD; 

         delay(500);  

/***********关闭所有口*****************/  

          P1DIR = 0XFF;P1OUT = 0XFF; 

          P2DIR = 0XFF;P2OUT = 0XFF; 

          P3DIR = 0XFF;P3OUT = 0XFF; 

          P4DIR = 0XFF;P4OUT = 0XFF;

          P5DIR = 0XFF;P5OUT = 0XFF; 

          P6DIR = 0XFF;P6OUT = 0XFF;

/**************************************/ 

     pwm=1500;    //pwm高电平时间 

     P1DIR=0X0C;  //p1.2~3输出pwm波形  

     P1SEL=0X0C; 

     P2DIR=0XFF;  //开发板上显示按钮按下的提示灯  

     P2OUT=0XFF;  CCR0=20000;  //定时20毫秒 

     CCTL1=OUTMOD_7;//模式7  

     CCR1=pwm; 

     CCTL2=OUTMOD_7;  

     CCR2=2000;  

    TACTL=TASSEL_2+MC_1+ID_3;  //定时器设置,辅助系统时钟8Mhz 8分频  

while(1)  

{          

    P2OUT=0Xff;  

    if((P1IN&0X03)==0X02)  

          {        

                P2OUT=0XFD;   

                if(pwm>1000) 

           {        

                    pwm-=50;  

                    delay(10);   

           }        else     

              {         

                         pwm=1000;   

                         P2OUT&=~BIT7;     

                         delay(50); 

               }  

          }   

                 if((P1IN&0X03)==0X01)   

           {        P2OUT=0XFE; 

                     if(pwm<2000) 

                   {        pwm+=50; 

                            delay(10); 

                   } 

                    else  

                   {

                          pwm=2000; 

                          P2OUT&=~BIT6; 

                         delay(50); 

                   }  

             }  

          CCR1=pwm; 

     }

}  

全部回复(1)
正序查看
倒序查看
lingyan
LV.8
2
2017-10-05 17:58
用示波器看一下单片机输出的波形对不对?如果波形对,电机不转,那是硬件的问题,如果波形不符合设计的要求,那是软件的问题,排查软件的问题
0
回复