10月8日、実習 mbedで始める組み込みプログラミング入門にいってきた。そのとき、心に残ったことをメモメモ
(実際には回路を作って,mbed開発環境でコーディングして、動作させている。
ここでは、プログラムは載せないで(営業妨害になってしまうので)
お話だけをメモメモ)
■mbedってなに
・CortexMプロセッサ(CortexAが高機能、Mが低消費電力)
ソースコードは共通で使える
バイナリは共通では使えない(壊れる可能性)
・クラウドにコードを送る
公開しなければ見えない約束
・C/C++で開発
開発コミュニティのソースは自己責任
ネットにつなげばプログラムが描ける
・準備
ボードを買う
今回使うもの:LPC1768
ほかのもの:ublox:mbedでケータイにつながる
STマイクロ:センサーを安く
→ピンきり
ユーザー登録
はじめはsignupで行う
なにもメールは来ないので、わすれないように
・ソフト開発
ログインしたら、compilerをクリック
→chromeがいい(HTML5なので)
開発したテキスト(ソース)が必要ならダウンロードしないといけない
→データはイギリスにあり、それを自分のところに持ってくる
プラットフォームを選ぶ
+ボタン
ブラウザで
歯車:ライブラリ
main.cpp プログラム:これを修正
・ハードウェア
回路図からブレッドボード上に作成
カードをみて、ピンの番号を知る
例えば:LED1→P18→32番ピン
マイナスにGND線をつなぐ
LEDは長いほうが+(アノーど)
IC:マ-クが1
抵抗 赤 赤 茶 220オーム
茶 黒 赤 1Kオーム
茶 黒 オレンジ 10K
・mbedの実行
プログラムをコンパイルする→正常ならダウンロードできる
mbedにUSBをつないでドライブ開けばOK
ダウンロードしたものを描きこんで、
リセット押す
→どれもおなじ
※2メガバイトのフラッシュ
日付で見てて、一番遅いものを実行する
※配線を変えるときは、必ず抜いてから行う
■I2C
・Hiでつっておく
・STARTコンデションでLにおとす。そこが始まり
<<以下、今回使っているDS1631の話>>
・STARTコンデションのあと、コントロールバイトがきて、そのあとコマンドバイトが来る
→そのあとは、
データバイトが来る場合、
コマンドがきたあと、データバイトが来る場合がある
→データバイトは1バイトの場合と2バイト(MS,LS)の場合がある
→あとは組み合わせ。詳細は資料を見る
・コントロールバイトは1001のあと、アドレス(3ビット)、そのあとW・R
→W/Rは、
次のデータをマスタが書き出すときはW(0)、
マスタが読む(スレーブが送信する)場合は、R(1)
・マスタからデータを受け取ったら、スレーブがACK、
スレーブ側がデータを送ったら、マスタがACKを送る
→Ackで0になる。このAck状態になる前は、Hにつられている。
→Hの状態はNackということで、この間は送信できない
・コマンドバイトは、コマンドを書き込める。コマンドはデータシートにある
今回使っているDS1631では、
スタート 51h、リード AAhなどがある。詳細は資料参照。
・ここで資料中
2-WIRE SERIAL DATA BUS とはI2Cのこと
3-WIRE SERIAL DATA BUS とはSPIのこと
■ファイル書き出し
・LocalFileSystem インスタンス名("local");で
fopenすろときは/local/ファイル名で
実際のファイルは、直下(プログラム入れるところ)にファイル名で
アクセスできる
・ファイル名は8文字以下.3文字以下(拡張子4文字はX)の昔の形式
■mbedで実行時にエラーになり、フォルダが見えなくなった場合
・リセットボタンを押しながら、USBをさすとフォルダが見える。
その間に「リセットボタンを押しながら」フォルダを開き、
エラーの原因となった実行ファイルを削除する
■割り込み
・attachメソッドで登録する
登録するものは、あらかじめ書いておく
■TCPクライアント
・TCPポート80番にアクセスする
ライブラリがある。ウィザードからインポートできる
EthernetInterfaceがオフィシャルだし、数が多いので、これを落としてくる
→数が少ないのは注意!あぶないかも・・
依存してい足りない場合、エラーが出る。
mbed-rtosも必要
ぐるぐるマークアイコンがでたら、それは古い:アップデートする
■HTTPサーバーになる
・Henry Leinenが以前HTTPServerを出していた
→いまはだしていない
■RPC
・文字列だけ送れば、LEDがつかえたりする
LEDをつける
/DigitalOut/new LED1 myled
/myled/write 1
これができるのがRPCで、mbedはmbed-rpcを使うとできる
・ということは、HTTPサーバーをmbed内に建てれば、
そこへブラウザ経由で文字列を送ると、
LEDが付けるようになる
・RPCするJavascriptはarmが用意しているが
(mbedrpc.js)バグがある
(実際には回路を作って,mbed開発環境でコーディングして、動作させている。
ここでは、プログラムは載せないで(営業妨害になってしまうので)
お話だけをメモメモ)
■mbedってなに
・CortexMプロセッサ(CortexAが高機能、Mが低消費電力)
ソースコードは共通で使える
バイナリは共通では使えない(壊れる可能性)
・クラウドにコードを送る
公開しなければ見えない約束
・C/C++で開発
開発コミュニティのソースは自己責任
ネットにつなげばプログラムが描ける
・準備
ボードを買う
今回使うもの:LPC1768
ほかのもの:ublox:mbedでケータイにつながる
STマイクロ:センサーを安く
→ピンきり
ユーザー登録
はじめはsignupで行う
なにもメールは来ないので、わすれないように
・ソフト開発
ログインしたら、compilerをクリック
→chromeがいい(HTML5なので)
開発したテキスト(ソース)が必要ならダウンロードしないといけない
→データはイギリスにあり、それを自分のところに持ってくる
プラットフォームを選ぶ
+ボタン
ブラウザで
歯車:ライブラリ
main.cpp プログラム:これを修正
・ハードウェア
回路図からブレッドボード上に作成
カードをみて、ピンの番号を知る
例えば:LED1→P18→32番ピン
マイナスにGND線をつなぐ
LEDは長いほうが+(アノーど)
IC:マ-クが1
抵抗 赤 赤 茶 220オーム
茶 黒 赤 1Kオーム
茶 黒 オレンジ 10K
・mbedの実行
プログラムをコンパイルする→正常ならダウンロードできる
mbedにUSBをつないでドライブ開けばOK
ダウンロードしたものを描きこんで、
リセット押す
→どれもおなじ
※2メガバイトのフラッシュ
日付で見てて、一番遅いものを実行する
※配線を変えるときは、必ず抜いてから行う
■I2C
・Hiでつっておく
・STARTコンデションでLにおとす。そこが始まり
<<以下、今回使っているDS1631の話>>
・STARTコンデションのあと、コントロールバイトがきて、そのあとコマンドバイトが来る
→そのあとは、
データバイトが来る場合、
コマンドがきたあと、データバイトが来る場合がある
→データバイトは1バイトの場合と2バイト(MS,LS)の場合がある
→あとは組み合わせ。詳細は資料を見る
・コントロールバイトは1001のあと、アドレス(3ビット)、そのあとW・R
→W/Rは、
次のデータをマスタが書き出すときはW(0)、
マスタが読む(スレーブが送信する)場合は、R(1)
・マスタからデータを受け取ったら、スレーブがACK、
スレーブ側がデータを送ったら、マスタがACKを送る
→Ackで0になる。このAck状態になる前は、Hにつられている。
→Hの状態はNackということで、この間は送信できない
・コマンドバイトは、コマンドを書き込める。コマンドはデータシートにある
今回使っているDS1631では、
スタート 51h、リード AAhなどがある。詳細は資料参照。
・ここで資料中
2-WIRE SERIAL DATA BUS とはI2Cのこと
3-WIRE SERIAL DATA BUS とはSPIのこと
■ファイル書き出し
・LocalFileSystem インスタンス名("local");で
fopenすろときは/local/ファイル名で
実際のファイルは、直下(プログラム入れるところ)にファイル名で
アクセスできる
・ファイル名は8文字以下.3文字以下(拡張子4文字はX)の昔の形式
■mbedで実行時にエラーになり、フォルダが見えなくなった場合
・リセットボタンを押しながら、USBをさすとフォルダが見える。
その間に「リセットボタンを押しながら」フォルダを開き、
エラーの原因となった実行ファイルを削除する
■割り込み
・attachメソッドで登録する
登録するものは、あらかじめ書いておく
■TCPクライアント
・TCPポート80番にアクセスする
ライブラリがある。ウィザードからインポートできる
EthernetInterfaceがオフィシャルだし、数が多いので、これを落としてくる
→数が少ないのは注意!あぶないかも・・
依存してい足りない場合、エラーが出る。
mbed-rtosも必要
ぐるぐるマークアイコンがでたら、それは古い:アップデートする
■HTTPサーバーになる
・Henry Leinenが以前HTTPServerを出していた
→いまはだしていない
■RPC
・文字列だけ送れば、LEDがつかえたりする
LEDをつける
/DigitalOut/new LED1 myled
/myled/write 1
これができるのがRPCで、mbedはmbed-rpcを使うとできる
・ということは、HTTPサーバーをmbed内に建てれば、
そこへブラウザ経由で文字列を送ると、
LEDが付けるようになる
・RPCするJavascriptはarmが用意しているが
(mbedrpc.js)バグがある