MSP430

From base48
Jump to: navigation, search


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

#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(;;);
}

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

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

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