「MSP430」タグアーカイブ

MSPM0マイコン用のサンプルプログラムのビルド手順

超久しぶりにブログを書いてみる。

最初に断っておくと、私はまだ MSPM0マイコンのターゲットを何も持っていない。LaunchPadのひとつもあればいいけど持っていない。なので、以下は「開発環境でサンプルプログラムがビルドできました」という内容です。

TIが新しく発売を始めた、MSPM0マイコンは、今まで似た名前の、MSP430シリーズが独自の16bit CPUコアだったのに対して、ARM Cortex-M0+ CPUを内蔵したマイクロコントローラのシリーズだ。32bitになったのに、価格が安いのが特徴。 TIの人や代理店の話では、TIが自社工場で製造しているので価格のコントロールがしやすいのだそうだ。 (対するMSP430の方は、FRAMもあってプロセスの関係で自社工場に引き取るのはちょっとむずかしいのだとか。)

私はMSP430のプログラムをCCS (Code Composer Studio)を使ってコーディング、ビルド、ターゲットマイコンへの書き込みは経験しているので、MSPM0も同じようにできるだろうと思って試してみたらできなかった。
具体的には、CCSをインストールして (もちろんインストール時にMSPM0マイコンを使う選択をする)、FileメニューでNew→CCS Projectで新しいプロジェクトを作り、チップはMSPM0xxxxなど適当に選び、 Empty Project (with main.c) を選んで、空っぽに近い main.c のソースができたら、そのまま Build Project する。
これではエラーが出て、ビルドできなかった。

(ちなみに、MSP430だとこの手順でビルドの通るプロジェクトが作れる)

では、どうやればできるのか。
ここは素直に、まずは TIから用意されたサンプル・プログラムをそのままビルドしてみることにした。

まず CCSで、Getting Started の画面を出す。(起動直後には出ているが、表示されていなければ、メニューの View → Getting Statedで表示される)
Browse and Import Example を選ぶ。

すると、Create New Project の画面になるので、まずはターゲットボードか、デバイス (チップ)の型番を入れる。持ってないけれど LaunchPad の LP-MSPM0C1104を選んでみよう。途中までキー入力すると候補が出る。

ターゲットを選ぶと、その下に Choose a template that you would like… と出るので、下へスクロールしていって、
gpio_toggle_output というサンプルを選ぶ。名前からして、多分これがいわゆる 「Lチカ」だろう。



すると画面下に、Configure selected projectとでているが、ここで Compilerの欄はコンパイラを選択する必要がある。IARは、IAR Embedded workbenchを使う人用だと思うので、それ以外の、GCC か CCS-TI Arm Clangのどちらかにする。どちらを選んでもいい。
その後、右端の “CREATE”ボタンを押す。



デバイスは何か、とあらためて問われるので、MSPM0C1103を選ぶ。


この後であるが、

・MSPM0シリーズに必要な SDK などが、自動的にダウンロードされるなどの処理が始まる。
・そのあとで、サンプルプログラムの gpio_toggle_outputをダウンロードするかとダイアログが出るのでダウンロードを選ぶ。

ここまでやると、サンプルソースを含んだ、新しい Project ができあがる。gpio_toggle_output.c を見てみると、それらしい内容が書かれている。

メニューバーから Project → Build Project を選んでビルドしてみると、エラーも無く **** Build Finished **** がコンソールに出れば、無事、成功である。



さて、サンプルプログラムの場合はこれでよいとして、
自作プログラムをスクラッチで書きたい場合、空っぽのテンプレートをまず用意するには、どうすればいいのか? という疑問がわいてくる。

それについては、サンプルプログラムを選んだ画面で、上の方には
empty_mspm0xxxx という、空のプロジェクトのひな型が並んでいるリストがあるので、使用するターゲットデバイスのものを選んでプロジェクトを作れば、main() がほぼ空っぽのソースのプロジェクトが作れる。
この手順を踏んで、ソースの中身を書いていけばよさそうである。


観察していると気づくが、この empty project は “using DriverLib” と書かれている。
DriverLibは、MSP430のときにも提供されていた。ADCやタイマーやシリアルI/Oなど、色々な機能を利用するときに便利に使える関数群で、MSPM0でも同様の物であると推測される。

MSP430のときは、DriverLibを利用するとコンパイル後のコードサイズが大きくなってしまい、Flashメモリの少ないデバイスでは使いづらかった場合もあったが、MSPM0では利用するのが前提みたいな感じなのだろうか? (恐らくは利用しないやり方もあるのだと思うが、それは追々調べることにする)

という訳で、ここまでの解説が誰かのお役に立てば幸いです。

CCS v7の不具合 : No compilers are currently installed for this device-family.

Code Composer Studio v7.4 を起動して、Project -> New CCS project で新しいプロジェクトを作ろうとすると、

