2: 2010-07-15 (木) 16:46:13 takaboo ソース 現: 2013-07-14 (日) 12:11:15 takaboo ソース
Line 2: Line 2:
#norelated #norelated
#contents #contents
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|ブートローダのバージョンがVer.0.9以下のUD3はリコール対象となっています。|
 +
**概要 [#x0a22961] **概要 [#x0a22961]
本製品は2個のDCモータ用ブリッジ回路を搭載したインテリジェンスモータコントローラです。~ 本製品は2個のDCモータ用ブリッジ回路を搭載したインテリジェンスモータコントローラです。~
モータドライバの他に11本のデジタル入出端子を備え、そのうち8本はアナログ入力を兼用します。~ モータドライバの他に11本のデジタル入出端子を備え、そのうち8本はアナログ入力を兼用します。~
~ ~
-なお本製品はプレ販売製品のため、リリース版UD3に対して一部機能の制限があります。詳細は注意事項を参照ください。+なお本製品はプレ販売製品のため、リリース版UD3に対して一部機能の制限があります。詳細は[[注意事項>#hc748965]]を参照ください。
**仕様 [#r881cac5] **仕様 [#r881cac5]
Line 14: Line 17:
|USBケーブル |1 |150cm | |USBケーブル |1 |150cm |
|コネクタキット |1 |CPU・センサ用&br;モータ用 | |コネクタキット |1 |CPU・センサ用&br;モータ用 |
-|BTE003 |2 |おまけ |+|[[BTE003]] |2 |おまけ |
***基本仕様 [#pb0bf34c] ***基本仕様 [#pb0bf34c]
Line 42: Line 45:
****CN1 [#c95ac81b] ****CN1 [#c95ac81b]
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|電源の逆接続は電源回路の即時破壊となる。|
-5Vロジック・3.3Vロジック・12Vゲートドライバ電源供給用 -5Vロジック・3.3Vロジック・12Vゲートドライバ電源供給用
-図左より順に ①:-(GND), ②:+(センサCPU電源) の端子割り当て -図左より順に ①:-(GND), ②:+(センサCPU電源) の端子割り当て
Line 50: Line 55:
-CN3とは別の電源から供給する事 -CN3とは別の電源から供給する事
-J1~J12及びボード内で使用されるDC5V電源の総電流が7Aを超えてはならない。 -J1~J12及びボード内で使用されるDC5V電源の総電流が7Aを超えてはならない。
--電源の逆接続での破損は保証および修理対象外 
****CN2 [#q01a8c34] ****CN2 [#q01a8c34]
Line 59: Line 63:
****CN3 [#c0d4bab9] ****CN3 [#c0d4bab9]
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|電源の逆接続はブリッジ回路の即時破壊となる。&br;&br;バッテリを取り外した直後は搭載されたコンデンサに電荷が残っており、ショートすると放電する等の危険性がある。|
-Hブリッジ(モータ)電源供給用 -Hブリッジ(モータ)電源供給用
-図上より順に ①:+(モータ電源), ②:-(GND) の端子割り当て -図上より順に ①:+(モータ電源), ②:-(GND) の端子割り当て
Line 66: Line 72:
-本端子から供給される電源がHブリッジ回路に供給されM1ないしM2端子を介して負荷へと供給される -本端子から供給される電源がHブリッジ回路に供給されM1ないしM2端子を介して負荷へと供給される
-CN1とは別の電源から供給する事 -CN1とは別の電源から供給する事
--電源の逆接続での破損は保証および修理対象外 
****M1 [#p68e0f67] ****M1 [#p68e0f67]
Line 119: Line 124:
****J12 [#u979e189] ****J12 [#u979e189]
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|本機能によるシャットダウンの使用を禁止し、必ずオープン状態で使用の事。出荷分はピンヘッダをカット済み。|
-図左より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て -図左より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-①ピン(SIG端子)と③ピン(GND)を短絡すると5V用DCDCコンバータがシャットダウン(ボード内の5V・3.3V・12Vの電源がOFFになる)し消費電流が0.3mA以下に減少する~ -①ピン(SIG端子)と③ピン(GND)を短絡すると5V用DCDCコンバータがシャットダウン(ボード内の5V・3.3V・12Vの電源がOFFになる)し消費電流が0.3mA以下に減少する~
なおUSB(CN2)からのバスパワーは本端子の影響を受けないため、シャットダウン中でもCPUのみ活性化する なおUSB(CN2)からのバスパワーは本端子の影響を受けないため、シャットダウン中でもCPUのみ活性化する
-シャットダウンさせない場合は①ピン(SIG端子)をオープンにしておく事 -シャットダウンさせない場合は①ピン(SIG端子)をオープンにしておく事
 +
**各機能の詳細 [#db9530a6] **各機能の詳細 [#db9530a6]
 +***電源の印加順序 [#l7a7e35f]
 +CN1とCN2の電源には印加順序があります。誤動作や破損を防ぐため、以下の以下の順序に従ってください。なお、CN2から供給されるPCからのUSBバスパワーは本手順に影響しません。
 +~&color(red){電源ON};
 ++CN1にCPU及びセンサ用電源を接続しLED2の点灯を確認
 ++CN3にモータ用電源を接続
 +
 +~&color(red){電源OFF};
 ++負荷を駆動していない状態でCN3からモータ用電源を切断
 ++CN1からマイコン用電源を切断
 +
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|本手順に従わない場合は回路の誤動作による焼損の可能性がある。|
 +
***CPU電源 [#c08ff775] ***CPU電源 [#c08ff775]
CPU電源の入力方法は3つあり、各々目的が異なります。 CPU電源の入力方法は3つあり、各々目的が異なります。
Line 135: Line 156:
電源電圧が高い方が優先される回路となっています。両社を接続したとしても大抵の場合はCN1からの電源が優先されることになります。~ 電源電圧が高い方が優先される回路となっています。両社を接続したとしても大抵の場合はCN1からの電源が優先されることになります。~
ユーザプログラムが書き込まれていれば自動的に実行が開始されます。 ユーザプログラムが書き込まれていれば自動的に実行が開始されます。
 +
***USB [#f213387d] ***USB [#f213387d]
PCのUSBバスパワーでボード内の電源供給を行う他に、PCとマイコンとの有線による通信手段を提供します。~ PCのUSBバスパワーでボード内の電源供給を行う他に、PCとマイコンとの有線による通信手段を提供します。~
Line 142: Line 164:
USBないしBluetooth経由で本装置を操作するための専用プログラムが予め搭載されており、ユーザプログラムの転送やBluetoothの設定等をシリアルターミナル経由で行う事が出来ます。~ USBないしBluetooth経由で本装置を操作するための専用プログラムが予め搭載されており、ユーザプログラムの転送やBluetoothの設定等をシリアルターミナル経由で行う事が出来ます。~
SIMPLE TERMで該当のポートを開き、ブートローダのコマンドモードに入ると以下のメッセージ及びプロンプトが表示されます。 SIMPLE TERMで該当のポートを開き、ブートローダのコマンドモードに入ると以下のメッセージ及びプロンプトが表示されます。
- --< UDIII Ver.0.9 by BestTechnology >--+ --< UDIII Ver.1.0 by BestTechnology >--
 >  >
この状態で使用できるコマンドは'?'を入力すると表示されます。 この状態で使用できるコマンドは'?'を入力すると表示されます。
 >?  >?
- --< UDIII Ver.0.9 by BestTechnology >--+ --< UDIII Ver.1.0 by BestTechnology >--
  [w]:UPLOAD [g]:BOOT [i]:FLASH INFO [e]:ERASE [b]:BLUETOOTH   [w]:UPLOAD [g]:BOOT [i]:FLASH INFO [e]:ERASE [b]:BLUETOOTH
 >  >
Line 161: Line 183:
なお、ユーザプログラムが書き込まれている場合は、電源投入直後にユーザプログラムが実行されるため、ブートローダのコマンドモードにはなりません。ユーザプログラムの転送や消去といった操作を行う場合は、以下の手順に従ってください。 なお、ユーザプログラムが書き込まれている場合は、電源投入直後にユーザプログラムが実行されるため、ブートローダのコマンドモードにはなりません。ユーザプログラムの転送や消去といった操作を行う場合は、以下の手順に従ってください。
-+UD3にUSBないし外部電源源を接続し電源を入れる++UD3にUSBないし外部電源を接続し電源を入れる
+PB1とPB2を押しっぱなしにする +PB1とPB2を押しっぱなしにする
+その状態のままPB3を1秒程度押してCPUをリセットする +その状態のままPB3を1秒程度押してCPUをリセットする
Line 177: Line 199:
~ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。 ~ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。
-''[[SIMPLE TERM>GCC Developer Lite#STERM]]'' -''[[SIMPLE TERM>GCC Developer Lite#STERM]]''
-~汎用シリアルターミナル。簡易的なTLENETクライアントとしても機能する。~+~汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。~
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。 USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
-''ARMGCC'' -''ARMGCC''
Line 237: Line 259:
μITRON4.0仕様準拠であるリアルタイムカーネル[[Toppers>http://www.toppers.jp/]] ASPのAT91SAM7Sシリーズ向けベステクカスタム版。OSを搭載してもある程度のリアルタイム性を確保できる事から採用。 μITRON4.0仕様準拠であるリアルタイムカーネル[[Toppers>http://www.toppers.jp/]] ASPのAT91SAM7Sシリーズ向けベステクカスタム版。OSを搭載してもある程度のリアルタイム性を確保できる事から採用。
-''UD3ライブラリ''~ -''UD3ライブラリ''~
-UD3ライブラリはToppersを採用することで、2チャネルあるモータドライバを全く違う目的で各々個別のタスクで動かしたり、ホストPCとDynamixelプロトコルで通信を行うタスクを走らせながら(PRE版では未サポート)システムを運用といった機能を提供。~+UD3ライブラリはToppersを採用することで、2チャンネルあるモータドライバを全く違う目的で各々個別のタスクで動かしたり、ホストPCとDynamixelプロトコルで通信を行うタスクを走らせながら(PRE版では未サポート)システムを運用といった機能を提供。~
実際にはToppersのそれを意識する必要はほとんどない。 実際にはToppersのそれを意識する必要はほとんどない。
**UD3 API [#c8cb0041] **UD3 API [#c8cb0041]
-ユーザ自らCPUのペリフェラルへ直接アクセスするコーディングをする訳ではなく、GCC Developer Liteが提供するUD3専用ライブラリを介してUD3PREの機能へアクセスする事になります。~ +APIに関しては[[こちら&gt;http://www.besttechnology.co.jp/modules/​knowledge/?BTA022%2FBTA023%20%E3%83%A6%E​3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83​%AB%E3%83%89%E3%83%A9%E3%82%A4%E3%83%903​#c8cb0041]]のリリース版ユニバーサルドライバ3のドキュメントを参照ください。また、GCC Developer Lite Version 2.3.2.6r4以降を適用ください。
-APIを使用する前に、ソースプログラムの先頭に ud3.h をインクルードしてください。 +
-&nbsp;#include <ud3.h> +
-APIの詳細は以下に列挙します。+
-***UD3_INITIALIZE [#bd0f80b9+**サンプルプログラム [#kf8170aa
-一般的なC言語のプログラムで言えばmain関数に相当し、一番最初に実行される初期化関数。タスクの起動やGPIOの初期化等はこの関数内で記述する。 +''※以後のサンプルプログラムのメンテナンスは[[UD3のページ>UD3]]にて行います。''
- void UD3_INITIALIZE(void); +
--パラメータ +
-~なし +
--戻り値 +
-~なし +
--使用例 +
- #include <ud3.h>+
- UD3_INITIALIZE () 
- { 
-   // 動作環境設定 
-   // GPIO8/9/10をPWMキャプチャモードに設定 
-   UD3_CFG_GPIO8 (GPIO_PWM_CAP); 
-   UD3_CFG_GPIO9 (GPIO_PWM_CAP); 
-   UD3_CFG_GPIO10 (GPIO_PWM_CAP); 
-   // モータの設定 
-   UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); 
-   UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); 
-   UD3_SET_DUTY(500, -500); 
-   // 使用タスクを起動 
-   UD3_ACTIVE_TASK (1); 
-   UD3_ACTIVE_TASK (2); 
- } 
- 
-***UD3_TASK1 [#n10e53c9] 
-UD3は最大4つのユーザ定義タスクを同時に実行できるが、UD3_TASK1の名称で作られた関数は自動的にタスク1としてOSに登録される。~ 
-タスクの活性化は[[UD3_ACTIVE_TASK>#f9cdcf0a]]で行う。~ 
-複数のタスクを定義し活性化すると各々のタスクはOSによって並列実行されるが、タスク数に乗じてタスク自体の実行速度は遅くなる。 
- 
- UD3_TASK1() 
--パラメータ 
-~なし 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK1 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (1);  // タスク1をアクティブ化 
- } 
- 
-***UD3_TASK2 [#xb6d65de] 
-UD3は最大4つのユーザ定義タスクを同時に実行できるが、UD3_TASK2の名称で作られた関数は自動的にタスク2としてOSに登録される。~ 
-タスクの活性化はタスクの活性化は[[UD3_ACTIVE_TASK>#f9cdcf0a]]で行う。~ 
-で行う。~ 
-複数のタスクを定義し活性化すると各々のタスクはOSによって並列実行されるが、タスク数に乗じてタスク自体の実行速度は遅くなる。 
- 
- UD3_TASK2(); 
--パラメータ 
-~なし 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK2 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (2);  // タスク2をアクティブ化 
- } 
- 
-***UD3_TASK3 [#e13da6de] 
-UD3は最大4つのユーザ定義タスクを同時に実行できるが、UD3_TASK3の名称で作られた関数は自動的にタスク3としてOSに登録される。~ 
-タスクの活性化は[[UD3_ACTIVE_TASK>#f9cdcf0a]]で行う。~ 
-複数のタスクを定義し活性化すると各々のタスクはOSによって並列実行されるが、タスク数に乗じてタスク自体の実行速度は遅くなる。 
- 
- UD3_TASK3(); 
--パラメータ 
-~なし 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK3 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (3);  // タスク3をアクティブ化 
- } 
- 
-***UD3_TASK4 [#w06ef286] 
-UD3は最大4つのユーザ定義タスクを同時に実行できるが、UD3_TASK4の名称で作られた関数は自動的にタスク4としてOSに登録される。~ 
-タスクの活性化は[[UD3_ACTIVE_TASK>#f9cdcf0a]]で行う。~ 
-複数のタスクを定義し活性化すると各々のタスクはOSによって並列実行されるが、タスク数に乗じてタスク自体の実行速度は遅くなる。 
- 
- UD3_TASK4(); 
--パラメータ 
-~なし 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK4 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (4);  // タスク4をアクティブ化 
- } 
- 
-***UD3_CFG_GPIO0 [#c10e9d62] 
-GPIO0の端子機能を設定する。 
- int UD3_CFG_GPIO0 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO0 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO1 [#y4f5f690] 
-GPIO1の端子機能を設定する。 
- int UD3_CFG_GPIO1 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO1 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO2 [#l7586e65] 
-GPIO2の端子機能を設定する。 
- int UD3_CFG_GPIO2 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO2 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO3 [#a02184b5] 
-GPIO3の端子機能を設定する。 
- int UD3_CFG_GPIO3 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO3 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO4 [#l791e053] 
-GPIO4の端子機能を設定する。 
- int UD3_CFG_GPIO4 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO4 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO5 [#ad4fd1e3] 
-GPIO5の端子機能を設定する。 
- int UD3_CFG_GPIO5 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO5 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO6 [#x95d33cb] 
-GPIO6の端子機能を設定する。 
- int UD3_CFG_GPIO6 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO6 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO7 [#c82b29f3] 
-GPIO7の端子機能を設定する。 
- int UD3_CFG_GPIO7 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~以下のリストから一つだけ選択できる。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_ADC (2:アナログ入力)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // ADC 
-   UD3_CFG_GPIO7 (GPIO_ADC); 
- } 
- 
-***UD3_CFG_GPIO8 [#n31eda6b] 
-GPIO8の端子機能を設定する。 
- int UD3_CFG_GPIO8 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~GPIO端子の動作内容を設定。以下のリストから一つだけ選択できる。なお、GPIO_ADC(2:アナログ入力)は設定できない。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力)~ 
-GPIO_PWM_CAP (5:パルス幅計測用入力かつプルアップON)~ 
-GPIO_PWM (6:PWM出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場に-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // PWMキャプチャモードに設定 
-   UD3_CFG_GPIO8 (GPIO_PWM_CAP); 
- } 
- 
-***UD3_CFG_GPIO9 [#u201f4af] 
-GPIO9の端子機能を設定する。 
- int UD3_CFG_GPIO9 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~GPIO端子の動作内容を設定。以下のリストから一つだけ選択できる。なお、GPIO_ADC(2:アナログ入力)は設定できない。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力)~ 
-GPIO_PWM_CAP (5:パルス幅計測用入力かつプルアップON)~ 
-GPIO_PWM (6:PWM出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場に-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // パルス幅計測モードに設定 
-   UD3_CFG_GPIO9 (GPIO_PWM_CAP); 
- } 
- 
-***UD3_CFG_GPIO10 [#d2dd2f39] 
-GPIO10の端子機能を設定する。 
- int UD3_CFG_GPIO10 (TGPIOMode conf); 
--パラメータ 
---TGPIOMode '''conf''' 
-~GPIO端子の動作内容を設定。以下のリストから一つだけ選択できる。なお、GPIO_ADC(2:アナログ入力)は設定できない。 
-~GPIO_IN_PULLUP_OFF (0:入力かつ内蔵プルアップOFF)~ 
-GPIO_IN_PULLUP_ON (1:入力かつ内蔵プルアップON)~ 
-GPIO_OUT_OPENDRAIN (3:オープンドレイン出力)~ 
-GPIO_OUT_PUSHPULL (4:プッシュプル出力)~ 
-GPIO_PWM_CAP (5:パルス幅計測用入力かつプルアップON)~ 
-GPIO_PWM (6:PWM出力) 
-~デフォルトはGPIO_IN_PULLUP_OFF。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場に-1が返される。 
--使用例 
- #include <ud3.h> 
- 
- UD3_INITIALIZE () 
- { 
-   // パルス幅計測モードに設定 
-   UD3_CFG_GPIO10 (GPIO_PWM_CAP); 
- } 
- 
-***UD3_ACTIVE_TASK [#f9cdcf0a] 
-指定したタスクをアクティブにする。タスクをアクティブにしていない場合には、タスクを定義してあってもそのタスクは実行されない。 
- 
- void UD3_ACTIVE_TASK (task); 
--パラメータ 
---int_t '''task''' 
-~タスク番号。指定できるタスク番号は1~4。 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK1 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (1);  // タスク1をアクティブ化 
- } 
- 
-***UD3_WAIT [#ja9bd39f] 
-ミリ秒単位でプログラムの実行を待つ。 
- void UD3_WAIT (int_t tm); 
--パラメータ 
---int_t '''tm''' 
-~待ち時間(msec)を指定。 
--戻り値 
-~なし 
--使用例 
- #include <ud3.h> 
- 
- UD3_TASK1 () { 
-   for (;;) { 
-     UD3_SET_LED (true);  // LED点灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-     UD3_SET_LED (false); // LED消灯 
-     UD3_WAIT(500);      // 0.5秒待ち 
-   } 
- } 
- 
- UD3_INITIALIZE () { 
-   UD3_ACTIVE_TASK (1); 
- } 
- 
-***UD3_SET_GPIOOUTPUT [#sb36fb83] 
-UD3_CFG_GPIOxにてGPIO_OUT_OPENDRAINないしGPIO_OUT_PUSHPULLに設定された端子のみ出力状態を変更する。 
- int UD3_SET_GPIOOUTPUT (uint16_t out); 
--パラメータ 
-~uint16_t '''out''' 
-~出力データを設定。outの各ビットとGPIOの出力ポートは以下に割り当てられる。 
-|=out BIT|=15|=14|=13|=12|=11|=10|= 9|=8|=7|=6|=5|=4|=3|=2|=1|=0| 
-|=GPIO|=- |=- |=- |=- |=- |=10  |=9  |=8  |=7  |=6  |=5  |=4  |=3  |=2  |=1  |=0  | 
-~デフォルトは0。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- UD3_CFG_GPIO0(GPIO_OUT_PUSHPULL); // GPIO0を出力に 
- UD3_CFG_GPIO1(GPIO_OUT_PUSHPULL); // GPIO1を出力に 
- UD3_CFG_GPIO2(GPIO_OUT_PUSHPULL); // GPIO2を出力に 
- 
- UD3_SET_GPIOOUTPUT (0x01); // GPIO0のみにHighを出力 
- UD3_SET_GPIOOUTPUT (0x02); // GPIO1のみにHighを出力 
- UD3_SET_GPIOOUTPUT (0x04); // GPIO2のみにHighを出力 
- UD3_SET_GPIOOUTPUT (0x07); // GPIO0~2にHighを出力 
- UD3_SET_GPIOOUTPUT (0x07); // GPIO0~2にLowを出力 
- 
-***UD3_SET_BUZZER [#y8fc67a7] 
-任意周波数・音長でブザーを鳴らす。 
- int UD3_SET_BUZZER (uint8_t scale, uint8_t len); 
--パラメータ 
---uint8_t '''scale''' 
-~音程を0~52の範囲で設定。 
---uint8_t '''len''' 
-~音長を0~250(x10ms)の範囲で設定。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- UD3_SET_BUZZER (24, 20); 
- UD3_WAIT (300); 
- UD3_SET_BUZZER (30, 20); 
- 
-***UD3_SET_LED [#q6f1d21e] 
-LEDの点灯/消灯。~ 
- int UD3_SET_LED (uint8_t on); 
--パラメータ 
---uint8_t '''on''' 
-~0で消灯、1で点灯する。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // LEDを点滅させます。 
- while (1) { 
-   UD3_SET_LED (1); 
-   UD3_WAIT (200); 
-   UD3_SET_LED (0); 
-   UD3_WAIT (200); 
- } 
- 
-***UD3_SET_M1FREQUENCY [#wc47b8e1] 
-M1のPWM周波数を設定。~ 
- int UD3_SET_M1FREQUENCY (uint8_t freq); 
--パラメータ 
---uint8_t '''freq''' 
-~周波数を0~200[kHz]で指定。 
-~デフォルトは50kHz 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M1の周波数を100kHzに設定 
- UD3_SET_M1FREQUENCY (100); 
- 
-***UD3_SET_M1RECHARGE [#n8f06456] 
-負荷が駆動できる最大PWMデューティーを制限するための値。負荷によって調整が必要なパラメータである。~ 
-調整にはデューティー100%で運転をしている状態で、本設定値を0から順に負荷の運転が安定するまで大きくして行く。大きくても20%以下で安定すると思われる。~ 
- int UD3_SET_M1RECHARGE (uint8_t re); 
--パラメータ 
---uint8_t '''re''' 
-~0~100[%]を設定。100%-re が出力リミッタとして働く。 
-~デフォルトは5% 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M1の最大PWM制限幅を5%に設定します 
- UD3_SET_M1RECHARGE (5); 
- 
-***UD3_SET_M1DRIVEMODE [#a35c521d] 
-M1の駆動モードを設定する。 
- UD3_SET_M1DRIVEMODE (mode); 
--パラメータ 
---uint8_t '''mode''' 
-~_UD_MOTOR_BRAKE (0:ブレーキモード)~ 
-_UD_MOTOR_DRIVE (1:ドライブモード) 
-~デフォルトは_UD_MOTOR_BRAKE。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M1をドライブモードにします 
- UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); 
- 
-***UD3_SET_M1PWMDUTY [#de09cbea] 
-M1のPWM DUTYを設定する。~ 
- int UD3_SET_M1PWMDUTY (int16_t duty); 
--パラメータ 
---int16_t '''duty''' 
-~デューティーを-1000~0~1000[‰]で指定。マイナス値は逆転を意味する。~ 
-0‰の場合はショートブレーキとなる。 
-~デフォルトは0‰。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
-±1000の範囲を越えて設定されている場合にも1が返されるが、リミッタで値はクリップされる。 
--使用例 
- // M1を20%のDUTYで動作させます。 
- UD3_SET_M1PWMDUTY (200); 
- 
-***UD3_SET_M2FREQUENCY [#jf15fafa] 
-M2のPWM周波数を設定。~ 
- int UD3_SET_M2FREQUENCY (uint8_t freq); 
--パラメータ 
---uint8_t '''freq''' 
-~周波数を0~200[kHz]で指定。 
-~デフォルトは50kHz 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M2の周波数を100kHzに設定 
- UD3_SET_M2FREQUENCY (100); 
- 
-***UD3_SET_M2RECHARGE [#q3ed4f2c] 
-負荷が駆動できる最大PWMデューティーを制限するための値。負荷によって調整が必要なパラメータである。~ 
-調整にはデューティー100%で運転をしている状態で、本設定値を0から順に負荷の運転が安定するまで大きくして行く。大きくても20%以下で安定すると思われる。 
- int UD3_SET_M2RECHARGE (uint8_t re); 
--パラメータ 
---uint8_t '''re''' 
-~0~100[%]を設定。100%-re が出力リミッタとして働く。 
-~デフォルトは5%。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M2の最大PWM制限幅を5%に設定します 
- UD3_SET_M2RECHARGE (5); 
- 
-***UD3_SET_M2DRIVEMODE [#k9ab964c] 
-M2の駆動モードを設定する。 
- UD3_SET_M2DRIVEMODE (mode); 
--パラメータ 
---uint8_t '''mode''' 
-~_UD_MOTOR_BRAKE (0:ブレーキモード)~ 
-_UD_MOTOR_DRIVE (1:ドライブモード) 
-~デフォルトは_UD_MOTOR_BRAKE。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // M2をドライブモードにします 
- UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); 
- 
-***UD3_SET_M2PWMDUTY [#k2c1cab9] 
-M2のPWM DUTYを設定する。~ 
- int UD3_SET_M2PWMDUTY (int16_t duty); 
--パラメータ 
---int16_t '''duty''' 
-~デューティーを-1000~0~1000[‰]で指定。マイナス値は逆転を意味する。~ 
-0‰の場合はショートブレーキとなる。 
-~デフォルトは0‰。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
-±1000の範囲を越えて設定されている場合にも1が返されるが、リミッタで値はクリップされる。 
--使用例 
- // M2を20%のDUTYで動作させます。 
- UD3_SET_M2PWMDUTY (200); 
- 
-***UD3_SET_MOTORREVRSE [#m604c98d] 
-M1/2の回転方向を反転させる。 
- int UD3_SET_MOTORREVRSE (int8_t rev); 
--パラメータ 
---int8_t '''rev''' 
-以下のビットで各々反転を設定。 
-~_M1_REV (0x1;M1反転)~ 
-_M2_REV (0x02:M2反転) 
-~デフォルトは0。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // 両モータの回転を逆転します。 
- UD3_SET_MOTORREVRSE (_M1_REV | _M2_REV); 
- 
-***UD3_SET_DUTY [#u0bc4a8b] 
-M1とM2同時にDUTYを設定する。~ 
- int UD3_SET_DUTY (int16_t duty1, int16_t duty2); 
--パラメータ 
---int16_t '''duty1''' 
-~M1用デューティーを-1000[‰]~0~1000[‰]で指定。~ 
---int16_t '''duty2''' 
-~M2用デューティーを-1000[‰]~0~1000[‰]で指定。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
--使用例 
- // M1を30%,M2を20%のDUTYで動作させます。 
- UD3_SET_DUTY (300, 200); 
- 
-***UD3_SET_PWM8CLOCK [#g666594c] 
-PWM8のPWM出力及びPWM幅計測用ベースクロックを設定する。PWMは本クロックを基準に16bitカウンタとして機能する。~ 
-GPIO8を[[UD3_CFG_GPIO8>#u201f4af]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM8CLOCK (uint8_t clock); 
--パラメータ 
---uint8_t '''clock''' 
-~ベースクロックを0~4で選択。 
-~_UD_PWM_CLOCK_24M  (0:24MHz)~ 
-_UD_PWM_CLOCK_6M    (1:6MHz)~ 
-_UD_PWM_CLOCK_1500K (2:1.5MHz)~ 
-_UD_PWM_CLOCK_375K  (3:375kHz)~ 
-_UD_PWM_CLOCK_46K  (4:46.875kHz) 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // PWM8のベースクロック24Mに設定します。 
- UD3_SET_PWM8CLOCK (_UD_PWM_CLOCK_24M); 
- 
-***UD3_SET_PWM8CYCLE [#pf67c2d8] 
-PWM8の周期を設定する。~ 
-GPIO8を[[UD3_CFG_GPIO8>#u201f4af]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM8CYCLE (uint16_t cycle); 
--パラメータ 
---uint16_t '''cycle''' 
-~周期を1~65535で設定。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
--使用例 
- // PWM8の周期を設定します。 
- UD3_SET_PWM8CYCLE (5000); 
- 
-***UD3_SET_PWM8DUTY [#s1513f14] 
-PWM8のDUTYを設定する。~ 
-GPIO8を[[UD3_CFG_GPIO8>#u201f4af]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM8DUTY (uint16_t duty); 
--パラメータ 
---uint16_t '''duty''' 
-~デューティーを0~65535で設定。PWMはDUTY/CYCLEの比で出力される。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
-CYCLEで設定された周期値を越えて設定されている場合に1が返され、CYCLE値でクリップされる。 
--使用例 
- // PWM8のDUTYを設定します。 
- UD3_SET_PWM8DUTY (5000); 
- 
-***UD3_SET_PWM9CLOCK [#ae26f679] 
-PWM9のPWM出力及びPWM幅計測用ベースクロックを設定する。PWMは本クロックを基準に16bitカウンタとして機能する。~ 
-GPIO9を[[UD3_CFG_GPIO9>#j90d8ac4]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM9CLOCK (uint8_t clock); 
--パラメータ 
---uint8_t '''clock''' 
-~ベースクロックを0~4で選択。 
-~_UD_PWM_CLOCK_24M  (0:24MHz)~ 
-_UD_PWM_CLOCK_6M    (1:6MHz)~ 
-_UD_PWM_CLOCK_1500K (2:1.5MHz)~ 
-_UD_PWM_CLOCK_375K  (3:375kHz)~ 
-_UD_PWM_CLOCK_46K  (4:46.875kHz) 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // PWM8のベースクロック24Mに設定します。 
- UD3_SET_PWM9CLOCK (_UD_PWM_CLOCK_24M); 
- 
-***UD3_SET_PWM9CYCLE [#sae67585] 
-PWM9の周期を設定する。~ 
-GPIO9を[[UD3_CFG_GPIO9>#j90d8ac4]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM9CYCLE (uint16_t cycle); 
--パラメータ 
---uint16_t '''cycle''' 
-~周期を1~65535で設定。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
--使用例 
- // PWM9の周期を設定します。 
- UD3_SET_PWM9CYCLE (5000); 
- 
-***UD3_SET_PWM9DUTY [#pae41f19] 
-PWM9のDUTYを設定する。~ 
-GPIO9を[[UD3_CFG_GPIO9>#j90d8ac4]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM9DUTY (uint16_ duty); 
--パラメータ 
---uint16_t '''duty''' 
-~デューティーを0~65535で設定。PWMはDUTY/CYCLEの比で出力される。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
-CYCLEで設定された周期値を越えて設定されている場合に1が返され、CYCLE値でクリップされる。 
--使用例 
- // PWM9のDUTYを設定します。 
- UD3_SET_PWM9DUTY (5000); 
- 
-***UD3_SET_PWM10CLOCK [#cd6005d8] 
-PWM10のPWM出力及びPWM幅計測用ベースクロックを設定する。PWMは本クロックを基準に16bitカウンタとして機能する。~ 
-GPIO10を[[UD3_CFG_GPIO10>#d2dd2f39]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM10CLOCK (uint8_t clock); 
--パラメータ 
---uint8_t '''clock''' 
-~ベースクロックを0~4で選択。 
-~_UD_PWM_CLOCK_24M  (0:24MHz)~ 
-_UD_PWM_CLOCK_6M    (1:6MHz)~ 
-_UD_PWM_CLOCK_1500K (2:1.5MHz)~ 
-_UD_PWM_CLOCK_375K  (3:375kHz)~ 
-_UD_PWM_CLOCK_46K  (4:46.875kHz) 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。 
--使用例 
- // PWM10のベースクロック24Mに設定します。 
- UD3_SET_PWM10CLOCK (_UD_PWM_CLOCK_24M); 
- 
-***UD3_SET_PWM10CYCLE [#nefca4e0] 
-PWM10の周期を設定する。~ 
-GPIO10を[[UD3_CFG_GPIO10>#d2dd2f39]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM10CYCLE (uint16_t cycle); 
--パラメータ 
---uint16_t '''cycle''' 
-~周期を1~65535で設定。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
--使用例 
- // PWM10の周期を設定します。 
- UD3_SET_PWM10CYCLE (5000); 
- 
-***UD3_SET_PWM10DUTY [#a36b0abc] 
-PWM10のDUTYを設定する。~ 
-GPIO10を[[UD3_CFG_GPIO10>#d2dd2f39]]でGPIO_PWMに設定する必要がある。 
- int UD3_SET_PWM10DUTY (uint16_t duty); 
--パラメータ 
---uint16_t '''duty''' 
-~デューティーを0~65535で設定。PWMはDUTY/CYCLEの比で出力される。 
--戻り値 
-~成功すると0 、パラメータエラーがあった場合は-1が返される。~ 
-CYCLEで設定された周期値を越えて設定されている場合に1が返され、CYCLE値でクリップされる。 
--使用例 
- // PWM10のDUTYを設定します。 
- UD3_SET_PWM10DUTY (5000); 
- 
-***UD3_MEASURE_STICKPOS [#w3c149c4] 
-ラジコン用プロポからの信号をモータのパワーに合わせるための調整を行う。調整値は不揮発メモリに保存され、以後UD3_RC_MOTOR等で内部的に使用される。~ 
-予め[[UD3_CFG_GPIO8>#u201f4af]],[[UD3_CFG_GP​IO9>#j90d8ac4]],[[UD3_CFG_GPIO10>#d2dd2f​39]]でGPIO_PWM_CAPに設定する必要がある。 
-~本APIが実行されると以下の手順で調整操作を行う。 
-+UD3_MEASURE_STICKPOSがコールされるとLED1が高速で点滅する。~ 
-+プロポのスティックから手を離した状態(中立位置)でPB1を押し続ける。PB1の押下中はブザーが鳴り続け、数秒押し続けた後PB1を離す(この間に中立位置の計測が行われる)~ 
-+プロポのスティックをそれぞれ上下ないし左右の端まで移動させる。何度か移動させるうちにランダムだったブザーの音程がスティックの角度に連動して変化するようになる。~ 
-+スティックの角度に応じてなめらかに音階が変化するようになったらPB1を押す。~ 
-+成功した「明るいメロディー」か、失敗した「暗いメロディー」が鳴ったら調整終了し、調整値が不揮発メモリに保存される。 
- bool UD3_MEASURE_STICKPOS (uint8_t pos1, uint8_t pos2); 
--パラメータ 
---uint8_t '''pos1''' 
-~スティック中立時の不感帯幅を0~50[%]で設定。 
---uint8_t '''pos2''' 
-~スティック両端時の不感帯幅を0~50[%]で設定。 
--戻り値 
-~bool 
-~true 調整が成功した場合に返される。~ 
-false 調整が失敗した場合に返される。 
--使用例 
- include <ud3.h> 
- 
- UD3_INITIALIZE () { 
-   // GPIO8,9をパルス幅計測モードに 
-   UD3_CFG_GPIO8 (GPIO_PWM_CAP); 
-   UD3_CFG_GPIO9 (GPIO_PWM_CAP); 
-   // モータの駆動モード設定 
-   UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); 
-   UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); 
- 
-   // モータ駆動許可 
-   UD3_SET_MOTORENABLE (true); 
- 
-   UD3_ACTIVE_TASK (1); 
- } 
- 
- UD3_TASK1 () { 
-   // プロポの調整 
-   UD3_MEASURE_STICKPOS (10, 10); 
-   while (1) { 
-     // 調整値を元にモータを駆動 
-     UD3_RC_MOTOR (0, 1); 
-   } 
-  } 
- 
-***UD3_RC_MOTOR [#rf1dfc65] 
-UD3_MEASURE_STICKPOSにて調整されたラジコン用プロポの受信器から出力されるパルスを元にM1とM2の駆動パワーに割り当てる。 
- void UD3_RC_MOTOR (uint8_t rc1, uint8_trc2); 
--パラメータ 
---uint8_t '''rc1''' 
-~M1に割り当てるチャネル 
-~0  PWM8(GPIO8)~ 
-1  PWM9(GPIO9)~ 
-2  PWM10(GPIO10) 
---uint8_t '''rc2''' 
-~M2に割り当てるチャネル 
-~0  PWM8(GPIO8)~ 
-1  PWM9(GPIO9)~ 
-2  PWM10(GPIO10) 
--戻り値 
-~なし 
--使用例 
- include <ud3.h> 
- 
- UD3_INITIALIZE () { 
-   // GPIO8,9をパルス幅計測モードに 
-   UD3_CFG_GPIO8 (GPIO_PWM_CAP); 
-   UD3_CFG_GPIO9 (GPIO_PWM_CAP); 
-   // モータの駆動モード設定 
-   UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); 
-   UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); 
- 
-   // モータ駆動許可 
-   UD3_SET_MOTORENABLE (true); 
- 
-   UD3_ACTIVE_TASK (1); 
- } 
- 
- UD3_TASK1 () { 
-   // プロポの調整 
-   UD3_MEASURE_STICKPOS (10, 10); 
-   while (1) { 
-     // 調整値を元にGPIO8をM1,GPIO9をM2に割り当てて運転 
-     UD3_RC_MOTOR (0, 1); 
-   } 
-  } 
- 
-***UD3_GET_ELAPSEDTIME [#lf9e26fd] 
-アプリケーション起動時からの経過時間をミリ秒単位で取得。 
- uint32_t UD3_GET_ELAPSEDTIME (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint32_t 経過時間 
--使用例 
- // 経過時間を取得します。 
- uint32_t tm = UD3_GET_ELAPSEDTIME (); 
- 
-***UD3_GET_GPIOINPUT [#qdba2bbc] 
-GPIOの端子状態を取得。入力に使用するGPIOを[[UD3_CFG_GPIO0>#c10e9d62]]~[[UD3_CFG_GPIO10>#d2dd2f39]]で設定する必要がある。 
- uint16_t UD3_GET_GPIOINPUT (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint16_t GPIOの入力値~ 
-戻り値の各ビットは以下のGPIOポートに割り当てられる。 
-|=BIT|=15|=14|=13|=12|=11|=10|= 9|=8|=7|=6|=5|=4|=3|=2|=1|=0| 
-|=GPIO|=- |=- |=- |=- |=- |=10  |=9  |=8  |=7  |=6  |=5  |=4  |=3  |=2  |=1  |=0  | 
--使用例 
- // GPIOの入力値 
- uint16_t input = UD3_GET_GPIOINPUT (); 
- 
-***UD3_GET_PUSHBUTTON1 [#xe62248e] 
-PB1の状態を取得。 
- bool UD3_GET_PUSHBUTTON1 (void); 
--パラメータ 
-~なし 
--戻り値 
-~bool PB1の状態 
-~true  押されている~ 
-false 押されていない 
--使用例 
- // PB1が押されている場合にLEDを点灯させます。 
- UD3_SET_LED (UD3_GET_PUSHBUTTON1 ()); 
- 
-***UD3_GET_PUSHBUTTON2 [#t4c165bb] 
-PB2の状態を取得。 
- bool UD3_GET_PUSHBUTTON2 (void); 
--パラメータ 
-~なし 
--戻り値 
-~bool PB2の状態 
-~true  押されている~ 
-false 押されていない 
--使用例 
- // PB2が押されている場合にLEDを点灯させます。 
- UD3_SET_LED (UD3_GET_PUSHBUTTON2 ()); 
- 
-***UD3_GET_DIPSWICH [#o08f8c1c] 
-DIP1の状態を取得。 
- uint8_t UD3_GET_DIPSWICH (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint8_t DIP1に設定された値(0x00~0x0f) 
--使用例 
- // DIP1の状態を取得します。 
- uint8_t sw = UD3_GET_DIPSWICH (); 
- 
-***UD3_GET_ADC [#f0162d6a] 
-GPIO0~7に入力された電圧値を取得する。~ 
-ADCに使用するGPIOを[[UD3_CFG_GPIO0>#c10e9d62]]~[[UD3_CFG_GPIO7>#c82b29f3]]で設定する必要がある。 
- uint16_t UD3_GET_ADC (uint8_t ch); 
--パラメータ 
---uint8_t '''ch''' 
-~0~7(GPIO0~GPIO8)のチャネル番号 
--戻り値 
-~uint16_t 指定したチャネルの0(0V)~1023(3.3V)のアナログ値 
--使用例 
- // GPIO0に入力された電圧を取得します。 
- adc = UD3_GET_ADC (0); 
- 
-***UD3_GET_PWM8DUTY [#td3856a0] 
-PWM8のキャプチャしたパルス幅を取得する。~ 
-GPIO8を[[UD3_CFG_GPIO8>#u201f4af]]でGPIO_PWM_CAPに設定する必要がある。 
- uint16_t UD3_GET_PWM8DUTY (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint16_t パルス幅 
--使用例 
- // PWM8のパルス幅を取得します。 
- pulse = UD3_GET_PWM8DUTY (); 
- 
-***UD3_GET_PWM9DUTY [#x328a466] 
-PWM9のキャプチャしたパルス幅を取得する。~ 
-GPIO9を[[UD3_CFG_GPIO9>#j90d8ac4]]でGPIO_PWM_CAPに設定する必要がある。 
- uint16_t UD3_GET_PWM9DUTY (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint16_t パルス幅 
--使用例 
- // PWM9のパルス幅を取得します。 
- pulse = UD3_GET_PWM9DUTY (); 
- 
-***UD3_GET_PWM10DUTY [#kf3fddcb] 
-PWM10のキャプチャしたパルス幅を取得する。~ 
-GPIO10を[[UD3_CFG_GPIO10>#d2dd2f39]]でGPIO_PWM_CAPに設定する必要がある。 
- uint16_t UD3_GET_PWM10DUTY (void); 
--パラメータ 
-~なし 
--戻り値 
-~uint16_t パルス幅 
--使用例 
- // PWM10のパルス幅を取得します。 
- pulse = UD3_GET_PWM10DUTY (); 
- 
-***UD3_GET_RCPOS [#q1f997f7] 
-指定したチャネルのラジコンプロポのスティックの値を取得する。~ 
-この取得した値は、[[UD3_MEASURE_STICKPOS>#w3c149c4]]で調整された値となる。 
- int16_t UD3_GET_RCPOS (uint8_t ch); 
--パラメータ 
---uint8_t '''ch''' 
-~チャネルを指定する。 
-~0: PWM8(GPIO8)~ 
-1:PWM9(GPIO9)~ 
-2:PWM10(GPIO10) 
--戻り値 
-~int16_t ラジコンプロポのスティックの位置 
--使用例 
- // PWM8に接続されているラジコンプロポのスティックの位置を取得します。 
- pos = UD3_GET_RCPOS (0); 
- 
-**サンプルプログラム [#kf8170aa] 
APIを使用したいくつかのサンプルプログラムを用意しました。以下よりダウンロードして解凍した上でご利用ください。 APIを使用したいくつかのサンプルプログラムを用意しました。以下よりダウンロードして解凍した上でご利用ください。
-#ref(UD3_SMPL1.0.zip)+#ref(UD3_SMPL1.1.zip)
詳細はコメントおよびAPIのドキュメントを参考に読み解いてください。 詳細はコメントおよびAPIのドキュメントを参考に読み解いてください。
 +-更新履歴~
 +2010/7/29 Ver.1.1~
 +UD3_SET_MOTORRAMPの指定を追加~
 +~
 +2010/7/15 Ver.1.0~
 +初期リリース
 +
 +***基本操作フロー [#heb0404f]
 +個々の詳細に関しては上記を参照していただくとして、サンプルプログラムをコンパイルしてUD3に転送して実行させるまでの流れを書いておきます。
 ++GCC Developer Liteで任意のソースをコンパイラオプションで「UD3」を選択してコンパイル。
 ++コンパイル成功と同時にSIMPLE TERMが勝手に起動する。二重に起動する事はない。
 ++PCとUD3をUSBケーブルで接続し、PB1とPB2を押しながらPB3のリセットを押す。PB3だけを放しUD3から「ピロッ」という起動音が聞こえたら全てのボタンを放して構わない。
 ++SIMPLE TERMのポートを適宜設定しポートを開くと、SIMPLE TERMのターミナルウィンドウに起動メッセージが表示されたら転送可能状態。
 ++SIMPLE TERMの転送メニューからスクリプト実行をクリックし、プログラムの転送を開始する。スクリプトはプログレスバーが100%になれば転送を完了し、転送したプログラムを実行する。
 ++転送したプログラムに実行が遷移する際にSIMPLE TERMで開いているポートが切断されるが、プログラムが正常に実行されてしまえば再度活性化してポートが自動的に開く。
**注意事項 [#hc748965] **注意事項 [#hc748965]
Line 1235: Line 291:
***UD3との相違 [#wf3e23e5] ***UD3との相違 [#wf3e23e5]
-Bluetoothによるワイヤレス通信機能を有しない。またブートローダにおけるBluetoothの設定も無効 -Bluetoothによるワイヤレス通信機能を有しない。またブートローダにおけるBluetoothの設定も無効
--RS485・USB・Bluetooth経由のDynamixelプロトコルをしようした通信に対応しない。よってUD3コンフィギュレータでの設定や操作も未サポート。+-RS485・USB・Bluetooth経由のDynamixelプロトコルを使用した通信に対応しない。よってUD3コンフィギュレータでの設定や操作も未サポート。
***利用上の注意 [#i2beab9a] ***利用上の注意 [#i2beab9a]
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|下記に記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。&br;安全に配慮しない場合は人命や財産を失う恐れがある。|
-CPU及びセンサ用電源とモータ用電源は同じソースから供給しない事。 -CPU及びセンサ用電源とモータ用電源は同じソースから供給しない事。
--高いモータ用電源の使用はひかえる事。Lipoの場合7.4Vバッテリパックを2本直列程度にとどめる事を強く推奨する。 +-一般的な直流電源装置をモータ用電源として使用しない事。 
--万が一モータ駆動用のHブリッジが破損するときわめて大きな短絡電流が流入する。その際モータ用電源として接続したバッテリが電流制限ないし保護機能を持っていない場合は、極めて重篤な事態を生じる可能性がある。+-高いモータ用電源の使用はひかえる事。当然アクチュエータにもよるが、公称7.4Vバッテリパックを2本直列程度にとどめる事を強く推奨する。 
 +-ノイズが大きいモータを使用する場合はノイズ対策を十分に施す事。アークが飛ぶ程の高インダクタンスなモータの使用は推奨しない。また、そういったモータへ定格を超える電源を印加する事は絶対にしてはならない。アバランシェ破壊を誘発する可能性が高くなる。 
 +-基本的にフルパワーでモータの瞬時逆回転は許容しない。その場合低電ないし仕様以下の電源電圧であっても、逆転した瞬間に逆起電力やノイズにより見かけ上の電源電圧が上昇し、もしFETの絶対最大定格を超えた場合は即時短絡破壊する。 
 +-最悪ショート状態に陥りバッテリにとって超過放電に陥る可能性がある以上、最終的に電流を遮断するためのヒューズ等を電源ラインに挿入しておく。 
 +-モータ駆動用のHブリッジが破損するときわめて大きな短絡電流が流入する。その際モータ用電源として接続したバッテリが電流制限ないし保護機能を持っていない場合は、極めて重篤な事態を生じる可能性がある。
-運転中以外はバッテリは必ず取り外す。 -運転中以外はバッテリは必ず取り外す。
-ブスバーに直接半田したり導電性の物と接触させてはならない。 -ブスバーに直接半田したり導電性の物と接触させてはならない。
 +-移動台車等を構成した際にUSBケーブルを接続したまま使用しない。
 +-タスクを複数起動すると1つのタスクの実行時間が延びる。よほどの事が無い限りシングルタスクにとどめておくことを推奨する。
-本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。 -本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom