Hello! I am trying to to change the frequency of MCLK (to 8.0 MHz) on the
MSP430FG4618. But I cant get it to exactly to 8.0 MHz. According to my
calculations, N should be 121, but am having to hard time figuring it out. Here
is my code:
#include
void main (void)
{
WDTCTL = WDTHOLD | WDTPW; //Stop Watchdog Timer
P1DIR |= BIT1; //set port pin P1.1 to output direction
P1SEL |= BIT1; //peripheral module function for port pin P1.1 & P1.5
SCFI0 |= FN_2; //Sets fDCO operating range: 1.4MHz to 12MHz
SCFQCTL |= SCFQ_4M; //fMCLK = 128*fACLK
SCFI0 |= FLLD_2; //Multiply by 2
FLL_CTL0 |= DCOPLUS; // fDC0CLK = D(N + 1) * fACLK
// D=2 (default) N8 fACLK = 32.768 kHz
// ==> MCLK measured frequency is approximately 8.47 MHz
} /* end main function */
Changing the frequency of MCLK on MSP430FG4618
Started by ●November 9, 2012
Reply by ●November 9, 20122012-11-09
kahunwa wrote:
> Hello! I am trying to to change the frequency of MCLK (to 8.0 MHz) on the MSP430FG4618. But I cant get it to exactly to 8.0 MHz. According to my calculations, N should be 121, but am having to hard time figuring it out. Here is my code:
>
> #include
>
> void main (void)
> {
> WDTCTL = WDTHOLD | WDTPW; //Stop Watchdog Timer
>
> P1DIR |= BIT1; //set port pin P1.1 to output direction
> P1SEL |= BIT1; //peripheral module function for port pin P1.1 & P1.5
>
> SCFI0 |= FN_2; //Sets fDCO operating range: 1.4MHz to 12MHz
> SCFQCTL |= SCFQ_4M; //fMCLK = 128*fACLK
> SCFI0 |= FLLD_2; //Multiply by 2
> FLL_CTL0 |= DCOPLUS; // fDC0CLK = D(N + 1) * fACLK
>
> // D=2 (default) N8 fACLK = 32.768 kHz
>
>
> // ==> MCLK measured frequency is approximately 8.47 MHz
>
>
> } /* end main function */
>
Pretty much looks like a class assignment gone bad. Best you can do on a
simple board is phase lock to a watch crystal. Try a Google search on that.
Best, Dan.
--
"If they can get you asking the wrong questions, they dont
have to worry about answers."
-- Thomas Pynchon
> Hello! I am trying to to change the frequency of MCLK (to 8.0 MHz) on the MSP430FG4618. But I cant get it to exactly to 8.0 MHz. According to my calculations, N should be 121, but am having to hard time figuring it out. Here is my code:
>
> #include
>
> void main (void)
> {
> WDTCTL = WDTHOLD | WDTPW; //Stop Watchdog Timer
>
> P1DIR |= BIT1; //set port pin P1.1 to output direction
> P1SEL |= BIT1; //peripheral module function for port pin P1.1 & P1.5
>
> SCFI0 |= FN_2; //Sets fDCO operating range: 1.4MHz to 12MHz
> SCFQCTL |= SCFQ_4M; //fMCLK = 128*fACLK
> SCFI0 |= FLLD_2; //Multiply by 2
> FLL_CTL0 |= DCOPLUS; // fDC0CLK = D(N + 1) * fACLK
>
> // D=2 (default) N8 fACLK = 32.768 kHz
>
>
> // ==> MCLK measured frequency is approximately 8.47 MHz
>
>
> } /* end main function */
>
Pretty much looks like a class assignment gone bad. Best you can do on a
simple board is phase lock to a watch crystal. Try a Google search on that.
Best, Dan.
--
"If they can get you asking the wrong questions, they dont
have to worry about answers."
-- Thomas Pynchon