“No compilers are currently installed for this device-family. Click ‘View > CCS App Center’ to install a compiler before creating a project for this device.”

と表示され、テンプレートも何も選べない状態になることがある。
ついでに、既存のプロジェクトを開く事もできない。

どうやら Windows7起動直後、最初の1回はこうなってしまうようだ。

仕方なくCCSを一旦終了し、もう一度起動すると、正常に新規プロジェクトが作れるようになる。
なので、今はだましだまし使っている。

(追記)
あ、もしかして・・・と思って、試しにウイルスチェックソフトの「保護を一時的に無効にする」を設定して起動したら、1回目の起動でも正常に新規プロジェクトが作れる画面になった。

Graceで生成したソースコードをCCSで使うには (3)

前回 Graceで自動生成したソースを、CCSに取り込んでビルド、LaunchPadに書き込んで実行までをやってみる。
なお、ここで使っている CCS は現時点で最新の v7.4.0である。

まずCCSを起動する。Project → New CCS Project で新しいプロジェクトを作る。

New CCS Projectのダイアログで、使用するデバイス、プロジェクト名、プロジェクトのテンプレートを選択する。
プロジェクト名は G2452-GraceSA-Blink-Timer01 とした。テンプレートは Empty Project (with main.c) にしておく。

続きを読む Graceで生成したソースコードをCCSで使うには (3)

Graceで生成したソースコードをCCSで使うには (2)

前回 書いた手順で、Graceでコード生成 → CCSでビルド → LauncPadでLED点滅 (Lチカ)まで、以下、実際にやってみる。

仕様:

  • LaunchPad Value Line (MSP-EXP430G2)を利用
  • マイコンはMSP430G2452IN20を選択
  • CPUクロックは16MHzに設定
  • ポート P1.0 のLED を、正確に500msでON/OFFさせる
  • 500msを作るために32.768KHzの水晶振動子を外付けし、LED点滅タイミングのクロック源とする
  • タイマー割込みを使用する

まず Graceスタンドアロン版 を起動する。

続きを読む Graceで生成したソースコードをCCSで使うには (2)

Graceで生成したソースコードをCCSで使うには (1)

(前回の続き)

Graceスタンドアロン版で生成したソースコードを、CCSで使うには、若干の編集作業が必要になる。以下のサイトの記事が参考になる:
CCSv7 Grace Migration

このページの解説は、GraceがCCSのプラグイン方式だった頃に作成したプロジェクトを、最新の CCS v7.x などに持ち込む際の移植の手順を説明しているのだが、この手順が、スタンドアロン版のGraceの出力をCCSに持ってくる際にもヒントになる。

手順としては、だいたい以下のようになる:

  • (step-1) Grace側で使うマイコン・使う内蔵周辺を設定し、コード生成させる。
  • (step-2) CCS側で、新しい空のプロジェクトを作る。 C言語で main()があるだけのプロジェクトでいい。
  • (step-3) (step-1)で生成したコード一式を、CCSのプロジェクトの中へコピーする。
    ただし、CSL_init.c は不要なので持ってこない。
  • (step-4) Grace.h をCCSのプロジェクトにコピーする。
    main.cソースの中で Grace.hをインクルードしている行を、参照できるように「#include “grace.h”」のように修正する。
    main()の中の先頭で、一回 「Grace_init()」を呼ぶようにする。
  • (step-5) CCSでビルドする。

(続く)

まだ使える Grace

(前回から、続き)

Graceは、MSP430内蔵の各種周辺I/O機能の初期化ルーチンや、割込みルーチンのコードを自動生成してくれるツールだ。
GUI画面で自分の使いたい周辺ブロックを選択肢、必要な項目をうめていくと、人が読める形の Cのソースコードを生成してくれる。

Grace Quick Start Guide (Texas Instruments Wiki)

Grace Quick Start Guideのトップページ

「人が読める形のソースコード」を出してくれる所がミソで、コメントもしっかり入っていて、ベテランが「こういうコードを書けばいいよ」と、お手本を教えてくれている感じがする。
それだけでなく、あとから仕様変更、例えば 入力や出力に使うGPIOピンを変更したくなったら、GUI画面の設定にもう一度戻ってもよいが、ソースを直接、自分で編集すれば早い。

Graceは以前は、CCSに組み込んで使うプラグインの形で提供されていたが、残念ながら CCS v6.1.2を最後にサポートは終わり、プラグイン形式では提供されなくなった。
だが、Grace単独で使える、スタンドアロン版も公開されており、今でもダウンロードして使える。

ダウンロードのページはこちら。
Grace – グラフィカル・ペリフェラル設定ツール
「GRACE-CCSV6:」 「GRACE-CCSV4: 」とあるのがCCSのプラグイン版 (今でている最新版 CCS は v7.4 なので使えない)
スタンドアロン版は「GRACE:」とだけ書かれた、一番下の項目。 なお、ダウンロードにはユーザー登録 (TIサイトの my TIのアカウント) が必要なようである。

