MSP430 LaunchPadという$4.3の激安マイコンボードがある。
日本では共立エレショップで450円で買える
開発環境は全然こなれていなくて評判も悪いように見えるんだけど、とんでもなく安いし、超低電圧でも動くらしいし、firmata化したら全世界が幸福に包まれるのではないかと思う。


基板上の赤と黄色のLED2つを交互に点滅させつつ、ブレッドボードにも引き出してLEDを光らせた。
メスピンがなかったから指で抑えている。



プログラム https://github.com/shokai/msp430-study/tree/master/led_blink


買ったのは1ヶ月ぐらい前で、最初に公式のwikiみながら開発ツールをインストールしようとしたのだが
MSP430 LaunchPad Mac OS X – Texas Instruments Embedded Processors Wiki
このページに書いてある開発ツールどれもこれもビルドできなくてあきらめた。


昨日macportsでインストールしてる人を発見して、やりなおしてみた。
MSP430 LaunchPad をさわってみる.

開発ツールインストール

sudo port install msp430-gcc
sudo port install msp430-gdb msp430-libc mspdebug
1時間ぐらいビルド待ちした。


仮想シリアルポートのUSBドライバもMac用のは自分でビルドしろという面倒さなんだけど、
公開してくれている人がいた。
msp430lpcdc – LaunchPad OSX USB drivers (CDC /VCP) – Google Project Hosting
インストールして再起動すると /dev/tty.uart-48FF466E374B0C17 が現れる。


プログラム

最初はタイマーとか使わないでやりたかったのでnopnopした。

main.c
#include <msp430.h>
#include <stdio.h>

#define LED0 BIT0 // 0b00000001
#define LED1 BIT6 // 0b01000000
#define LED2 BIT7

#define LED0_ON P1OUT |= LED0
#define LED0_OFF P1OUT &=~ LED0
#define LED0_TOGGLE P1OUT ^= LED0
#define LED1_ON P1OUT |= LED1
#define LED1_OFF P1OUT &=~ LED1
#define LED1_TOGGLE P1OUT ^= LED1
#define LED2_ON P1OUT |= LED2
#define LED2_OFF P1OUT &=~ LED2
#define LED2_TOGGLE P1OUT ^= LED2

/** wait 1 sec **/
void delay(unsigned int d) {
unsigned int i;
for (; d > 0; d--) {
for(i = 0; i < 32767; i++){
nop(); nop(); nop(); nop(); nop();
nop(); nop(); nop(); nop(); nop();
nop(); nop(); nop(); nop(); nop();
nop(); nop(); nop(); nop(); nop();
nop(); nop(); nop(); nop(); nop();
nop(); nop(); nop(); nop(); nop();
}
}
}

int main(void) {
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= LED0 + LED1 + LED2;

while(1) {
LED0_ON;
LED1_OFF;
LED2_TOGGLE;
delay(1);
LED0_OFF;
LED1_ON;
LED2_TOGGLE;
delay(1);
}
}


ボードに書き込む

makeでコンパイルするとmain.elfができるので、mspdebugでprogしてrunすると動く。
% mspdebug rf2500
(mspdebug) prog main.elf
(mspdebug) run


参考にした

MSP430 LanchPad を gcc と mspdebug で Lチカしてみる.
kb8ojh.net – MSP430 – Example: Sleeping, Timers, and the Low-Frequency Clock
kb8ojh.net – MSP430 – Example: Morse Code Blinker with Delay Loop
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki


wikiの最初にあるhello_world.cが、いきなりputchar関数の中身は自分で埋めろという仕様になってて本当につらい環境ですね。
でもgithubでmsp430とか検索すると700個ぐらいコードがでてくるのでなんとかなった。