趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • MSP430F2013のADコンバータを試す

    投稿日 2011年 10月 4日 コメントはありません

    Lチカデバッグ環境ができたところで、次に内蔵ペリフェラルを試します。

    MSP430LaunchPadには、MSP430G2231が搭載されています。しかし、今回試すのはMSP430G2311ではなく、秋月で300円で売っているMSP430F2013です。なぜこのチップを選ぶかというと、他のワンチップマイコンでは10bitとか12bitがせいぜいなのですが、このチップは他のワンチップマイコンでは類を見ない16bitのシグマデルタ方式のA/Dコンバータを内蔵しています。さらに、入力は差動入力になっていて、1~32倍のプログラマブルゲインアンプ(PGA)を持っています。ですので、センサをつないだときの分解能が大幅にアップするはずです。

    しかし、普通のワンチップマイコンでは10~12bitの分解能のA/Dコンバータしか搭載していないのは、CPUというデジタル回路がノイズ源になるため、高分解能のA/Dコンバータを搭載しても実力としてそれだけの分解能が得られないというところにあります。したがって、MSP430F2013のA/Dコンバータを使いこなすためには、CPUを初めとしたデジタル回路の影響を抑えることを考えなければなりません。

    そういう視点で、MSP430F20xxのコードサンプル(msp430x20x3_sd16A_02.c)を眺めてみると、WDTとLPMを使ってデジタル系の動作をなるべく抑えた状態でA/D変換を行っています。

    まず、WDTは32msのインターバルタイマとして使っていて、A/D変換の設定後にWDTを起動したら、LPM0に状態遷移してCPUの動作を停止させてしまいます。そして、停止中にその割り込み処理ルーチンの中でA/D変換のスタートをかけています。そうすることにより、チップ内のざわざわとした動作がA/D変換に与える影響や、A/D入力インタフェースのレベルが落ち着く前にA/D変換してしまうのを抑制しているようです。その結果として、(LaunchPad基板では)チップ内蔵温度センサやオフセット電圧の測定ではPGAのゲイン=1の状態で測定値のばらつきが1~2LSB程度に抑えることができています。(実験では、他の動作を行いながらA/D変換をさせると最大で8LSB程度暴れていました)

    外部回路をつけるとその作りなどに影響されるので結果がまた変わってきますが、今度はセンサをつないでみたいと思いますが、面倒なのは外部入力インタフェースのインピーダンスがかなり低い(1kΩ程度)ようなので、バッファをつけてやらなければならないのが面倒くさいです。

     


  • Lチカ通信でMSP430デバッグ

    投稿日 2011年 10月 3日 コメントはありません

    MSP430の開発環境が整ったところで、デバッグ手法を考えているのですが、今回使うMSP430F2013は、ROMの容量が2KBと小さく大した手法は使えませんので、ChaNさん提案のLチカ通信にすることにしました。

    今回作ったターゲットのPCとの接続部分は秋月のAE-UM232R(FT232RL USBシリアル変換モジュール)を使いました。

    ターゲットとの結合部分はChaNさんの回路そのままですが、PCのRS-232Cとは論理が異なるので、インバータ(7S04)は削除しています。

    センサには、秋月で150円で売っているPiNフォトダイオードS2506-02を使いました。

    ターゲットボードとは以下のような感じで結合します。

    この状態で、安定して38400bpsでの通信が可能です。115.2kbpsもセンサの距離を調整すれば通信できるのですが、ややシビアです。オシロで波形をみると波形の立ち上がりが鈍っているので、抵抗値をもう少し小さくすれば安定するような気がします。(面倒なのでそのままにしていますが)

    また、緑のLEDが隣にありますが、PiNフォトダイオードの感度特性が波長の長い方に偏っているせいか、あまり影響は受けないようです。


  • Ubuntu11.10でMSP430開発環境を構築

    投稿日 2011年 10月 2日 コメントはありません

    昨日のブログに書いたのですが、Ubuntu11.10(Oneiric)ではMSP430の開発環境がサポートされていそうな雰囲気だったので、ちょっと確認してみました。

    Ubuntu11.10(Oneiric)は現時点ではβ2です。ダウンロードしてきて、HDDにインストールしてみました。

    まず、UIがUnityに変わっているので面食らいます。これに関しては11.04(natty)が対象ですが、こちらのサイトで(インストールの方法と)インストール直後の扱いについて確認できます。Unityで一番面食らうのが、アプリケーションの起動方法と起動した後、ツールバー(メニュー)がないことでした。アプリケーションの起動は「Dashホーム」でアプリケーションの名称を入力する(!)ことで、候補が表示されます。いったん起動した後は、「ランチャーに常に表示」を設定することで、左側のランチャーから起動できるようです。ツールバーについては、各ウインドウの上についているのではなく、アクティブになっているウインドウのツールバーが画面全体の一番上の部分に表示されています。これで最近のワイド画面液晶でも少しでも広く縦のエリアを確保しよう、ということなのでしょう。

    で、こちらの検索結果からたどっていくと、universeパッケージになっているようなので、/etc/apt/source.listの中で、universeが指定されている行を見たのですが、特にコメントアウトされているところはありませんでした。すなわち、apt-get でパッケージを指定すればインストールされそうなものなのですが、実際にはインストールできません。

    しかし、各ページにはdebianのパッケージ(.debファイル)がありましたので、依存関係を考えて、

    1. msp430mcu
    2. binutils-msp430
    3. mspdebug
    4. gcc-msp430
    5. msp430-libc
    6. gdb-msp430

    の順で、インストールしたところ、すべてインストール自体はできました。

    まず、mspdebugはroot権限では動作しました。/etc/udev/rules.d の下にスクリプトを置いて、ユーザー権限でアクセスしようとしても、パーミッションで怒られますので、何か追加の設定が必要なのでしょう。

    それ以外はサンプルプログラムのコンパイル、動作確認も昨日と同様にうまくいきました。mspdebugがroot権限を要求するところだけが違いですね。


  • MSP430 LaunchPadの開発環境構築

    投稿日 2011年 10月 1日 コメントはありません

    たまたまWebサーフィンしていたら、MSP430のLinux開発環境について記載されているページがあったので、追試を兼ねて環境構築してみることにしました。

    内容物はこれ。エミュレータ機能付きのターゲットボード(MSP430G2231付き)と、予備?のMSP430G2231、32.768kHzのクリスタル、いかにもブレッドボードにつないでください、という感じのヘッダソケット、シールです。

    で、今回の情報元はここです。詳しくは直接情報元を参照してもらうとして、Ubuntu10.04LTSで追試した際の手順だけ記載します。赤字で書いた部分がオリジナルとの差分です。おそらく、オリジナルの環境では texinfo がインストールされていたのでしょう。

    1) subversionのインストール
    ・・・・すでに入ってました。

    2) texinfoのインストール

    $ sudo apt-get install makeinfo

    で texinfo をインストールします。そうしないと途中で「makeinfoがない」と怒られて終了します。

    3) 作業用ディレクトリを作る

    $ cd ~
    $ mkdir mspwork
    $ cd mspwork

    4) ソースの入手

    $ svn co https://mspgcc4.svn.sourceforge.net/svnroot/mspgcc4 mspgcc4

    5) コンパイル

    $ sudo ./buildgcc.sh

    を実行すると、構築するツールのバージョンやディレクトリをいくつか聞いてきます。Insightはwgetでダウンロードするところで 404 Not Found で引っかかるので、InsightとGDBは構築しないことにして、それ以外は今回はすべてデフォルトにしました。
    最後に、「今構築するか?」と聞いてくるので、そこだけ「今構築する」に変更しました。そうすると、勝手に binutils や gcc のソースなどをダウンロードして構築してくれます。

    6) パスの修正

    パスに「/opt/msp430-gcc-4.4.3/bin」を追加します。具体的には、.bashrc の最後の行に、

    PATH=$PATH:/opt/msp430-gcc-4.4.3/bin

    を追加します。

    7) mspdebugを書き込みツールとしてインストール

    ソースコードを mspdebug の sourceforge のページからダウンロードしてきて、コンパイルする。(ubuntuはパッケージがあるようなことが書いてあるが、実際にはない *後述)

    $ tar xvfz mspdebug-0.17.tar.gz
    $ cd mspdebug-0.17
    $ make WITHOUT_READLINE=1
    $ sudo make install

    8) LanuchPadのパーミッション変更

    ルート権限で以下の内容のファイルを /etc/udev/rules.d/z99_msp430launchpad.rules として作成します。

    ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666", GROUP="plugdev"

    その後、

    $ sudo /etc/init.d/udev reload

    として設定を有効にします。

    9) LaunchPadの動作確認

    LaunchPadを接続して動作確認します。開封直後の状態で接続すると、2つのLEDが交互に点滅します。

    この状態で「mspdebug –usb-list」でデバイス一覧が表示されるのを確認しました。(マニュアルはこっちを参照)

    $ mspdebug --usb-list
    Devices on bus 005:
        005:001 1d6b:0001
    Devices on bus 004:
        004:001 1d6b:0001
    Devices on bus 003:
        003:001 1d6b:0001
    Devices on bus 002:
        002:002 0451:f432 eZ430-RF2500 [serial: E3FF4225A511471A]
        002:001 1d6b:0001
    Devices on bus 001:
        001:002 13fd:1040
        001:001 1d6b:0002

    となるので、eZ430-RF2500として認識していることがわかります。

    そこで、「$ mspdebug rf2500」とするとLEDの点滅が止まり、以下の表示がされてコマンド入力待ちになります。

    $ mspdebug rf2500
    MSPDebug version 0.17 - debugging tool for MSP430 MCUs
    Copyright (C) 2009-2011 Daniel Beer <dlbeer@gmail.com>
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    Trying to open interface 1 on 002
    Initializing FET...
    FET protocol version is 30001000
    Configured for Spy-Bi-Wire
    Set Vcc: 3000 mV
    Device ID: 0xf201
    Device: MSP430G2231
    Code memory starts at 0xf800
    Number of breakpoints: 1
    fet: FET returned NAK
    fet: warning: message 0x30 failed
    
    Available commands:
        =         delbreak  gdb       load      opt       reset     simio
        alias     dis       help      locka     prog      run       step
        break     erase     hexout    md        read      set       sym
        cgraph    exit      isearch   mw        regs      setbreak  
    
    Available options:
        color           gdb_loop        iradix
        fet_block_size  gdbc_xfer_size  quiet           
    
    Type "help <topic>" for more information.
    Press Ctrl+D to quit.
    
    (mspdebug)

    この状態で「run」コマンドを実行すると再びLEDの点滅が始まり、CTRL+C でブレークをかけることができました。

    また、「hexout 0xf800 0x800 original.hex」で元々書き込まれていたプログラムを読み出して HEX ファイルに格納できました。続けて「erase」でflashの消去、「prog original.hex」で再プログラミング、「run」で点滅を再現させることができました。

    10) コンパイルと実行の確認

    参考にさせていただいたこちらのページのまんまで完全に動作しました。

     

    ということで、最低限の環境構築ができました。できれば gdb と Insight も動かしたいところですが、とりあえずはここまでということで。

    あと、launchpad.net(こっちは Canonicalが管理している方です)のこちらのページこちらのページを見ると、どうもubuntuの11.04(natty)や11.10(oneiric)ではMSP430開発環境がパッケージでサポートされているっぽい感じです。時間があれば確認してみたいと思います。