さて、ダウンロードしてインストールするだけですんなり使えるかというと、少しコツが要る。
基本的には、Graceでコード生成したものを、CCS側で作ったプロジェクトにコピーして取り込めばよいのだけど、手加工が必要な部分がある。
それについては次回。

(続く)

20ピンのMSP430マイコンを楽に使おう

MSP430が好きだ。
PICやAVRマイコンよりは人気も知名度も低そうだし、秋葉原で購入できる品種は限られているが、自分が便利に使えれば人気は関係ないし、通販を使えば豊富な品種が購入できる。

書き込みツールは、1万いくらするJTAGエミュレータではなく、Launchpad MSP-EXP430G2 から、Spi-Bi-Wire の線を引き出して使えば足りる。 解説「MSP430 Launchpadを書き込み器に流用する」を以前書いた。

20ピンDIP品のMSP430G2452、MSP430G2553 と、同チップのLaunchPadならば、秋月電子通商で安定して入手できる。

秋月電子で取り扱っているMSP430関連製品

MSP430マイコンで、Cでプログラムを書くには、以下のような、何通りかの流儀がある:
(1) ベアメタルで書く
(2) DriverLibを利用する
(3) Graceを利用する
(4) Energiaを利用する

# TIの日本語のサイトにも、「コーディングスタイルの選択」という解説ページがある。

自分にとって初めての品種のマイコンを使う時、プログラミングの課題は、内蔵されているA/DやらUARTやらI2Cなどの、豊富な周辺(ペリフェラル) I/O機能を、いかに楽に使いこなせるかにかかってると思う。

先に(4)のEnergiaに触れると、これは ArduinoのMSP430版みたいなもので、各種I/Oにも簡単にアクセスできる関数類が用意されている。よくできているのだが、Arduino同様、デバッグが弱い。ブレークポイントを張ったり、止めて変数の値を見たりはできない。

Code Composer Studio (CCS) を使う場合、まず、自分で1から周辺I/Oの仕様・機能をデータシートを読んで理解し操作する、(1)の流儀がある。(こういうのを「ベアメタルで」と呼ぶらしい) TIのサイトに各種I/Oを動かすサンプルコードが、MSP430の品種毎に公開されているので、コピペして使えば大体動く。ただ、サンプルにない使い方をしたい場合は、自分で頑張る必要があり、悩むケースもある。

(2)のDriverLib、これはTIが用意したライブラリで、CCSでプロジェクトを新規作成する時、この選択肢がでる品種に限り、利用する事ができる。Cの関数の形で各種APIが用意されていて、ドキュメントも揃っている。
ただし、MSP430FR4133とか、FR5739 などの、仕様的に大きいチップでのみサポートされているようだ。

20ピンの品種である MSP430G2553 では DriverLibは用意されていない。
ではベアメタルでやるしかないのか?
ここで強力な助っ人が、(3)のGraceだ。

(続く)

MSP430 マイコン温度ロガー ソースコード公開

MSP430G2553と、I2C接続の温度センサ、EEPROMを使用した、温度ロガープログラムのソースを公開します。

本プログラムの実行には、上記 周辺ICの接続された回路と、USB-シリアルなどの PCとの接続手段が必要です。
(回路図は 以前掲載したこれ。KiCad版。)
また、シリアル端末からのコマンドや取り扱い説明など、本来、色々ドキュメントが必要であり、それら無しでは単なる不親切なモノでしかないのですが、追々揃えていくつもりです。

ダウンロードページはこちら

これは、温度ロガー基板を冷凍庫に入れて測定した結果をダンプし、Excelでグラフ化したものです。 -18℃といった温度が記録できています。
リチウムコイン電池、CR2032 は、カタログ上は -30℃まで使用できるようです。

冷凍庫の温度ログ
冷凍庫の温度ログ

KiCad を試す

MSP430の温度ロガー回路、回路図をテキストファイルに罫線で描いていた物を、いいかげん 回路図CAD図面化しようと、とりあえず KiCad を使って入力してみました。

KiCad Screen Shot
KiCad Screen Shot

MSP430 温度ロガー 回路図 (PDF)

KiCad の回路図エディタの使用感ですが、OrCad や LTspice など、Windows上で動く、今まで色々経験してきた回路図エディタと比べると、操作性にクセがあって直感的になじめない感じ…というのが第一印象です。 慣れてくれば戸惑いは減るかも知れませんが。
DesignSpark もフリーで使えるので、試してみようと思います。

まだ、とりあえず入力してみただけなので、基板化を意識した入力になっていません。ゆくゆくは発注して作ってみたい所ですが、それには適当に選んでいた部品を、部品種も正確に選ぶ・・・例えば抵抗ひとつにしても、リード型かチップの1608か、等が必要になると思います。