Sim's blog

電子工作はじめてみました

TI MCU入門セミナーに行ってきました

2009-10-05 20:49:49 | MSP430
TIのMCU入門セミナーに行ってきました。
内容はTIのマイクロコントローラMSP430C2000Stellaris(ステラリス)の紹介です。

お目当てはTIのCortex M3、StellarisとUSBに対応した新しいMSP430です。Stellarisは、やたら速いというか、なんでも1クロックなCorex M3だそうです。イーサ(PHY+MAC)やUSB(含むon the go)を搭載したモデルもあります。驚いたのは、やたらキットがいっぱい並んでいたことです。普及のためと思われますが、気合はいりまくりです。キットのためにLuminary Microという会社を買収したみたいです。USBのライブラリなんかも気前よく無料だそうです。

新世代のMSP430(F5xxシリーズ)は、ついにフラッシュ書き込み電圧が1.8Vになっています。たしかF4が2.7V、F2が2.2Vと時代を経るに従ってどんどん電圧が下がっています。LDO搭載でUSBの5Vから3.3Vを作れるそうです。

pascalさんにお会いできました。プラスチックケースを削る機械を導入されたそうで、ケースにはいったそろばんを展示されていました。

eZ430-Chronos

2009-09-25 07:07:20 | MSP430
eZ430-Chronosという製品がTIから出ているようです。スポーツウォッチ(万歩計?)を自作できるマイコンボードということでしょうか。無線機能もあるので、色々なことができそうです。まだ情報は少ないようです。


TIのeZ430-Chronos Wireless Watch Development Toolのページでは供給中になっています。915、868、433と3種類あるのは、たぶん無線通信の周波数じゃないかと思います(915MHz、868MHz、433MHz)。
IARの「Design your own eZ430 Chronos watch with IAR visualSTATE」というページでも紹介されています(ビデオがあります)。

TIからダウンロードできるslyt318.pdfに概要が載っています。pdf自体の日付は9/5なので、かなり最新の情報と思われます。
cpuはMSP430に無線がついたCC430です。Spy Bi-Wireのインタフェースがついているので、外部からプログラムを書き込むことができるみたいです。3軸加速度センサや圧力センサがついていて、もちろんバッテリーも搭載されています。

キットには、
- eZ430 emulator for programming
- USB-RF access point for PC communication and debugging
- CC430 based watch
が含まれるとあるので、とりあえずこれだけあれば開発には困らないと思われます。

digikeyには(まだ?)載っていないみたいでした。手っ取り早く入手する方法は、TIのMCU入門セミナー2009に参加することです。会場で直接買えるわけではないと思いますが、割引きで買うことができるみたいです(参加者特典のページ)。3150円って、安すぎです。
セミナーではStellaris(ステラリス、TIのCortex-M3)の紹介なんかもあるみたいです。

TIMER_AでPWMする

2008-08-25 23:44:56 | MSP430
ツインT発振器の続きです。トラ技9月号のマルチテスターキットで色々な波形を見ようとしています。

MSP430のTIMER_AはPWMができるようになっています。色々なduty比のパルスが見れます。
#include <msp430x20x3.h>

void main(void)
{
    int duty = 1000;

    WDTCTL = WDTPW + WDTHOLD;   // WDT停止
    P1DIR |= 4;                 // P1.2を出力にする
    P1SEL |= 4;                 // P1.2をTA1にする
    CCR0 = 2000 - 1;            // PWM周期(500Hz ... 2ms)
    CCTL1 = OUTMOD_7;           // CCR1 reset/set
    CCR1 = duty;                // CCR1 PWM duty cycle
    TACTL = TASSEL_2 + MC_1;    // SMCLK, up mode

    _BIS_SR(CPUOFF);            // LPM0に入る
}

ソースはTIが公開しているサンプルを参考にしました。

使っているのはF2013です。F2013は何も設定しないと1MHzで動作しています。up modeだと、CCR0に設定した値になると0に戻る動作をします。2000にしているので、2ミリ秒で1周期です。途中でCCR1になったところで出力が反転します。出力はP1.2なので4pinです。

duty = 1000 (1:1)

0.5ms/divで4divくらいなので1周期2ミリ秒で、計算どおりです。

デバッガでduty = 1000;の代入が終わったところまで動かしてから、dutyの値を書き換えてやるとデューティ比が変わります。定数を変えても再コンパイルや書き込みがいらないので、ちょこちょこっと試すのには便利です。

duty = 500 (1:3)


duty = 1500 (3:1)


実験の様子です。

右の方にいるICがMSP430 F2013で、右上にいるeZ430を使って、書き込み/デバッグしています。左上の方にいるのは前回のツインT発振器です。

TIの無料コンパイラCCEはeclipseベースなので結構重いですが、とても便利です。

CCEの検証

