1: 2011-08-07 (日) 16:39:21 takaboo | 現: 2013-08-21 (水) 13:35:35 takaboo | ||
---|---|---|---|
Line 1: | Line 1: | ||
#nocontents | #nocontents | ||
*概要 [#od287dd9] | *概要 [#od287dd9] | ||
- | UD3ライブラリは、[[ユニバーサルドライバ3>UD3]]シリーズで構成されたアプリケーションを効率的に運用するためのライブラリです。~ | + | UD3ライブラリは、[[ユニバーサルドライバ3>UD3]]および[[ユニバーサルドライバ3.5>UD3.5]]シリーズで構成されたアプリケーションを効率的に運用するためのライブラリです。~ |
GPIOに入力されたセンサの状態からそれに応じたDCモータの制御といったアプリケーションレベルにおいて最低限必要な機能を本ライブラリでカバーします。~ | GPIOに入力されたセンサの状態からそれに応じたDCモータの制御といったアプリケーションレベルにおいて最低限必要な機能を本ライブラリでカバーします。~ | ||
- | なお、本ライブラリはその外のライブラリ(SAM7S, SAM7S_TOPPERS等)を静的に使用していますので、ベンダーから提供されるGCC Developer Liteをインストールする際は、各コンポーネントを手動で選択することなくフルインストールした環境で使用して下さい。また、全てのソースもインストールと同時に展開されますので、必要に応じて参照できます。~ | + | なお、本ライブラリはその他のライブラリ(SAM7S, SAM7S_TOPPERS等)を静的に使用していますので、ベンダーから提供されるGCC Developer Liteをインストールする際は、各コンポーネントを手動で選択することなくフルインストールした環境で使用して下さい。また、全てのソースもインストールと同時に展開されますので、必要に応じて参照できます。~ |
本ライブラリで提供されるAPIのプロトタイプ宣言や特殊な構造体はud3.hに集約されています。このヘッダファイルに宣言が無いAPIは使用しないで下さい。 | 本ライブラリで提供されるAPIのプロトタイプ宣言や特殊な構造体はud3.hに集約されています。このヘッダファイルに宣言が無いAPIは使用しないで下さい。 | ||
Line 552: | Line 552: | ||
int UD3_SET_GPIOOUTPUT (uint16_t out); | int UD3_SET_GPIOOUTPUT (uint16_t out); | ||
-パラメータ | -パラメータ | ||
- | ~uint16_t '''out''' | + | --uint16_t '''out''' |
~0~2047: 全GPIOへ出力するデータ~ | ~0~2047: 全GPIOへ出力するデータ~ | ||
outの各ビットとGPIOの出力ポートは以下に割り当てられる。 | outの各ビットとGPIOの出力ポートは以下に割り当てられる。 | ||
Line 594: | Line 594: | ||
***UD3_GET_ADC [#f0162d6a] | ***UD3_GET_ADC [#f0162d6a] | ||
- | GPIO0~7に入力された電圧値を取得する。~ | + | GPIO0~7に入力された電圧(最大3.3V)値を10bitの分解能で取得する。~ |
ADCに使用するGPIOをUD3_CFG_GPIOxで設定する必要がある。 | ADCに使用するGPIOをUD3_CFG_GPIOxで設定する必要がある。 | ||
uint16_t UD3_GET_ADC (uint8_t ch); | uint16_t UD3_GET_ADC (uint8_t ch); | ||
Line 765: | Line 765: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''freq''' | --uint8_t '''freq''' | ||
- | ~周波数を0~200[kHz]で指定。~ | + | ~1~200: PWMのキャリア周波数を指定[kHz]~ |
- | なお周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。 | + | 周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。 |
- | ~デフォルトは50kHz | + | ~デフォルトは50[kHz] |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 781: | Line 781: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''re''' | --uint8_t '''re''' | ||
- | ~0~100[%]を設定。100%-re が出力リミッタとして働く。 | + | ~0~100: [%]~ |
- | ~デフォルトは5% | + | 100%-re が指令値に対するリミッタ値として機能 |
+ | ~デフォルトは5[%] | ||
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 795: | Line 796: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''mode''' | --uint8_t '''mode''' | ||
- | ~0: _UD_MOTOR_BRAKE (ブレーキモード)~ | + | ~0: ダイナミックブレーキモード (デフォルト)~ |
- | 1: _UD_MOTOR_DRIVE (ドライブモード) | + | 1: 通常運転モード |
- | ~デフォルトは_UD_MOTOR_BRAKE。 | + | |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 803: | Line 803: | ||
-使用例 | -使用例 | ||
// M1をドライブモードにします | // M1をドライブモードにします | ||
- | UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); | + | UD3_SET_M1DRIVEMODE (1); |
***UD3_SET_M1PWMDUTY [#de09cbea] | ***UD3_SET_M1PWMDUTY [#de09cbea] | ||
Line 810: | Line 810: | ||
-パラメータ | -パラメータ | ||
--int16_t '''duty''' | --int16_t '''duty''' | ||
- | ~デューティーを-1000~0~1000[‰]で指定。マイナス値は逆転を意味する。~ | + | ~-1000~0~1000: デューティーを指定[‰]~ |
- | 0‰の場合はショートブレーキとなる。 | + | マイナス値は逆転、0の場合はダイナミックブレーキ |
- | ~デフォルトは0‰。 | + | ~デフォルトは0。 |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 827: | Line 827: | ||
~なし | ~なし | ||
-戻り値 | -戻り値 | ||
- | ~-1000~0~1000[‰]。 | + | ~-1000~0~1000: M1のデューティ[‰] |
***UD3_SET_M2FREQUENCY [#jf15fafa] | ***UD3_SET_M2FREQUENCY [#jf15fafa] | ||
Line 834: | Line 834: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''freq''' | --uint8_t '''freq''' | ||
- | ~周波数を0~200[kHz]で指定。~ | + | ~1~200: PWMのキャリア周波数を指定[kHz]~ |
- | なお周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。 | + | 周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。 |
- | ~デフォルトは50kHz | + | ~デフォルトは50[kHz] |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 850: | Line 850: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''re''' | --uint8_t '''re''' | ||
- | ~0~100[%]を設定。100%-re が出力リミッタとして働く。 | + | ~0~100: [%]~ |
- | ~デフォルトは5%。 | + | 100%-re が指令値に対するリミッタ値として機能 |
+ | ~デフォルトは5[%] | ||
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 864: | Line 865: | ||
-パラメータ | -パラメータ | ||
--uint8_t '''mode''' | --uint8_t '''mode''' | ||
- | ~0: _UD_MOTOR_BRAKE (ブレーキモード)~ | + | ~0: ダイナミックブレーキモード (デフォルト)~ |
- | 1: _UD_MOTOR_DRIVE (ドライブモード) | + | 1: 通常運転モード |
- | ~デフォルトは_UD_MOTOR_BRAKE。 | + | |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 872: | Line 872: | ||
-使用例 | -使用例 | ||
// M2をドライブモードにします | // M2をドライブモードにします | ||
- | UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); | + | UD3_SET_M2DRIVEMODE (1); |
***UD3_SET_M2PWMDUTY [#k2c1cab9] | ***UD3_SET_M2PWMDUTY [#k2c1cab9] | ||
Line 879: | Line 879: | ||
-パラメータ | -パラメータ | ||
--int16_t '''duty''' | --int16_t '''duty''' | ||
- | ~デューティーを-1000~0~1000[‰]で指定。マイナス値は逆転を意味する。~ | + | ~-1000~0~1000: デューティーを指定[‰]~ |
- | 0‰の場合はショートブレーキとなる。 | + | マイナス値は逆転、0の場合はダイナミックブレーキ~ |
- | ~デフォルトは0‰。 | + | ~デフォルトは0。 |
-戻り値 | -戻り値 | ||
~0: 成功~ | ~0: 成功~ | ||
Line 896: | Line 896: | ||
~なし | ~なし | ||
-戻り値 | -戻り値 | ||
- | ~-1000~0~1000[‰]。 | + | ~-1000~0~1000: M2のデューティ[‰] |
***UD3_SET_MOTORREVRSE [#m604c98d] | ***UD3_SET_MOTORREVRSE [#m604c98d] | ||
Line 912: | Line 912: | ||
-使用例 | -使用例 | ||
// 両モータの回転を逆転します。 | // 両モータの回転を逆転します。 | ||
- | UD3_SET_MOTORREVRSE (_M1_REV | _M2_REV); | + | UD3_SET_MOTORREVRSE (3); |
***UD3_SET_MOTORENABLE [#x441e3d8] | ***UD3_SET_MOTORENABLE [#x441e3d8] | ||
- | モータの駆動ゲート回路を活性/不活性化する。~ | + | モータの駆動ゲート回路を活性/不活性化する。M1及びM2の出力は本設定が最終出力段のスイッチとして機能するため、いかなる設定がなされていても、 |
- | なお、CN3からの電源供給がなされていない状態で活性化するとゲートドライバに過大な負荷がかかり破損する可能性がある。必ず電源が供給されたことを確認した上で本APIで活性化させる手順を踏むこと。 | + | ゲートをONにしない限り出力がなされない。~ |
+ | なお、基板のリビジョンがE093Cよりも古い場合は、CN3からの電源供給がなされていない状態でゲートを活性化すると、ゲートドライバに過大な負荷がかかり破損する可能性がある。必ず電源が供給されたことを確認した上で本APIで活性化させる手順を踏むこと。~ | ||
+ | また、基板のリビジョンがE093C以降の場合は、本設定に関わらずCN3に供給される電源が無い場合は出力が行われない。 | ||
int UD3_SET_MOTORENABLE (int8_t enb); | int UD3_SET_MOTORENABLE (int8_t enb); | ||
-パラメータ | -パラメータ | ||
Line 1173: | Line 1175: | ||
-使用例 | -使用例 | ||
include <ud3.h> | include <ud3.h> | ||
+ | |||
int main (void) { | int main (void) { | ||
// GPIO8,9をパルス幅計測モードに | // GPIO8,9をパルス幅計測モードに | ||
Line 1181: | Line 1183: | ||
UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); | UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); | ||
UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); | UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); | ||
+ | |||
UD3_ACTIVE_TASK (1); | UD3_ACTIVE_TASK (1); | ||
} | } | ||
+ | |||
UD3_TASK1 () { | UD3_TASK1 () { | ||
// プロポの調整 | // プロポの調整 | ||
Line 1233: | Line 1235: | ||
-使用例 | -使用例 | ||
include <ud3.h> | include <ud3.h> | ||
+ | |||
int main (void) { | int main (void) { | ||
// GPIO8,9をパルス幅計測モードに | // GPIO8,9をパルス幅計測モードに | ||
Line 1241: | Line 1243: | ||
UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); | UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE); | ||
UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); | UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE); | ||
+ | |||
// モータ駆動許可 | // モータ駆動許可 | ||
UD3_SET_MOTORENABLE (true); | UD3_SET_MOTORENABLE (true); | ||
+ | |||
UD3_ACTIVE_TASK (1); | UD3_ACTIVE_TASK (1); | ||
} | } | ||
+ | |||
UD3_TASK1 () { | UD3_TASK1 () { | ||
// プロポの調整 | // プロポの調整 | ||
Line 1260: | Line 1262: | ||
BluetoothのモードがSIXAXISで、SIXAXISないしDUALSHOCK3がワイヤレス接続された時に取得出来る情報です。デジタルボタンの押力の取得及び振動モータの運転は出来ません。 | BluetoothのモードがSIXAXISで、SIXAXISないしDUALSHOCK3がワイヤレス接続された時に取得出来る情報です。デジタルボタンの押力の取得及び振動モータの運転は出来ません。 | ||
なお、予め[[UD3_ASSIGN_BT_TO_SIXAXIS>#h5d1973e]]にてBluetoothにSIXAXIS通信機能を割り当てておく必要は特にありませんが、ブートローダでBluetoothをSIXAXISモードに設定した場合はそれ以外の機能への割り当てはできません。 | なお、予め[[UD3_ASSIGN_BT_TO_SIXAXIS>#h5d1973e]]にてBluetoothにSIXAXIS通信機能を割り当てておく必要は特にありませんが、ブートローダでBluetoothをSIXAXISモードに設定した場合はそれ以外の機能への割り当てはできません。 | ||
+ | |||
+ | ※こちらのAPIはUD3.5では利用できません。 | ||
***UD3_GET_PSDIGITAL1 [#na9afa77] | ***UD3_GET_PSDIGITAL1 [#na9afa77] | ||
Line 1506: | Line 1510: | ||
false: 割り当て失敗 | false: 割り当て失敗 | ||
***UD3_ASSIGN_BT_TO_SIXAXIS (new) [#h5d1973e] | ***UD3_ASSIGN_BT_TO_SIXAXIS (new) [#h5d1973e] | ||
- | BluetoothをSIXAXISないしDUALSHOCK3との通信機能に割り当てる。以前のBluetoothへの割り当ては解除される。 | + | BluetoothをSIXAXISないしDUALSHOCK3との通信機能に割り当てる。以前のBluetoothへの割り当ては解除される。~ |
+ | なお、UD3.5では利用できない。 | ||
bool UD3_ASSIGN_BT_TO_SIXAXIS (void); | bool UD3_ASSIGN_BT_TO_SIXAXIS (void); | ||
-パラメータ | -パラメータ | ||
Line 1513: | Line 1518: | ||
~true: 割り当て成功~ | ~true: 割り当て成功~ | ||
false: 割り当て失敗 | false: 割り当て失敗 | ||
+ | |||
***UD3_DEASSIGN_BT (new) [#da99d076] | ***UD3_DEASSIGN_BT (new) [#da99d076] | ||
以前のBluetoothへの割り当てを解除する。 | 以前のBluetoothへの割り当てを解除する。 | ||
Line 1831: | Line 1837: | ||
false: 失敗 | false: 失敗 | ||
- | ***DX_WriteSyncData (new) [#uebb1423] | + | ***DX_WriteSyncData (update) [#uebb1423] |
SYNCインストラクションを使用して複数のデバイスの同一アイテムに対して各々異なる値を一括送信する。 | SYNCインストラクションを使用して複数のデバイスの同一アイテムに対して各々異なる値を一括送信する。 | ||
- | bool DX_WriteSyncData (uint8_t size, const uint8_t *dat, uint16_t *errcode); | + | bool DX_WriteSyncData (const uint8_t *dat, uint8_t size, uint16_t *errcode); |
-パラメータ | -パラメータ | ||
- | --uint8_t '''size''' | ||
- | ~datのバイト数 | ||
--const uint8_t *'''dat''' | --const uint8_t *'''dat''' | ||
~SYNCインストラクションのパラメータ部分を記述したuint8_t型の配列のアドレス | ~SYNCインストラクションのパラメータ部分を記述したuint8_t型の配列のアドレス | ||
+ | --uint8_t '''size''' | ||
+ | ~datのバイト数 | ||
--uint16_t '''*errcode''' | --uint16_t '''*errcode''' | ||
~デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL | ~デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL |