智能车制作

标题: PWM [打印本页]

作者: lvyanghui    时间: 2012-4-4 14:58
标题: PWM
PWM0口就是不出波形,真的不知道为什么了!  求大侠们帮助啊!!!

/*------------------------------------------------------------------------*/
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
//#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

void SetBusCLK_48M(void)
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR =0xc0 | 0x05;                        
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;       //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz;
    _asm(nop);          //BUS CLOCK=48M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
void PWM_init(void)   //脉宽调制模块的初始化
{
  
  //SB,B for ch2367
  //SA,A for ch0145
  PWME_PWME0=0X00;
  PWMPRCLK=0X44; // 0100 0100   A=B=48M/16= 3M
  PWMSCLA=150;
  PWMSCLB=150;  // SB=B/2/150=10K
  PWMCLK_PCLK0=1;  //  PWM3---SB
  PWMPOL_PPOL0=1;  // duty = high time
  PWMCAE_CAE0=0;  //  left-aligned
  PWMCTL=0X00;
  PWMPER0=100;  // frequency = SB/100 = 100Hz   10ms
  PWMDTY0=50;  //  duty cycle =
  PWME_PWME0=1;
}     

void main(void) {
  /* put your own code here */
  unsigned char LedCnt=0;
  
  SetBusCLK_48M();    // 设定总线频率
  
  PWM_init();
  
  EnableInterrupts;
  for(;;) {
   
  
  } /* wait forever */
  /* please make sure that you never leave this function */      
}


作者: 451506709    时间: 2012-4-4 16:54
好像你的PWMCLK寄存器设置错了,你再仔细看看
作者: 风行蟹    时间: 2012-4-4 17:39
你的PWM波形输出是PWM0,用示波器去测PP0端口。我试过了,对的。周期也对的!!希望你可以!!




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