2008-06-23 03:06:40 | MSP430
TIの無償開発ツールCode Composer Essentialsで使えるコードサイズについて調べてみました。
CCEのページには「CCE v3(MSP-CCE430)は無償で、最大 16K バイトのコード領域をサポートします。」と書かれています。コードとデータを合わせて16kバイトなのか、それともコードだけで16kなのか、よく分かりません。
言葉があいまいというか、コードサイズというとデータを含む場合もあったりします。わざわざコード領域という言葉を使っているということは、データ抜きの純粋なコードサイズのみで16kバイトという意味なのかもしれません。もしそうならラッキーです。


検証用に書いてみたコードは次のようなものです。
#include "msp430x42x0.h"

static const char x[0x6000] = {1};

main()
{
    int i;

    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0x01;

    while(1){
        for(i = 0; i < sizeof(x); i++){
            P1OUT ^= x[i];
        }
    }
}

ROM領域に24kバイトの配列がいます。先頭だけ1でそれ以外は0です。
コード自体はとても小さいですが、データは大きいプログラムです。
このプログラムはCCEで何の問題もなくコンパイルできて、さらにトラ技2007年1月号のMSP430-F4270基板で動きました。
デバッグ開始時のメッセージは以下のようなものでした。

MSP430: Program loaded. Code Size - Text: 254 bytes Data: 24608 bytes

CCEで制限されているコードサイズはTextの部分じゃないかと思います。

MSP430-F4270はROMが32kバイト(8000-ffff)、RAMが256バイト(200-2ff)です。配列xは8000-dfffの24kバイトでした。プログラムの先頭はe000でした。

とりあえずデータのサイズに制限がないなら事実上無制限といってよいくらいだと思います。


次に16kバイト以上のコードを作ってみます。
#include "msp430x42x0.h"

main()
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0x01;
    
    while(1){
        P1OUT = 0x00; // LED点灯 (2000個)
        P1OUT = 0x00;
        省略
        P1OUT = 0x00;
        P1OUT = 0x00;

        P1OUT = 0x01; // LED消灯 (2037個)
        P1OUT = 0x01;
        省略
        P1OUT = 0x01;
        P1OUT = 0x01;
    }
}

ひたすらコピペして作りました。P1OUTに代入する行が4036個のときのコードサイズが16382バイトでした。つまり16kバイト-2バイトです。ちなみに1行毎に4バイトかかります。1行追加して16kバイトを2バイト超えたときにリンカーのエラーが出ました。エラーメッセージは次のようなものでした。

error: output file "test3.out" exceeds code size limit

コードサイズは16kバイトを超えられないようです。

試しに1024バイトの配列を参照するようにしてみました。デバッガでロードしたときのメッセージは

MSP430: Program loaded. Code Size - Text: 16384 bytes Data: 1054 bytes

になりました。TextセクションとDataセクションをあわせると16kバイトを超えていますが、コンパイルもリンクも問題なく通りました。


まとめると、CCEの無償版はデータを含まない純粋なコードは16kバイトを超えられないがデータのサイズに制限はなく、コードとデータを合わせて16kバイトも超えることはできる、ということになります。
とてもうれしい結果が出ました。

Code Composer Essentials V3を使ってみました。

2008-06-22 23:49:34 | MSP430
Code Composer EssentialsTIMSP430用のCコンパイラです。6/5に開催されたTIのMSP430入門セミナー2008に参加したとき無料版があることを知りました。ダウンロードするのにmy.TI accountに登録する必要があります。
バージョンは3.2.1.1.5です。

「CCE v3(MSP-CCE430)は無償で、最大 16K バイトのコード領域をサポートします。」と書かれています。以前使ったIARはアセンブラなら無制限、Cなら4kバイトでした。このあたりは要検証です。

IDEはEclipseです。日本語化されていないのでメニューとかは英語です。設定を変えるとソースに日本語をいれることもできます。逆に言うと設定を変えないと日本語がいれれません。

on chip debugもサポートしています。eZ430やトラ技2007/1のJTAGデバッガが使えます。hamayanさん設計のデバッガの基板はマルツで入手できます(リンク)。一応、どちらも動作することを確認しました。

eZ430用のLEDチカチカです(<が全角になっています)。
#include "msp430x20x3.h"

main()
{
    int i;
        
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0x01;              // P1.0出力

    while(1){
        P1OUT ^= 0x01;
        for(i = 0; i < 10000; i++) ;
    }
}

debugモードでbuildすると、そのままで動きます。releaseモードでbuildすると最適化のせいでforがなくなってしまってウェイトなしになります。超高速で点滅しているので、ずっと点いているように見えます。forループに_nop();をいれるとループが消えることはなくなります。
最適化でループが消えるときの常道はvolatile宣言にすることです。変数iをvolatile int i;のように宣言すると、ループが消えることはなくなります。ただし変数がメモリの上に取られるようになるので結構遅いコードになります。

