Differences

This shows you the differences between two versions of the page.

Link to this comparison view

mspxtaltest [2012/02/17 13:36]
john [MSPGCC Version]
mspxtaltest [2018/03/06 08:59]
Line 1: Line 1:
-====== Testing the MSP430 Crystal ====== 
-The launchpad comes with a 32.768KHz crystal, which is awesome. The launchpad doesn'​t come with this crystal soldered to the board, though, which is slightly less awesome. If you're interested in any projects that require precise timing (serial, a clock, whatever) you're going to want a crystal. If you want to work on the launchpad directly, using the included crystal is a good idea because 1) it's free and already included, 2) it's not hard to install. There are guides all over the internet/​youtube on how to solder the crystal. I've done it twice myself, and this is what I have to say on the matter: take your time, don't use a soldering iron that's too hot, use as little solder as possible, and tape the thing in place so it doesn'​t get away from you. 
  
-Once you've got it installed, you are going to want to test it so you can confirm that it works correctly before you jump into some crazy projects. Here's some code we've found that lets you do just that. 
- 
-===== CCS Version ===== 
-This is from TI's demo code examples. It blinks the LED on the launchpad, or toggles P1.0 if you have your MSP on another board. We've tested this code on both MSP430G2231s and 2553s. 
-<file c main.c> 
-//​****************************************************************************** 
-// MSP430F20xx Demo - LFXT1 Oscillator Fault Detection 
-// 
-// Description:​ System runs normally in LPM3 with WDT timer clocked by 
-// 32kHz ACLK with a 1x4 second interrupt. P1.0 is normally pulsed every 
-// second inside WDT interrupt. If an LFXT1 oscillator fault occurs, 
-// NMI is requested forcing exit from LPM3. P1.0 is toggled rapidly by software 
-// as long as LFXT1 oscillator fault is present. Assumed only LFXT1 as NMI 
-// source - code does not check for other NMI sources. 
-// ACLK = LFXT1 = 32768, MCLK = SMCLK = Default DCO 
-// 
-// //*External watch crystal on XIN XOUT is required for ACLK*// 
-// 
-// M. Buccini / L. Westlund 
-// Texas Instruments Inc. 
-// September 2005 
-// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A 
-//​****************************************************************************** 
-#include <​msp430x20x3.h>​ 
-volatile unsigned int i; 
-void main(void) 
-    { 
-        WDTCTL = WDT_ADLY_1000;​ // WDT 1s interval timer 
-        IE1 |= WDTIE; // Enable WDT interrupt 
-        P1DIR = 0xFF; // All P1.x outputs 
-        P1OUT = 0; // All P1.x reset 
-        P2DIR = 0xFF; // All P2.x outputs 
-        P2OUT = 0; // All P2.x reset 
-        BCSCTL3 = XCAP_3; //12.5pF cap- setting for 32768Hz crystal 
-        // An immedate Osc Fault will occur next 
-        IE1 |= OFIE; // Enable Osc Fault 
-    while(1) 
-        { 
-            P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR 
-            _BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt 
-        } 
-    } 
-    #pragma vector=WDT_VECTOR 
-        __interrupt void watchdog_timer (void) 
-    { 
-        _BIC_SR_IRQ(LPM3_bits);​ // Clear LPM3 bits from 0(SR) 
-    } 
-    #pragma vector=NMI_VECTOR 
-    __interrupt void nmi_ (void) 
-    { 
-    do 
-    { 
-        IFG1 &= ~OFIFG; // Clear OSCFault flag 
-        for (i = 0xFFF; i > 0; i--); // Time for flag to set 
-        P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR 
-    } 
-    while (IFG1 & OFIFG); // OSCFault flag still set? 
-    IE1 |= OFIE; // Enable Osc Fault 
-} 
-</​file>​ 
- 
-===== MSPGCC Version ===== 
-This is the same as the above code, except it builds in MSPGCC. **NOTE:** I have not gotten this code to work! I'm just putting it here for reference, also as a reminder to fix it - though I am not familiar with mspgcc, so if someone else can figure it out, contact me. 
- 
-<file c main.c> 
-//​****************************************************************************** 
-// MSP430F20xx Demo - LFXT1 Oscillator Fault Detection 
-// 
-// Description:​ System runs normally in LPM3 with WDT timer clocked by 
-// 32kHz ACLK with a 1x4 second interrupt. P1.0 is normally pulsed every 
-// second inside WDT interrupt. If an LFXT1 oscillator fault occurs, 
-// NMI is requested forcing exit from LPM3. P1.0 is toggled rapidly by software 
-// as long as LFXT1 oscillator fault is present. Assumed only LFXT1 as NMI 
-// source - code does not check for other NMI sources. 
-// ACLK = LFXT1 = 32768, MCLK = SMCLK = Default DCO 
-// 
-// //*External watch crystal on XIN XOUT is required for ACLK*// 
-// 
-// M. Buccini / L. Westlund 
-// Texas Instruments Inc. 
-// September 2005 
-// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A 
-// modified by justin solarski to work with MSPGCC 4.0 
-//​****************************************************************************** 
-#include <​msp430.h>​ 
-#include <​signal.h>​ // must be included for interrupt handler 
-volatile unsigned int i; 
-void main(void) 
-{ 
-WDTCTL = WDT_ADLY_1000;​ // WDT 1s interval timer 
-IE1 |= WDTIE; // Enable WDT interrupt 
-P1DIR = 0xFF; // All P1.x outputs 
-P1OUT = 0; // All P1.x reset 
-P2DIR = 0xFF; // All P2.x outputs 
-P2OUT = 0; // All P2.x reset 
-BCSCTL3 = XCAP_3; //12.5pF cap- setting for 32768Hz crystal 
-// An immedate Osc Fault will occur next 
-IE1 |= OFIE; // Enable Osc Fault 
-_enable_interrupt();​ // enable interrupts added for mspgcc 
-while(1) 
-{ 
-P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR 
-_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt 
-} 
-} 
-//#pragma vector=WDT_VECTOR removed for mspgcc 
-interrupt(WDT_VECTOR) watchdog_timer (void) //​__interrupt void watchdog_timer (void) removed for mspgcc 
-{ 
-_BIC_SR_IRQ(LPM3_bits);​ // Clear LPM3 bits from 0(SR) 
-} 
-//#pragma vector=NMI_VECTOR removed for mspgcc 
-interrupt(NMI_VECTOR) nmi_ (void) //​__interrupt void nmi_ (void) removed for mspgcc 
-{ 
-do 
-{ 
-IFG1 &= ~OFIFG; // Clear OSCFault flag 
-for (i = 0xFFF; i > 0; i--); // Time for flag to set 
-P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR 
-} 
-while (IFG1 & OFIFG); // OSCFault flag still set? 
-IE1 |= OFIE; // Enable Osc Fault 
-} 
-</​file>​ 
-And here's a makefile you can use with the above code. Remember to change the mmcu flag to reflect the MCU you're using. 
-<file c makefile>​ 
-CC=msp430-gcc 
-CFLAGS=-Os -Wall -g -mmcu=msp430g2553 
-OBJS=main.o 
-  
-  
-all: $(OBJS) 
- $(CC) $(CFLAGS) -o main.elf $(OBJS) 
-  
-%.o: %.c 
- $(CC) $(CFLAGS) -c $< 
-  
-clean: 
- rm -fr main.elf $(OBJS) 
-</​file>​ 
mspxtaltest.txt ยท Last modified: 2018/03/06 08:59 (external edit)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0