AnsweredAssumed Answered

Not getting correct timing with PLL on MCF51MM.

Question asked by Robyn Yost on Jun 3, 2016
Latest reply on Oct 31, 2016 by Fang Li

Nevermind - it was my timer that was off....

 

I have a 16MHz crystal attached to XTAL2 pin.  I want a bus speed of 8MHz.

 

I set the PLL with:

 

// Initialize the clock

 

// Configure the XOSC1 clock

CCSCTRL = 0x08; // XOSC1 at low frequency, low power, inactive, use oscillator, select XOCS2 as input 

MCGC2 = 0x36  // Divide by 1, high frequency, high gain, FLL not disable in bypass,

                           // use oscillator, clock active, clock disabled in stop.   

      

 

 

// Wait until external reference is stable

 

while  (MCGSC_OSCINIT == 0) ;

 

 

// Set the PEE

 

MCGC3 |= 0x10; // set DIV32 (bit 4) in MCGC3

 

MCGC1 = 0x98;  // external clock, divide by 256

 

 

 

// Wait until the external reference is selected

 

while (MCGSC_IREFST != 0) ;

 

// Wait until external clock is selected as a bus clock reference

while ((MCGSC_CLKST) != 2) ;

 

 

 

MCGC3 = 0x52;  // Set PLL (PLL ref divider of 16), leave DIB32 (not used in PLL), VDIV = 2, (multiply by 8)

 

while (MCGSC_PLLST == 0);

 

while (MCGSC_LOCK == 0);

 

MCGC1 = 0x18;

 

while (MCGSC_CLKST != 3);

 

I have a timer and toggle an output in that timer.  Using the oscilloscope, I see the timer values are all off.  Am I setting up the PLL wrong?

Outcomes