debugモードでも変数iをregister宣言すると(register int i;)、律儀にレジスタに割り付けてくれます。releaseモードだとregister宣言がなくてもレジスタに割り付けてくれます。ただしループが消えるのでreleaseモードのときは_nop();付きです。
volatile宣言すると、debugモードでもreleaseモードでも変数iはメモリに割り付けられました。試しにregister volatile int i;という宣言をしてみましたが、メモリに割り付けられました。
結構かしこいです。

MSP430入門セミナー2008に行ってきました

2008-06-05 00:53:35 | MSP430
品川開催の午前の部に参加してきました。
前半は製品概要の説明、後半は嵐意x5xxシリーズの話やツールの話なんかがありました。
既にきぃたんさんがご紹介くださっています。

x5xxは6/10に正式発表があるとのことです。最高クロックが今までの16MHzから25MHzに高速化されるみたいです。MSP430Xコアなのでアドレスが1Mまで拡張されています。

(株)ビックスでeZ430のピッチ変換が近日発売だそうです(VICSのMSP430開発支援ツール)。
VICSでは格安のボードを色々販売されています。特にVMSP430-H2274はeZ430を直接つなげるので、よさげです。

日立ハイテクトレーディングがMSP430を使ったIEEE802.15.4センサネットモジュールを展示していました。
センサネットワークモジュールがいくつも展示されていました。

生パスカルさんにも会えました。パスカルさんの所のデモの一部です。バックライト付です。

(詳しくは掲示板のこの記事です)

知らなかったのですが、開発ツールにはMSPGCCがあるそうです。また、TIが提供しているCode Composer Essentials(CCE)は無償版でも16KBまでコードが作れるそうです。

6/6追記 mspgccのことはトラ技2007/1にも載っていますし、すんさんmasatoさんも試されています。たぶん当時は知っていたはずなのですが、自分で試していなかったので、すっかり忘れていたようです。

これまた知らなかったのですが、A/Dした結果をCPUを介さないでDMAで直接転送できるモデルがあるそうです。

おみやげにeZ430-RF2500をいただきました。基板が赤くてかっこいいです。
電波を使うような使い方は法律違反になる危険性があるので注意が必要とのことでした。単体の普通のマイコンとして使う分には問題なさそうです。
eZ430-F2013と違ってコネクタが6ピンに増えています。一応上位コンパチで、増えた2本は左右の2本で中央の4本は以前と同じです。

帰りがけにhamayanさんにばったり会っちゃいました。示し合わせていたわけではないのですが、偶然一緒の時間にしていたみたいです。まるで冬ソナみたいな運命の出会いです(笑)

ちっちゃなマイコンボードをいっぱい見れて幸せな気分にひたってきました。

MSP430 アドバンストテクニカルセミナー

2007-11-22 01:19:28 | MSP430
MSP430 アドバンストテクニカルセミナーというのが開催されるそうです(
エレキジャックの記事)。
12/4 秋葉原UDXホールです。この前と一緒の場所ですね。参加無料、事前登録制だそうです。参加申し込みはこちら
ご来場の上、アンケートご記入頂いた方全員にMSP430F2274開発ボードをプレゼントすると書かれています。
このボードはVICSという会社が開発したもののようです(URL)。なんといっても、ez430で書き込みができるのがうれしいです。VICSではオンラインショップで通販もしているようです。

MSP430F2274:
Flash 32KB, RAM 1KB, 10bitADC、Opamp(2)、I/O(32)、
USCI(1ch:UART/Lin/IrDA/SPIおよび1ch:SPI/I2C)
A/DとかD/Aの他にオペアンプまで載ってる?

ET2007に続き、生パスカルさんに会える機会です。

行けたら行きたいなあ・・・

MSP430入門セミナー2007

2007-08-02 00:06:05 | MSP430
秋葉原会場の午後に参加しました。
写真は参加者に配られた容量性タッチパッド基板です。左側についているのはMSP430のF2013です。
上の方にeZ430につながる4pinのコネクタがついています。

eZ430につなげてみました。右側が元々ついていたくらげちゃんです。


今回入手したF2013はどれもrev. Bでした。

タッチパッドに触るとLEDが光ります。4つのパッドがあって各々数字が1~4と書いてあります。4が一番暗くて1が一番明るく光ります。感度はよくて、触ったのに光らないとかはないです。個別にパッドが読めているかは出力だけからはよく分かりません。一応、同時に触ったときは明るい方になっているみたいです。

表面に見えている部品は抵抗が5個とコンデンサーが1個です。spy-bi-wireのpull-up用に1個、LEDの電流制限用に1個です。1個は電源ラインにはさまっているので(用途不明)、残り2個でタッチパッドを制御していることになります。基板の裏のパターンは電池ボックスで隠れていて見れません。

基板裏はメッシュになっていますが、たぶんグランドパターンです。PSoCセミナーではCapSenseを動かすのにグランドパターンをメッシュにしろと言っていました。

現行のspy-bi-wireは4pinですが、この基板では6pinにできるようなパターンになっています。セミナーの話だとUARTもできるように拡張する予定だそうです。USBでデバッグするだけでなく、PCアプリと通信もできるようになるということみたいです。