A friend asks me to help him to build a gadget. He bought the Header Board for MSP430F149 (SKU#: DEV-00046) from Sparkfun. I tried but simply cannot make the 32kHz crystal oscillate. Can someone here (especially people from OLIMEX) help me?
I inspected the board and its schematics. They do not agree with each other, but the differences are only in the Analog power pins. I do not see anything grossly wrong with the LFXT1 circuit. However, I have two minor concerns.
(a) According to TI User’s Manual (slau049f.pdf):
The board layout ignored all the above advises.Ultralow-power oscillators such as the LFXT1 in LF mode should be guarded from noise coupling from other sources. The crystal should be placed as close as possible to the MSP430 with the crystal housing grounded and the crystal traces guarded with ground traces.
(b) The crystal used is unmarked. According to the schematics, it is a 32768Hz crystal. The capacitors, C5 and C6 are soldered in place. According to the schematics, they are both 6pF. Again, according to TI User’s Manual:
My understanding is, most 32768Hz crystals require 6pF load and do not need additional external capacitors because the two internal 12pF do provide 6pF load (in serial). Unless the unmarked crystal needs 9pF load, C5 and C6 are unwarranted.The LFXT1 oscillator supports ultralow-current consumption using a 32,768-Hz watch crystal in LF mode (XTS = 0). A watch crystal connects to XIN and XOUT without any other external components. Internal 12-pF load capacitors are provided for LFXT1 in LF mode. The capacitors add serially, providing a match for standard 32,768-Hz crystals requiring a 6-pF load. Additional capacitors can be added if necessary.
Despite of the above, I think the crystal should still oscillate. But it does not. Here is the code I tried with nothing but the JTAG connected to the board:
#include "io430.h"
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
P5OUT = 0; P5DIR = 0xFF; P5SEL = 0x70; //show CLKs
while (1) ; //for ever
}
For insurance, I later added the lines:
#include "intrinsics.h"
BCSCTL1 = 0x84;
__bic_SR_register(__SR_OSC_OFF);
P1OUT = 0; P1DIR = 0xFF;
P2OUT = 0; P2DIR = 0xFF;
P3OUT = 0; P3DIR = 0xFF;
P4OUT = 0; P4DIR = 0xFF;
P6OUT = 0; P6DIR = 0xFF;
In both cases, I can see ~750kHz MCLK and SMCLK at P5.4 and P5.5. But P5.6 (ACLK) shows nothing. I also examined XIN and XOUT pins and see no sign of oscillation.