MSP430

From base48


MSP430G2 Launchpad

Some links

Tutorials

SPI Interface (USCI)

Code Examples

Datasheets

TI Guides

Projects

Code Examples

Timer and Button Interrupts

Blinking LED swaps on Button click. Implemented using interrupts

<syntaxhighlight lang="c">

  1. include <msp430g2553.h>

__attribute__((interrupt(TIMER0_A0_VECTOR))) void CCR0_ISR(void) {

   P1OUT ^= BIT6 | BIT0;

}

__attribute__((interrupt(PORT1_VECTOR))) void BtnClick(void) {

   if( P1IFG & BIT3 ) {
       P1IFG &= ~BIT3;
       P1DIR ^= BIT6|BIT0;
   }

}

main() {

   WDTCTL = WDTPW + WDTHOLD;
   TACCR0 = 62500 - 1;
   TACCTL0 = CCIE;
   TACTL = TASSEL_2 + ID_3 + MC_1 + TACLR;
   P1REN = BIT3;
   P1DIR = BIT6;
   P1OUT = BIT6|BIT3;
   P1IES |= BIT3;
   P1IFG &= ~BIT3;
   P1IE |= BIT3;
   __enable_interrupt();
   for(;;);

} </syntaxhighlight>

Compiling and flashing

You need to have a recent version of mspgcc. Debian testing has it in the repository, Fedora should have it soon, installation from source is not that painful.

$ msp430-gcc -Os -Wall -g -mmcu=msp430g2553 -o image.elf source1.c source2.c
$ mspdebug rf2500 "prog image.elf"

Simple Makefile

<syntaxhighlight lang="make"> TARGET=clk MCU=msp430g2553

CC=msp430-gcc CFLAGS=-Os -Wall -Wno-main -g -mmcu=$(MCU)

all: $(TARGET).elf

%.elf: %.c

   $(CC) $(CFLAGS) -o $@ $<

flash: $(TARGET).elf

   mspdebug rf2500 "prog $(TARGET).elf"

clean:

   rm -fr *.o *.elf

</syntaxhighlight>

Debugging

The remarkable mspdebug contains basic (yet still very useful) debugger, however if you want to have a full source-level debugger, you can use (mspgcc-supplied version of) gdb via mspdebug's gdb stub.

$ mspdebug rf2500 gdb &
$ msp430-gdb image.elf
(gdb) target remote :2000