XS128的PWM控制舵机及驱动电机
//-------------------------------------------------------------------------* //工 程 名:XS_PWM_01_100313 * //程序描述:用XS128的PWM控制舵机及驱动电机 * // (1)总线时钟频率BusClock=OSCCLK/2=8MHz * // (2)驱动电机以40%的占空比驱动;舵机以一定的速率连续左右偏转 *
//硬件连接: * // 将
ppt
关于艾滋病ppt课件精益管理ppt下载地图下载ppt可编辑假如ppt教学课件下载triz基础知识ppt
1连往舵机的信号线, PORTA0连往舵机电源控制端 *
// LM33886的IN1---PPT3;IN2---PPT7;D1---地;D2---Vcc *
//-------------------------------------------------------------------------*
#include
/* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void InitPWM(void)
{ PWME=0; //禁止PWM
PWMCAE=0; //选择PWM左对齐
PWMCTL=0xfc; //CON01/CON23/CON45/CON67级联,PFRZ/PSWAI可计数
和预分频;
PWMCLK=0xff; //各通道PWM时钟源选择SCLK;
PWMPOL=0xff; //PWM脉冲为高电平
PWMPRCLK=0; //无预分频;
PWMSCLA=4; //fSA=fBUS/(2*PWMSCLA)=8MHz/(2*4)=1MHz
PWMSCLB=4; //fSB=fBUS/(2*PWMSCLB)=8MHz/(2*4)=1MHz
//控制舵机
PWMPER01=20000; //周期20mS
PWMDTY01=1500; //初始脉宽1.5mS
//控制驱动电机
PWMPER23=100; //周期0.1mS
PWMPER67=100;
PWMDTY23=40; //初始脉宽0.04mS
PWMDTY67=0; }
void delay(void) // 延时
{ unsigned int i,j;
for(i=0;i<10;i++) { for(j=0;i<5000;i++); } }
void main(void) {
InitPWM() ;
PWME=0xff; //使能PWM
DDRA=1; //开舵机电源
PORTA=1;
for(PWMDTY01=1500;PWMDTY01>=1150;PWMDTY01--){ delay(); }
for(;;)
{ for(PWMDTY01=1150;PWMDTY01<=1830;PWMDTY01++){delay(); }
for(PWMDTY01=1830;PWMDTY01>=1150;PWMDTY01--){delay(); }
}
}