[独習mbed] mbed はじめました
手を出すのが遅かったけど、気になっていた mbed を入手したので、こんにちは。ウワサによれば、Serial, SPI, I2C, PWM などのマイコンでよく使われる機能に加えて、イーサ接続やら USBホスト機能まであるらしい。安いBluetoothドングルが使えるじゃないか。しかも、☆Board Orange という評価ボードも揃えれば、そのあたりの機能がすぐ試せるっぽい。すごい。
購入
- スイッチサイエンスさんから購入
http://www.switch-science.com/products/list.php?category_id=51 - 注文してから2営業日で届いた。はやい。
- Amazonでmbed関連商品を見る http://amzn.to/SRYSNX
デバイスの接続と登録
- mbed を USBケーブル で Mac に接続する
- MBEDというデバイスが Finder に現れるので、MBED.HTM をダブルクリック
- 個体ごとの signup code を含んだ開始ページへリダイレクトし、そのまま Signup すると登録できる。
再度登録しようとすると、This board’s signup code has already been used! とか言われる
ビルドサイクル
- クラウドにIDE(mbed Compiler という名前)があるので、そこで書く
https://mbed.org/compiler/ - コンパイル(Compileボタン)するとバイナリがダウンロードされる。これを mbed(のFlash)に保存する。はやい。
- mbed をリセットするとFlashにある最も新しいバイナリがロード&実行される。かんたん。
デバッグ
- Debugging – Handbook | mbed http://mbed.org/handbook/Debugging
- シリアル接続したMacに printf() できる
- error() というのもあって、エラーをコンソールに出力 + LED点滅 + 実行停止
- デバッグ。printf()やgetc()を使う – 強火で進め http://d.hatena.ne.jp/nakamura001/20101129/1291060437
- screen だとキャリッジリターンしてくれなくて表示が微妙なので、coolTerm とかアプリ使うといいよという話
http://freeware.the-meiers.org/
- screen だとキャリッジリターンしてくれなくて表示が微妙なので、coolTerm とかアプリ使うといいよという話
- デバッガ欲しいな
mbedのソースコード
- /mbed/trunk – libraries – Trac http://mbed.org/projects/libraries/svn/mbed/trunk
- mbed.h からたどると、いろいろ定義がわかる
- mbed.hには stdio.h, stdlib.h, string.h, math.h, time.h など標準Cライブラリ(の一部)や、Base派生のライブラリが予めインクルードされている。全部入りって感じ
- PinNames.h: typedef enum PinName PinName
ということで、多くのクラスのコンストラクタ引数に与えられる PinName は enum で、LPC_GPIO0_BASE(=0x2009C000UL) から始まり、P0_1 〜 P4_31 の LPC1768ピン配置の列挙と、mbed のピン番号や LED1 などの別名の定義が書いてある。
http://mbed.org/projects/libraries/svn/mbed/trunk/PinNames.h- LPC_GPIO0_BASE は PinNames.h からインクルードをたどった先の、LPC17xx.h で定義されている
http://mbed.org/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h
- LPC_GPIO0_BASE は PinNames.h からインクルードをたどった先の、LPC17xx.h で定義されている
Hello world !!
以下のサンプルで動作確認。うごく。
- LED チカチカ
- mbedを始めましょう!(“Let’s get started!” in Japnaese) | mbed
http://mbed.org/users/nxpfan/notebook/lets_get_started_jp/
- mbedを始めましょう!(“Let’s get started!” in Japnaese) | mbed
- LCD に Hello world
- ☆board Orange: mbed評価用ベースボード(in Japanese) | mbed
http://mbed.org/users/logic_star/notebook/star_board_orange/
ピン配置だけ気をつけて
- ☆board Orange: mbed評価用ベースボード(in Japanese) | mbed
- Amazonでmbed関連商品を見る http://amzn.to/SRYSNX
My Hello world
ようはLEDチカチカなんだけど、4つあるので順に点灯で往復させてみた。
#include "mbed.h" #define NUM_LEDS 4 #define WAIT 0.5 PinName ledNames[NUM_LEDS] = {LED1,LED2,LED3,LED4}; DigitalOut *led[NUM_LEDS]; int main() { int i; for ( i=0; i<NUM_LEDS; i++) { // C++ なんで、new とか使ってみる led[i] = new DigitalOut(ledNames[i]); // コンパイラの exception handling が無効になっているので、try/catch は使えない if (led[i] == NULL) { // NULLチェックは有効なのかな exit(1); } // 各LED を消灯する *(led[i]) = 0; } // 最初のLEDを点灯 *(led[0]) = 1; wait(WAIT); while (1) { // 左から右へ順に点灯 for ( i=1; i<NUM_LEDS; i++) { *(led[i-1]) = 0; *(led[i]) = 1; wait(WAIT); } // 右から左へ for ( i=NUM_LEDS-2; i>=0; i--) { *(led[i+1]) = 0; *(led[i]) = 1; wait(WAIT); } } }
- 例外処理は無効になってる。で、クラウド上だからコンパイラのオプションは変更できないってことね。。
Exception handling | mbed http://mbed.org/forum/mbed/topic/523/
今後の参考
- Homepage – Handbook | mbed
http://mbed.org/handbook/Homepage- ここからはじめるのがよいみたい
- ARM(Cortex-M3,M0): mbedアーカイブ / エレキジャック
http://www.eleki-jack.com/arm/mbed/ - LPCZone:NXP ARM LPCマイコン情報
http://www.nxp-lpc.com/ - mbed を楽しむ日記 4日目: じぇーけーそふとのこーなー
http://jksoft.cocolog-nifty.com/blog/2010/10/mbed-4-7369.html- Bluetoothドングル刺して、Wiiリモコンで制御みたいな。すごい
- m3piを作ってみよう (in Japanese) | mbed
http://mbed.org/users/kanpapa/notebook/m3pi/ - mbed (LED blink) code on LPCXpresso-LPC1768 | mbed
http://mbed.org/users/nxpfan/notebook/mbed-led-blink-code-on-lpcxpresso-lpc1768/- こいつなら安いね \2,900 / LPCXpresso NXP LPC1768評価キット: マイコン関連 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-04117/
- こいつなら安いね \2,900 / LPCXpresso NXP LPC1768評価キット: マイコン関連 秋月電子通商 電子部品 ネット通販
- Amazonでmbed関連商品を見る http://amzn.to/SRYSNX