Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FastPWM GMD_template_lib mbed
You are viewing an older revision! See the latest version
GMD
「GMD」は2016年のロボコンにおいて新しくなったMD(モータドライバ)用のライブラリであり、「NewMD2」は「GMD」を利用したプログラムです。この「NewMD2」が動作しているMD(以下「GMD」とする)の使用方法を説明します。
インターフェース¶
GMDはインターフェースとしてI2Cを備えていて、スレーブとして動作します。I2Cで使うスレーブアドレスを決定するために4PのDIPスイッチがあり、起動時にこのスイッチの値を読み取ることでスレーブアドレスを決定します。
また、GMDはリセットスイッチも備えているため、リセットスイッチを押すことで、DIPスイッチの状態を変更を反映させることができます。GMDにプログラムを書き込むにはプログラム書き込み用端子に専用の書き込み器を差し込みPCから書き込みます。この書き込み器はUSBシリアル変換モジュールを使って簡単に作れます。
スレーブアドレス¶
I2Cのスレーブアドレスには10ビットアドレス指定と7ビットアドレス指定がありますがGMDは7ビットアドレス指定です。
実際にスレーブアドレスを設定する際はDIPスイッチの入力が2進数4桁の値として扱われ、この値にオフセット値として8を足した値を使用します。スレーブアドレスには予約済みアドレスが存在しており、その値を使わないようにするためにオフセット値を足して最終的なスレーブアドレスを決定しています。以下にアドレスの範囲の表と予約済みアドレスの表を載せておくので確認しておいてください。
DIPスイッチ | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
---|---|---|---|---|---|---|---|---|
I2Cスレーブアドレス | 0 x08 | 0x09 | 0x0A | 0x0B | 0x0C | 0x0D | 0x0E | 0x0F |
DIPスイッチ | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
---|---|---|---|---|---|---|---|---|
I2Cスレーブアドレス | 0x10 | 0x11 | 0x12 | 0x13 | 0x14 | 0x15 | 0x16 | 0x17 |
*出典:UM10204 I2C バス仕様およびユーザーマニュアル Rev. 5.0J — 2012 年 10 月 9 日 (日本語翻訳 11 月 2 日)
http://www.nxp.com/documents/user_manual/UM10204_JA.pdf
制御データ¶
I2Cで渡されるモータの回転状態を指定したデータ(以下「制御データ」とする)のデータ長は1Byteです。この制御データが8bitの符号付き整数型として評価され、-128~127の範囲の値となります。この値がモータの回転の状態を表していて、127の時に最大の力で正転し、-128の時に最大の力で逆転します。そして、0か-1の時にブレーキをします。ようするにMSB(最上位ビット)が0だと正転し、1だと逆転し、そして、MSB以外の7ビットが回転の強さを表しているということです。