概要 anchor.png

UD3ライブラリは、ユニバーサルドライバ3およびユニバーサルドライバ3.5シリーズで構成されたアプリケーションを効率的に運用するためのライブラリです。
GPIOに入力されたセンサの状態からそれに応じたDCモータの制御といったアプリケーションレベルにおいて最低限必要な機能を本ライブラリでカバーします。
なお、本ライブラリはその外のライブラリ(SAM7S, SAM7S_TOPPERS等)を静的に使用していますので、ベンダーから提供されるGCC Developer Liteをインストールする際は、各コンポーネントを手動で選択することなくフルインストールした環境で使用して下さい。また、全てのソースもインストールと同時に展開されますので、必要に応じて参照できます。
本ライブラリで提供されるAPIのプロトタイプ宣言や特殊な構造体はud3.hに集約されています。このヘッダファイルに宣言が無いAPIは使用しないで下さい。

Page Top

API anchor.png

機能別にAPIの詳細を解説します。主なコンテンツを以下に紹介します。

必要に応じてAPIを使用してユーザアプリケーションを構成します。まずはUD3のサンプルプログラムを一通り実行して、動作を確認する事を推奨します。

Page Top

OS及びタスク関連 anchor.png

OSで管理されるタスクや時間に関するAPIです。
ユーザは任意のタスクを最大4つまで作成可能で、自動的にマルチタスクで動作する設定になっています。システムで予約されたタスク(TASK5)は自動的に登録されますが、意図的に停止させてしまうと全APIが正常に動作しなくなりますので絶対に停止させないでください。

Page Top

main anchor.png

メインタスクに相当し、一番最初に実行される初期化関数。タスクの起動やGPIOの初期化等はこの関数内で記述する。
なお本タスクは優先度が最上位にあるため、並列で他のタスクを実行する際はUD3_WAIT等を挿入して意図的にタスクスイッチを促すべきである。

int main (void);
  • パラメータ

    なし

  • 戻り値

    int

  • 使用例
    #include <ud3.h>
    
    int main (void) {
      // 動作環境設定
      // GPIO8/9/10をPWMキャプチャモードに設定
      UD3_CFG_GPIO8 (GPIO_PWM_CAP_PULLUP_OFF);
      UD3_CFG_GPIO9 (GPIO_PWM_CAP_PULLUP_OFF);
      UD3_CFG_GPIO10 (GPIO_PWM_CAP_PULLUP_OFF);
      // モータの設定
      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);
    }
    
Page Top

UD3_TASK1 anchor.png

UD3は最大4つのユーザ定義タスクを同時に実行出来るが、UD3_TASK1の名称で作られた関数は自動的にタスク1としてOSに登録される。
タスクの活性化はUD3_ACTIVE_TASKで行う。
複数のタスクを定義し活性化すると各々のタスクは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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (1);  // タスク1をアクティブ化
    }
    
Page Top

UD3_TASK2 anchor.png

UD3は最大4つのユーザ定義タスクを同時に実行出来るが、UD3_TASK2の名称で作られた関数は自動的にタスク2としてOSに登録される。
タスクの活性化はタスクの活性化はUD3_ACTIVE_TASKで行う。
で行う。
複数のタスクを定義し活性化すると各々のタスクは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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (2);  // タスク2をアクティブ化
    }
    
Page Top

UD3_TASK3 anchor.png

UD3は最大4つのユーザ定義タスクを同時に実行出来るが、UD3_TASK3の名称で作られた関数は自動的にタスク3としてOSに登録される。
タスクの活性化はUD3_ACTIVE_TASKで行う。
複数のタスクを定義し活性化すると各々のタスクは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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (3);  // タスク3をアクティブ化
    }
    
Page Top

UD3_TASK4 anchor.png

UD3は最大4つのユーザ定義タスクを同時に実行出来るが、UD3_TASK4の名称で作られた関数は自動的にタスク4としてOSに登録される。
タスクの活性化はUD3_ACTIVE_TASKで行う。
複数のタスクを定義し活性化すると各々のタスクは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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (4);  // タスク4をアクティブ化
    }
    
Page Top

UD3_ACTIVE_TASK anchor.png

指定したタスクをアクティブにする。タスクをアクティブにしていない場合には、タスクを定義してあってもそのタスクは実行されない。

void UD3_ACTIVE_TASK (task);
  • パラメータ
    • int_t task

      1~4: タスク番号

  • 戻り値

    なし

  • 使用例
    #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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (2);  // タスク2をアクティブ化
    }
    
Page Top

UD3_SUSPEND_TASK anchor.png

指定したアクティブなタスクをサスペンドする。レジュームするにはUD3_RESUME_TASKを使用する。

int UD3_SUSPEND_TASK (char task);
  • パラメータ
    • char task

      1~4: タスク番号

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (1);  // タスク1をアクティブ化
      UD3_SUSPEND_TASK (1); // タスク1をサスペンド
    }
    
Page Top

UD3_RESUME_TASK anchor.png

指定したサスペンドしているタスクをレジュームする。サスペンドするにはUD3_SUSPEND_TASKを使用する。

int UD3_RESUME_TASK (char task);
  • パラメータ
    • char task

      1~4: タスク番号

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #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秒待ち
      }
    }
    
    int main (void) {
      UD3_ACTIVE_TASK (1);  // タスク1をアクティブ化
      UD3_SUSPEND_TASK (1); // タスク1をサスペンド
      UD3_RESUME_TASK (1);  // タスク1をレジューム
    }
    
Page Top

UD3_WAIT anchor.png

ミリ秒単位でプログラムの実行を待つ。

void UD3_WAIT (int_t tm);
  • パラメータ
    • int_t tm

      1~: 待ち時間[msec]を指定

  • 戻り値

    なし

  • 使用例
    #include <ud3.h>
    
    int main (void) {
      for (;;) {
        UD3_SET_LED (true);  // LED点灯
        UD3_WAIT(500);       // 0.5秒待ち
        UD3_SET_LED (false); // LED消灯
        UD3_WAIT(500);       // 0.5秒待ち
      }
    }
Page Top

UD3_GET_ELAPSEDTIME anchor.png

アプリケーション起動時からの経過時間をミリ秒単位で取得。

uint32_t UD3_GET_ELAPSEDTIME (void);
  • パラメータ

    なし

  • 戻り値

    0~: 経過時間

  • 使用例
    uint32_t tm = UD3_GET_ELAPSEDTIME ();
    
Page Top

UD3_GET_BTCONNECT anchor.png

Bluetoothの接続状態を取得する。なお、接続相手の強制的な電源断等が発生した場合は、状態の繊維に数秒の時間を要する場合がある。

bool UD3_GET_BTCONNECT (void);
  • パラメータ

    なし

  • 戻り値

    true: 接続中
    false: 切断中

  • 使用例
    bool stat = UD3_GET_BTCONNECT();
    
Page Top

GPIO anchor.png

GPIO0~11の初期設定や状態の取得APIです。

Page Top

UD3_CFG_GPIO0 anchor.png

GPIO0の端子機能を設定する。

int UD3_CFG_GPIO0 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #include <ud3.h>
    
    int main (void) {
      UD3_CFG_GPIO0 (GPIO_IN_PULLUP_OFF);
      UD3_CFG_GPIO1 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO2 (GPIO_ADC);
      UD3_CFG_GPIO3 (GPIO_OUT_OPENDRAIN);
      UD3_CFG_GPIO4 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO5 (GPIO_ADC);
      UD3_CFG_GPIO6 (GPIO_ADC);
      UD3_CFG_GPIO7 (GPIO_ADC);
    }
    
Page Top

UD3_CFG_GPIO1 anchor.png

GPIO1の端子機能を設定する。

int UD3_CFG_GPIO1 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO2 anchor.png

GPIO2の端子機能を設定する。

int UD3_CFG_GPIO2 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO3 anchor.png

GPIO3の端子機能を設定する。

int UD3_CFG_GPIO3 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

      デフォルトはGPIO_IN_PULLUP_OFF。

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO4 anchor.png

GPIO4の端子機能を設定する。

int UD3_CFG_GPIO4 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO5 anchor.png

GPIO5の端子機能を設定する。

int UD3_CFG_GPIO5 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO6 anchor.png

GPIO6の端子機能を設定する。

int UD3_CFG_GPIO6 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO7 anchor.png

GPIO7の端子機能を設定する。

int UD3_CFG_GPIO7 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: GPIO_ADC (アナログ入力)
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO8 (update) anchor.png

GPIO8の端子機能を設定する。

int UD3_CFG_GPIO8 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: 指定不可
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)
      5: GPIO_PWM_CAP_PULLUP_OFF (パルス幅計測用入力かつプルアップOFF)
      6: GPIO_PWM_CAP_PULLUP_ON (パルス幅計測用入力かつプルアップON)
      7: GPIO_PWM (PWM出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #include <ud3.h>
    
    int main (void) {
      UD3_CFG_GPIO8 (GPIO_PWM_CAP_PULLUP_OFF);
      UD3_CFG_GPIO9 (GPIO_PWM);
      UD3_CFG_GPIO10 (GPIO_PWM_CAP_PULLUP_OFF);
    }
    
Page Top

UD3_CFG_GPIO9 (update) anchor.png

GPIO9の端子機能を設定する。

int UD3_CFG_GPIO9 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: 指定不可
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)
      5: GPIO_PWM_CAP_PULLUP_OFF (パルス幅計測用入力かつプルアップOFF)
      6: GPIO_PWM_CAP_PULLUP_ON (パルス幅計測用入力かつプルアップON)
      7: GPIO_PWM (PWM出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_CFG_GPIO10 (update) anchor.png

GPIO10の端子機能を設定する。

int UD3_CFG_GPIO10 (TGPIOMode conf);
  • パラメータ
    • TGPIOMode conf

      0: GPIO_IN_PULLUP_OFF (入力かつ内蔵プルアップOFF) (デフォルト)
      1: GPIO_IN_PULLUP_ON (入力かつ内蔵プルアップON)
      2: 指定不可
      3: GPIO_OUT_OPENDRAIN (オープンドレイン出力)
      4: GPIO_OUT_PUSHPULL (プッシュプル出力)
      5: GPIO_PWM_CAP_PULLUP_OFF (パルス幅計測用入力かつプルアップOFF)
      6: GPIO_PWM_CAP_PULLUP_ON (パルス幅計測用入力かつプルアップON)
      7: GPIO_PWM (PWM出力)

  • 戻り値

    0: 成功
    -1: パラメータエラー

Page Top

UD3_GET_GPIOINPUT anchor.png

GPIOの端子状態を取得。入力に使用するGPIOをUD3_CFG_GPIOxで設定する必要がある。

uint16_t UD3_GET_GPIOINPUT (void);
  • パラメータ

    なし

  • 戻り値

    0~2047: 全GPIOの端子状態
    戻り値の各ビットは以下のGPIOポートに割り当てられる。

    BIT1514131211109876543210
    GPIO-----109876543210
  • 使用例
    #include <ud3.h>
    
    void main (void) {
      UD3_ASSIGN_USB_TO_CONSOLE ();
    
      UD3_CFG_GPIO0 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO1 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO2 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO3 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO4 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO5 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO6 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO7 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO8 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO9 (GPIO_IN_PULLUP_ON);
      UD3_CFG_GPIO10 (GPIO_IN_PULLUP_ON);
    
      while (1) {
        UD3_PRINTF ("\rGPIO => [0x%03X]\33[K", UD3_GET_GPIOINPUT ());
        UD3_WAIT (50);
      }
    }
    
Page Top

UD3_SET_GPIOOUTPUT anchor.png

UD3_CFG_GPIOxにてGPIO_OUT_OPENDRAINないしGPIO_OUT_PUSHPULLに設定された端子のみ出力状態を変更する。

int UD3_SET_GPIOOUTPUT (uint16_t out);
  • パラメータ
    • uint16_t out

      0~2047: 全GPIOへ出力するデータ
      outの各ビットとGPIOの出力ポートは以下に割り当てられる。

      out BIT1514131211109876543210
      GPIO-----109876543210

      デフォルトは0。

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      UD3_ASSIGN_USB_TO_CONSOLE ();
    
      // GPIO0~10の初期化
      UD3_CFG_GPIO0 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO1 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO2 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO3 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO4 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO5 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO6 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO7 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO8 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO9 (GPIO_OUT_PUSHPULL);
      UD3_CFG_GPIO10 (GPIO_OUT_PUSHPULL);
    
      while (1) {
        int i = 0;
        UD3_SET_GPIOOUTPUT (i);
        UD3_PRINTF ("\rGPIO <= [0x%03X]\33[K", UD3_GET_GPIOINPUT ());
        if (++i > 0x7FF) i = 0;
        UD3_WAIT (50);
      }
    }
    
Page Top

UD3_GET_ADC anchor.png

GPIO0~7に入力された電圧(最大3.3V)値を10bitの分解能で取得する。
ADCに使用するGPIOをUD3_CFG_GPIOxで設定する必要がある。

uint16_t UD3_GET_ADC (uint8_t ch);
  • パラメータ
    • uint8_t ch

      0~7: 計測するGPIOの番号(GPIO0~GPIO7)

  • 戻り値

    0~1023: 指定GPIO番号で計測された電圧(0~3.3V)

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      UD3_ASSIGN_USB_TO_CONSOLE ();
    
      UD3_CFG_GPIO0 (GPIO_ADC);
      UD3_CFG_GPIO1 (GPIO_ADC);
      UD3_CFG_GPIO2 (GPIO_ADC);
      UD3_CFG_GPIO3 (GPIO_ADC);
      UD3_CFG_GPIO4 (GPIO_ADC);
      UD3_CFG_GPIO5 (GPIO_ADC);
      UD3_CFG_GPIO6 (GPIO_ADC);
      UD3_CFG_GPIO7 (GPIO_ADC);
    
      while (1) {
        UD3_PUTS ("\rADC = ");
        int  i;
        for (i = 0; i < 8; i++) UD3_PRINTF ("[ch%d:%4d]", i, UD3_GET_ADC (i));
        UD3_PUTS ("\33[K");
        UD3_WAIT (50);
      }
    }
    
Page Top

MMI anchor.png

プッシュボタン・ディップスイッチ・LED・ブザー関連のAPIです。

Page Top

UD3_SET_BUZZER anchor.png

任意周波数・音長でブザーを鳴らす。

int UD3_SET_BUZZER (uint8_t scale, uint8_t len);
  • パラメータ
    • uint8_t scale

      0~52: Cから始まる(C,C#,D,D#,E,F,F#,G,G#,A,A#,B)6オクターブの音程

    • uint8_t len

      0~250: 音長(x10ms)

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      while (1) {
        UD3_SET_BUZZER (24, 20);
        UD3_WAIT (300);
        UD3_SET_BUZZER (30, 20);
        UD3_WAIT (300);
      }
    }
    
Page Top

UD3_SET_LED anchor.png

LEDの点灯/消灯。

int UD3_SET_LED (uint8_t on);
  • パラメータ
    • uint8_t on

      0: 消灯
      1: 点灯

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      while (1) {
        UD3_SET_LED (1);
        UD3_WAIT (200);
        UD3_SET_LED (0);
        UD3_WAIT (200);
      }
    }
    
Page Top

UD3_GET_PUSHBUTTON1 anchor.png

PB1の状態を取得。

bool UD3_GET_PUSHBUTTON1 (void);
  • パラメータ

    なし

  • 戻り値

    true: PB1が押されている
    false: PB1が放されている

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      while (1) {
        UD3_SET_LED (UD3_GET_PUSHBUTTON1 ());
        UD3_WAIT (10);
      }
    }
    
Page Top

UD3_GET_PUSHBUTTON2 anchor.png

PB2の状態を取得。

bool UD3_GET_PUSHBUTTON2 (void);
  • パラメータ

    なし

  • 戻り値

    true: PB2が押されている
    false: PB2が放されている

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      while (1) {
        UD3_SET_LED (UD3_GET_PUSHBUTTON2 ());
        UD3_WAIT (10);
      }
    }
    
Page Top

UD3_GET_DIPSWICH anchor.png

DIP1の状態を取得。

uint8_t UD3_GET_DIPSWICH (void);
  • パラメータ

    なし

  • 戻り値

    0~15: DIP1に設定された値

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      UD3_ASSIGN_USB_TO_CONSOLE ();
      while (1) {
        UD3_PRINTF ("\rDIP = %X\33[K", UD3_GET_DIPSWICH ());
        UD3_WAIT (50);
      }
    }
    
Page Top

モータアンプ anchor.png

2つのモータドライバの初期設定やデューティー関連のAPIです。

なお、設定デューティ値と出力の相関は以下の図に従い、Duty limit(API上用意されず常時1000‰)とRecharge bandにより制限された水色の出力となります。なお、Recharge bandは全てにおいて優先されます。

ud3_motor_limit1.png
ud3_motor_limit2.png
Page Top

UD3_SET_M1FREQUENCY anchor.png

M1のPWM周波数を設定。

int UD3_SET_M1FREQUENCY (uint8_t freq);
  • パラメータ
    • uint8_t freq

      1~200: PWMのキャリア周波数を指定[kHz]
      周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。

      デフォルトは50[kHz]

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // M1の周波数を100kHzに設定
    UD3_SET_M1FREQUENCY (100);
Page Top

UD3_SET_M1RECHARGE anchor.png

駆動方式の都合から100%のデューテーィ比で連続運転が出来ないため、100%で指令された場合の目減り分(Recharge band)の値。負荷や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);
Page Top

UD3_SET_M1DRIVEMODE anchor.png

M1の駆動モードを設定する。

UD3_SET_M1DRIVEMODE (mode);
  • パラメータ
    • uint8_t mode

      0: ダイナミックブレーキモード (デフォルト)
      1: 通常運転モード

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // M1をドライブモードにします
    UD3_SET_M1DRIVEMODE (1);
Page Top

UD3_SET_M1PWMDUTY anchor.png

M1のPWMデューティー比を設定する。

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);
Page Top

UD3_GET_M1PWMDUTY anchor.png

M1の設定済みPWMデューティー比を取得する。

int16_t UD3_GET_M1PWMDUTY (void);
  • パラメータ

    なし

  • 戻り値

    -1000~0~1000: M1のデューティ[‰]

Page Top

UD3_SET_M2FREQUENCY anchor.png

M2のPWM周波数を設定。

int UD3_SET_M2FREQUENCY (uint8_t freq);
  • パラメータ
    • uint8_t freq

      1~200: PWMのキャリア周波数を指定[kHz]
      周波数が高くなると最終段での出力が得られにくくなるため、最大でも100kHz程度にとどめることを推奨する。

      デフォルトは50[kHz]

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // M2の周波数を100kHzに設定
    UD3_SET_M2FREQUENCY (100);
Page Top

UD3_SET_M2RECHARGE anchor.png

駆動方式の都合から100%のデューテーィ比で連続運転が出来ないため、100%で指令された場合の目減り分(Recharge band)の値。負荷や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);
Page Top

UD3_SET_M2DRIVEMODE anchor.png

M2の駆動モードを設定する。

UD3_SET_M2DRIVEMODE (mode);
  • パラメータ
    • uint8_t mode

      0: ダイナミックブレーキモード (デフォルト)
      1: 通常運転モード

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // M2をドライブモードにします
    UD3_SET_M2DRIVEMODE (1);
Page Top

UD3_SET_M2PWMDUTY anchor.png

M2のPWMデューティー比を設定する。

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);
Page Top

UD3_GET_M2PWMDUTY anchor.png

M2の設定済みPWMデューティー比を取得する。

int16_t UD3_GET_M2PWMDUTY (void);
  • パラメータ

    なし

  • 戻り値

    -1000~0~1000: M2のデューティ[‰]

Page Top

UD3_SET_MOTORREVRSE anchor.png

M1/2の回転方向を反転させる。

int UD3_SET_MOTORREVRSE (int8_t rev);
  • パラメータ
    • int8_t rev

      0: ノーマル (デフォルト)
      1: M1のみ反転
      2: M2のみ反転
      3: M1,M2反転

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // 両モータの回転を逆転します。
    UD3_SET_MOTORREVRSE (3);
Page Top

UD3_SET_MOTORENABLE anchor.png

モータの駆動ゲート回路を活性/不活性化する。M1及びM2の出力は本設定が最終出力段のスイッチとして機能するため、いかなる設定がなされていても、 ゲートをONにしない限り出力がなされない。
なお、基板のリビジョンがE093Cよりも古い場合は、CN3からの電源供給がなされていない状態でゲートを活性化すると、ゲートドライバに過大な負荷がかかり破損する可能性がある。必ず電源が供給されたことを確認した上で本APIで活性化させる手順を踏むこと。
また、基板のリビジョンがE093C以降の場合は、本設定に関わらずCN3に供給される電源が無い場合は出力が行われない。

int UD3_SET_MOTORENABLE (int8_t enb);
  • パラメータ
    • int8_t enbv

      0: モータドライバの機能を不活性化しモータをフリー状態 (デフォルト)
      1: モータドライバの機能を活性化し各パラメータに応じて出力

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // モータ駆動回路を活性化する。
    UD3_SET_MOTORENABLE (1);
Page Top

UD3_GET_MOTORENABLE anchor.png

モータの駆動ゲート回路の状態を取得する。

bool UD3_GET_MOTORENABLE (void);
  • パラメータ

    なし

  • 戻り値

    true: ゲートON
    false: ゲートOFF

  • 使用例
    bool stat = UD3_GET_MOTORENABLE();
Page Top

UD3_SET_MOTORRAMP anchor.png

M1/M2共に指令デューティーに対して最終段は常時ランプ関数を介して出力がなされる。その際のミリ秒毎での増分を設定する。
指令値の急変に際し、モータや機構、電源への負荷を軽減する目的で使用する。

int UD3_SET_MOTORRAMP (int8_t ramp);
  • パラメータ
    • int8_t ramp

      1~200: 1ミリ秒あたりの増分[‰]
      1を指定した場合、デューティー比を0‰の状態から1000‰へ変更すると1秒かけて0‰から1000‰へ直線的に変化する。また200を指定した場合、デューティー比を0‰の状態から1000‰へ変更すると5ミリ秒かけて0‰から1000‰へ直線的に変化する。

      デフォルトは20。

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // 1ミリ秒毎の勾配を10‰に設定
    UD3_SET_MOTORRAMP (10);
Page Top

UD3_SET_DUTY anchor.png

M1とM2へPWMデューティー比を同時に設定する。

int UD3_SET_DUTY (int16_t m1duty, int16_t m2duty);
  • パラメータ
    • int16_t m1duty

      -1000~0~1000: M1用デューティーを[‰]で指定

    • int16_t m2duty

      -1000~0~1000: M2用デューティーを[‰]で指定

  • 戻り値

    0: 成功
    -1: パラメータエラー

  • 使用例
    // M1を30%,M2を20%のDUTYで動作させます。
    UD3_SET_DUTY (300, 200);
Page Top

GPIOパルス入出力 anchor.png

Page Top

UD3_SET_PWM8CLOCK (update) anchor.png

PWM8のPWM出力及びPWM幅計測用ベースクロックを設定する。PWM出力及びPWM幅計測は本クロックを基準に最大16bitカウンタとして機能する。
GPIO8をUD3_CFG_GPIO8でGPIO_PWMないしGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

int UD3_SET_PWM8CLOCK (uint8_t clock);
  • パラメータ
    • uint8_t clock

      ベースクロックを0~4で選択。

      0: _UD_PWM_CLOCK_24M (24MHz)
      1: _UD_PWM_CLOCK_6M (6MHz)
      2: _UD_PWM_CLOCK_1500K (1.5MHz)
      3: _UD_PWM_CLOCK_375K (375kHz)
      4: _UD_PWM_CLOCK_46K (46.875kHz)

      デフォルトは1(6MHz)

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM8のベースクロック24Mに設定します。
    UD3_SET_PWM8CLOCK (_UD_PWM_CLOCK_24M);
Page Top

UD3_SET_PWM8CYCLE anchor.png

PWM8の周期を設定する。
GPIO8をUD3_CFG_GPIO8でGPIO_PWMに設定する必要がある。

int UD3_SET_PWM8CYCLE (uint16_t cycle);
  • パラメータ
    • uint16_t cycle

      周期を1~65535で設定。

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM8の周期を設定します。
    UD3_SET_PWM8CYCLE (5000);
Page Top

UD3_SET_PWM8DUTY anchor.png

PWM8のDUTYを設定する。
GPIO8をUD3_CFG_GPIO8で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);
Page Top

UD3_SET_PWM9CLOCK (update) anchor.png

PWM9のPWM出力及びPWM幅計測用ベースクロックを設定する。PWM出力及びPWM幅計測は本クロックを基準に最大16bitカウンタとして機能する。
GPIO9をUD3_CFG_GPIO9でGPIO_PWMないしGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

int UD3_SET_PWM9CLOCK (uint8_t clock);
  • パラメータ
    • uint8_t clock

      ベースクロックを0~4で選択。

      0: _UD_PWM_CLOCK_24M (24MHz)
      1: _UD_PWM_CLOCK_6M (6MHz)
      2: _UD_PWM_CLOCK_1500K (1.5MHz)
      3: _UD_PWM_CLOCK_375K (375kHz)
      4: _UD_PWM_CLOCK_46K (46.875kHz)

      デフォルトは1(6MHz)

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM8のベースクロック24Mに設定します。
    UD3_SET_PWM9CLOCK (_UD_PWM_CLOCK_24M);
Page Top

UD3_SET_PWM9CYCLE anchor.png

PWM9の周期を設定する。
GPIO9をUD3_CFG_GPIO9でGPIO_PWMに設定する必要がある。

int UD3_SET_PWM9CYCLE (uint16_t cycle);
  • パラメータ
    • uint16_t cycle

      周期を1~65535で設定。

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM9の周期を設定します。
    UD3_SET_PWM9CYCLE (5000);
Page Top

UD3_SET_PWM9DUTY anchor.png

PWM9のDUTYを設定する。
GPIO9をUD3_CFG_GPIO9で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);
Page Top

UD3_SET_PWM10CLOCK (update) anchor.png

PWM10のPWM出力及びPWM幅計測用ベースクロックを設定する。PWM出力及びPWM幅計測は本クロックを基準に最大16bitカウンタとして機能する。
GPIO10をUD3_CFG_GPIO10でGPIO_PWMないしGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

int UD3_SET_PWM10CLOCK (uint8_t clock);
  • パラメータ
    • uint8_t clock

      ベースクロックを0~4で選択。

      0: _UD_PWM_CLOCK_24M (24MHz)
      1: _UD_PWM_CLOCK_6M (6MHz)
      2: _UD_PWM_CLOCK_1500K (1.5MHz)
      3: _UD_PWM_CLOCK_375K (375kHz)
      4: _UD_PWM_CLOCK_46K (46.875kHz)

      デフォルトは1(6MHz)

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM10のベースクロック24Mに設定します。
    UD3_SET_PWM10CLOCK (_UD_PWM_CLOCK_24M);
Page Top

UD3_SET_PWM10CYCLE anchor.png

PWM10の周期を設定する。
GPIO10をUD3_CFG_GPIO10でGPIO_PWMに設定する必要がある。

int UD3_SET_PWM10CYCLE (uint16_t cycle);
  • パラメータ
    • uint16_t cycle

      周期を1~65535で設定。

  • 戻り値

    成功すると0 、パラメータエラーがあった場合は-1が返される。

  • 使用例
    // PWM10の周期を設定します。
    UD3_SET_PWM10CYCLE (5000);
Page Top

UD3_SET_PWM10DUTY anchor.png

PWM10のDUTYを設定する。
GPIO10をUD3_CFG_GPIO10で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);
Page Top

UD3_GET_PWM8DUTY anchor.png

PWM8のキャプチャしたパルス幅を取得する。
GPIO8をUD3_CFG_GPIO8でGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

uint16_t UD3_GET_PWM8DUTY (void);
  • パラメータ

    なし

  • 戻り値

    uint16_t パルス幅

  • 使用例
    // PWM8のパルス幅を取得します。
    pulse = UD3_GET_PWM8DUTY ();
Page Top

UD3_GET_PWM9DUTY anchor.png

PWM9のキャプチャしたパルス幅を取得する。
GPIO9をUD3_CFG_GPIO9でGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

uint16_t UD3_GET_PWM9DUTY (void);
  • パラメータ

    なし

  • 戻り値

    uint16_t パルス幅

  • 使用例
    // PWM9のパルス幅を取得します。
    pulse = UD3_GET_PWM9DUTY ();
Page Top

UD3_GET_PWM10DUTY anchor.png

PWM10のキャプチャしたパルス幅を取得する。
GPIO10をUD3_CFG_GPIO10でGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

uint16_t UD3_GET_PWM10DUTY (void);
  • パラメータ

    なし

  • 戻り値

    uint16_t パルス幅

  • 使用例
    // PWM10のパルス幅を取得します。
    pulse = UD3_GET_PWM10DUTY ();
Page Top

UD3_MEASURE_STICKPOS anchor.png

ラジコン用プロポのスティック位置に不感帯を設けるための調整を行う。調整値は不揮発メモリに保存され、以後UD3_GET_RCPOSUD3_RC_MOTORで内部的に使用される。
不感帯はスティックの中立及び最大・最少位置にそれぞれ設けられ、中立位置と最大・最少位置を正確に計測した後に反映される。スティックの位置と不感帯、デューティーとして指令される値の相関は以下の図に示す。

ud3_stick2duty.png

予めUD3_CFG_GPIO8,UD3_CFG_GPIO9,UD3_CFG_GPIO10でGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

本APIが実行されると以下の手順で調整操作を行う。

  1. UD3_MEASURE_STICKPOSがコールされるとピロリと音が鳴り、計測モードに遷移した事を知らせる。
  2. プロポのスティックから手を離した状態(中立位置)にしたらPB1を押して放す。するとLED1が点滅し始め中立位置の計測が開始される。
  3. 中立位置を維持した状態で数秒が経過したら再度PB1を押してから放すと中立位置の計測が終了しLED1が消灯する。
  4. 再度PB1を押して放すとLED1が点滅を始め、ブザーが鳴り始める。この間に諸々が正常であればプロポのスティックをそれぞれ上下ないし左右の端まで何度か移動させていると、ランダムだったブザーの音程がスティックの角度に連動して変化するようになる。
  5. スティックの角度に応じてなめらかに音階が変化するようになったらPB1を押して放すと上下限の計測が終了しLED1が消灯する。
  6. その後「明るいメロディー」が鳴ったら調整が成功した合図で、調整値が不揮発メモリに保存される。「暗いメロディー」が鳴ると失敗となるが、いずれの状態であっても調整処理は終了する。
    なお、成否判定はGPIO8とGPIO9の入力信号のみを対象としている。
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>
    
    int main (void) {
      // GPIO8,9をパルス幅計測モードに
      UD3_CFG_GPIO8 (GPIO_PWM_CAP_PULLUP_OFF);
      UD3_CFG_GPIO9 (GPIO_PWM_CAP_PULLUP_OFF);
      // モータの駆動モード設定
      UD3_SET_M1DRIVEMODE (_UD_MOTOR_DRIVE);
      UD3_SET_M2DRIVEMODE (_UD_MOTOR_DRIVE);
    
      UD3_ACTIVE_TASK (1);
    }
    
    UD3_TASK1 () {
      // プロポの調整
      if (UD3_MEASURE_STICKPOS (10, 10)) {
        // モータ駆動許可
        UD3_SET_MOTORENABLE (true);
        while (1) {
          // 調整値を元にモータを駆動
          // M1にGPIO8、M2にGPIO9を割り当てている
          UD3_RC_MOTOR (0, 1);
        }
      }
    }
Page Top

UD3_GET_RCPOS anchor.png

指定したチャネルのラジコンプロポのスティックの値を取得する。
この取得した値は、UD3_MEASURE_STICKPOSで調整された値となる。
予めUD3_CFG_GPIO8,UD3_CFG_GPIO9,UD3_CFG_GPIO10でGPIO_PWM_CAP_PULLUP_OFFないしGPIO_PWM_CAP_PULLUP_ONに設定する必要がある。

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);
Page Top

UD3_RC_MOTOR anchor.png

UD3_MEASURE_STICKPOSにて調整されたラジコン用プロポの受信器から出力されるパルスを元にM1とM2の駆動パワーに割り当てる。

void UD3_RC_MOTOR (uint8_t rc1, uint8_t rc2);
  • パラメータ
    • 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>
    
    int main (void) {
      // GPIO8,9をパルス幅計測モードに
      UD3_CFG_GPIO8 (GPIO_PWM_CAP_PULLUP_OFF);
      UD3_CFG_GPIO9 (GPIO_PWM_CAP_PULLUP_OFF);
      // モータの駆動モード設定
      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);
      }
     }
Page Top

SIXAXIS anchor.png

BluetoothのモードがSIXAXISで、SIXAXISないしDUALSHOCK3がワイヤレス接続された時に取得出来る情報です。デジタルボタンの押力の取得及び振動モータの運転は出来ません。 なお、予めUD3_ASSIGN_BT_TO_SIXAXISにてBluetoothにSIXAXIS通信機能を割り当てておく必要は特にありませんが、ブートローダでBluetoothをSIXAXISモードに設定した場合はそれ以外の機能への割り当てはできません。

※こちらのAPIはUD3.5では利用できません。

Page Top

UD3_GET_PSDIGITAL1 anchor.png

SIXAXISのグループ1に属するボタン情報を取得する。

uint8_t UD3_GET_PSDIGITAL1(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t グループ1のボタン情報 押下状態で該当ビットが1

    BITbit7bit6bit5bit4bit3bit2bit1bit0
    ボタンSTARTANALOG R
    PUSH
    ANALOG L
    PUSH
    SELECT
  • 使用例
    uint8_t btg1 = UD3_GET_PSDIGITAL1 ();
Page Top

UD3_GET_PSDIGITAL2 anchor.png

SIXAXISのグループ2に属するボタン情報を取得する。

uint8_t UD3_GET_PSDIGITAL2(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t グループ2のボタン情報 押下状態で該当ビットが1

    BITbit7bit6bit5bit4bit3bit2bit1bit0
    ボタン×R1L1R2L2
  • 使用例
    uint8_t btg2 = UD3_GET_PSDIGITAL2 ();
Page Top

UD3_GET_PSDIGITAL3 anchor.png

SIXAXISのグループ3に属するボタン情報を取得する。

uint8_t UD3_GET_PSDIGITAL3(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t グループ3のボタン情報 押下状態で該当ビットが1

    BITbit7..1bit0
    ボタン-PS
  • 使用例
    uint8_t btg3 = UD3_GET_PSDIGITAL3 ();
Page Top

UD3_GET_PSLX anchor.png

SIXAXISの左側アナログスティックのX軸情報を取得する。

uint8_t UD3_GET_PSLX(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t 左側アナログスティックの位置が左端で0、右端で255を返す。

  • 使用例
    uint8_t lx = UD3_GET_PSLX ();
Page Top

UD3_GET_PSLY anchor.png

SIXAXISの左側アナログスティックのY軸情報を取得する。

uint8_t UD3_GET_PSLY(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t 左側アナログスティックの位置が上端で0、下端で255を返す。

  • 使用例
    uint8_t ly = UD3_GET_PSLY ();
Page Top

UD3_GET_PSRX anchor.png

SIXAXISの右側アナログスティックのX軸情報を取得する。

uint8_t UD3_GET_PSRX(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t 右側アナログスティックの位置が左端で0、右端で255を返す。

  • 使用例
    uint8_t rx = UD3_GET_PSRX ();
Page Top

UD3_GET_PSRY anchor.png

SIXAXISの右側アナログスティックのY軸情報を取得する。

uint8_t UD3_GET_PSRY(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t 右側アナログスティックの位置が上端で0、下端で255を返す。

  • 使用例
    uint8_t ry = UD3_GET_PSRY ();
Page Top

UD3_GET_PSL2 anchor.png

SIXAXISのL2の情報を取得する。

uint8_t UD3_GET_PSL2(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t L2が解放で0、最大押下で255を返す。

  • 使用例
    uint8_t l2 = UD3_GET_PSL2 ();
Page Top

UD3_GET_PSR2 anchor.png

SIXAXISのR2の情報を取得する。

uint8_t UD3_GET_PSR2(void);
  • パラメータ

    なし

  • 戻り値

    uint8_t R2が解放で0、最大押下で255を返す。

  • 使用例
    uint8_t r2 = UD3_GET_PSR2 ();
Page Top

UD3_GET_PSGX anchor.png

SIXAXISのX軸加速度を取得する。

uint16_t UD3_GET_PSGX(void);
  • パラメータ

    なし

  • 戻り値

    uint16_t 0~1023の範囲でX軸の加速度を返す。

  • 使用例
    uint16_t gx = UD3_GET_PSGX ();
Page Top

UD3_GET_PSGY anchor.png

SIXAXISのY軸加速度を取得する。

uint16_t UD3_GET_PSGY(void);
  • パラメータ

    なし

  • 戻り値

    uint16_t 0~1023の範囲でY軸の加速度を返す。

  • 使用例
    uint16_t gy = UD3_GET_PSGY ();
Page Top

UD3_GET_PSGZ anchor.png

SIXAXISのZ軸加速度を取得する。

uint16_t UD3_GET_PSGZ(void);
  • パラメータ

    なし

  • 戻り値

    uint16_t 0~1023の範囲でZ軸の加速度を返す。

  • 使用例
    uint16_t gz = UD3_GET_PSGZ ();
Page Top

UD3_GET_PSGYRO anchor.png

SIXAXISの角加速度を取得する。

uint16_t UD3_GET_PSGYRO(void);
  • パラメータ

    なし

  • 戻り値

    uint16_t 0~1023の範囲で角加速度を返す。

  • 使用例
    uint16_t gyro = UD3_GET_PSGYRO ();
Page Top

コンソール anchor.png

USB・Bluetooth・RS485の各I/Fは、「コンソール」「Dynamixelホスト」「Dynamixelクライアント」「SIXAXIS通信」のいずれかの機能を割り当てて使用する事ができます。USBとRS485は初期状態においてどの機能も割り当てられていないため、それぞれの機能を使用したAPIも機能しない状態になっています。Bluetoothについては、ブートローダでSIXAXISモードの設定がなされた場合のみ、「SIXAXIS通信」機能が自動的に活性化します。
なお、RS485に「コンソール」機能を割り当てた場合はボーレートが1M[bps]固定され、「Dynamixelホスト」機能はRS485のみ、「SIXAXIS通信」機能はBluetoothにのみ設定できます。

Page Top

UD3_ASSIGN_USB_TO_CONSOLE (new) anchor.png

USBをコンソール機能に割り当てる。以前のUSBへの割り当ては解除される。

bool UD3_ASSIGN_USB_TO_CONSOLE (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

  • 使用例
    #include <ud3.h>
    
    void main (void) {
      int i, n = 0;
      char c, s[20];
      // 全I/Fをコンソールに
      UD3_ASSIGN_USB_TO_CONSOLE ();
      UD3_ASSIGN_RS485_TO_CONSOLE ();
      UD3_ASSIGN_BT_TO_CONSOLE ();
      while (1) {
        // 受信バッファにデータがあるまでループ
        while (UD3_RXBUFF ()) {
          // 1バイト取り出して送信
          UD3_PUTC (c = UD3_GETC ());
          switch (c) {
            // 文字列送信
            case '0': UD3_PUTS ("\nHELLO!\n"); break;
            // 書式付文字列送信
            case '1': UD3_PRINTF ("\nn++=%d\n", n++); break;
            // 文字列受信
            case '2': UD3_PUTS ("\ns<-"); UD3_GETS (s, 19); UD3_PUTS ("\n"); UD3_PUTS (s); break;
            // 書式付文字列入力
            case '3': UD3_PUTS ("\ni<-"); UD3_SCANF ("%d", &i); UD3_PRINTF ("\nd=%d\n", i); break;
          }
        }
        UD3_WAIT (10);
      }
    }
    
Page Top

UD3_ASSIGN_USB_TO_DXCLIENT (new) anchor.png

USBをDynamixelのクライアント機能に割り当てる。以前のUSBへの割り当ては解除される。

bool UD3_ASSIGN_USB_TO_DXCLIENT (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_DEASSIGN_USB (new) anchor.png

以前のUSBへの割り当てを解除する。

bool UD3_DEASSIGN_USB (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_ASSIGN_RS485_TO_CONSOLE (new) anchor.png

RS485をコンソール機能に割り当てる。以前のRS485への割り当ては解除される。

bool UD3_ASSIGN_RS485_TO_CONSOLE (void);
  • パラメータ

    なし

  • 戻り値

    bool 割り当てが成功するとtrue

Page Top

UD3_ASSIGN_RS485_TO_DXCLIENT (new) anchor.png

RS485をDynamixelのクライアント機能に割り当てる。以前のRS485への割り当ては解除される。

bool UD3_ASSIGN_RS485_TO_DXCLIENT (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_ASSIGN_RS485_TO_DXHOST (new) anchor.png

RS485をDynamixelのホスト機能に割り当てる。以前のRS485への割り当ては解除される。

bool UD3_ASSIGN_RS485_TO_DXHOST (void);
  • パラメータ

    なし

  • 戻り値

    bool 割り当てが成功するとtrue

Page Top

UD3_DEASSIGN_RS485 (new) anchor.png

以前のRS485への割り当てを解除する。

bool UD3_DEASSIGN_RS485 (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_ASSIGN_BT_TO_CONSOLE (new) anchor.png

Bluetoothをコンソール機能に割り当てる。以前のBluetoothへの割り当ては解除される。

bool UD3_ASSIGN_BT_TO_CONSOLE (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_ASSIGN_BT_TO_DXCLIENT (new) anchor.png

BluetoothをDynamixelのクライアント機能に割り当てる。以前のBluetoothへの割り当ては解除される。

bool UD3_ASSIGN_BT_TO_DXCLIENT (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_ASSIGN_BT_TO_SIXAXIS (new) anchor.png

BluetoothをSIXAXISないしDUALSHOCK3との通信機能に割り当てる。以前のBluetoothへの割り当ては解除される。
なお、UD3.5では利用できない。

bool UD3_ASSIGN_BT_TO_SIXAXIS (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_DEASSIGN_BT (new) anchor.png

以前のBluetoothへの割り当てを解除する。

bool UD3_DEASSIGN_BT (void);
  • パラメータ

    なし

  • 戻り値

    true: 割り当て成功
    false: 割り当て失敗

Page Top

UD3_PUTC anchor.png

コンソールに1文字送信する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

void UD3_PUTC (char c);
  • パラメータ
    • char c

      送信文字(1バイト)を指定

  • 戻り値

    なし

Page Top

UD3_GETC anchor.png

コンソールから1文字取得する。受信バッファが空の場合は最低1バイト受信するまで返らない。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

char UD3_GETC (void);
  • パラメータ

    なし

  • 戻り値

    char 受信文字

Page Top

UD3_GETS anchor.png

コンソールからエンター(CRかLF)ないしエスケープ(ESC)コードを受信するまで文字列を取得する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

int UD3_GETS (char *s, int len);
  • パラメータ
    • char *s

      受信文字列を保存するバッファのポインタを指定

    • int len

      受信文字列の最大バッファサイズを指定

  • 戻り値

    int 受信文字数

Page Top

UD3_PUTS anchor.png

コンソールへ文字列を送信する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

void UD3_PUTS (char *s);
  • パラメータ
    • char *s

      送信文字列(NULLターミネーション)のポインタを指定

  • 戻り値

    なし

Page Top

UD3_PUTSB anchor.png

コンソールへ指定バイト数のデータを送信する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

void UD3_PUTSB (char *s, int len);
  • パラメータ
    • char *s

      送信データのポインタを指定

    • int len

      送信バイト数を指定

  • 戻り値

    なし

Page Top

UD3_RXBUFF anchor.png

コンソールから受信されたバイト数を返す。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

int UD3_RXBUFF (void);
  • パラメータ

    なし

  • 戻り値

    int 受信バイト数。

Page Top

UD3_PRINTF anchor.png

コンソールへ書式化文字列を送信する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

int UD3_PRINTF (const char *format, ...) {
  • パラメータ
    • const char *format

      書式文字列

    • ...

      可変個引数

  • 戻り値

    int 送信バイト数。

Page Top

UD3_SCANF anchor.png

コンソールから書式化文字列を受信する。
予めUD3_ASSIGN_xxx_TO_CONSOLEにて使用するI/Fにコンソールを割り当てておく必要がある。

int UD3_SCANF (const char *type, void *val);
  • パラメータ
    • const char *type

      書式文字列

    • void *val

      格納先変数

  • 戻り値

    int 入力データの個数。

Page Top

Dynamixelホスト anchor.png

RS485を使用してUD3をホストとした他のDynamixelスレーブ機器との通信を行います。
なお、UD3のRS485はデフォルトで機能が割り当てられていないため、予めUD3_ASSIGN_RS485_TO_DXHOSTにてRS485にDynamixelホスト機能を割り当てておく必要があります。

Page Top

DX_ChangeBaudrate anchor.png

ボーレートを変更する。ここで設定されるボーレートがネットワーク共通の通信速度となり、以後このボーレートを基準にして動作する。
なお、ライブラリ内では静的に1M[bps]で初期化されているため、そのままで支障がなければ特に変更の必要はない。

bool DX_ChangeBaudrate (uint32_t baud);
  • パラメータ
    • uint32_t baud

      ネットワークの装置とFDIII-HC間の通信速度[bps]

  • 戻り値

    true: 成功
    false: 失敗 (誤差率が2%を超える、もしくは設定可能範囲外)

  • 使用例
    #include <ud3.h>
    #include <math.h>
    
    #define _ADDRESS_LED                25
    #define _ADDRESS_GOAL_POSITION      30
    #define _ADDRESS_PRESENT_POSITION   36
    
    short presentpos, goalpos;
    
    void main (void) {
      uint16_t err;
    
      UD3_WAIT (2000);
    
      UD3_ASSIGN_USB_TO_CONSOLE ();
      UD3_ASSIGN_RS485_TO_DXHOST ();
    
      DX_ChangeBaudrate (1000000);
    
      if (DX_Ping (1, 500, &err)) UD3_PUTS ("\n[PING] ID:1 Found"); else UD3_PUTS ("\n[PING] ID:1 Not Found");
    
      UD3_ACTIVE_TASK (1);
      UD3_ACTIVE_TASK (2);
      UD3_ACTIVE_TASK (3);
    
      while (1) {
        UD3_PRINTF ("\rGOALPOS=%4d PRESENTPOS=%4d DIFF=%5d\33[K", goalpos, presentpos, goalpos - presentpos);
        UD3_WAIT (50);
      }
    }
    
    UD3_TASK1 () {
      while (1) {
        goalpos = sin (UD3_GET_ELAPSEDTIME () / 1000.0) * 511.5 + 511.5;
        DX_WriteWordData (1, _ADDRESS_GOAL_POSITION, goalpos, DX_CalcTimeout (6), NULL);
        UD3_WAIT (5);
      }
    }
    
    UD3_TASK2 () {
      uint16_t p;
      while (1) {
        if (DX_ReadWordData (1, _ADDRESS_PRESENT_POSITION, &p, DX_CalcTimeout (8), NULL)) presentpos = p;
        UD3_WAIT (10);
      }
    }
    
    UD3_TASK3 () {
      uint8_t led = 0;
      while (1) {
        DX_WriteByteData (1, _ADDRESS_LED, led, DX_CalcTimeout (6), NULL);
        led ^= 1;
        UD3_WAIT (200);
      }
    }
    
Page Top

DX_CalcTimeout anchor.png

ボーレートとステータスパケットのパラメータサイズを元にタイムアウト時間を算定する。

uint32_t DX_CalcTimeout (int num);
  • パラメータ
    • int num

      バイト数

  • 戻り値

    タイムアウト時間[ms]

Page Top

DX_Ping anchor.png

指定されたIDを持つデバイスを対象に、PINGを発行する。IDがわかっている場合に使用する。

bool DX_Ping (uint8_t id, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~253: 対象デバイスのID

    • uint32_t timeout

      検出タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 指定IDのデバイスが見つかった
    false: 指定IDのデバイスがタイムアウト時間を超過しても見つからない

Page Top

DX_Ping2 anchor.png

不特定のIDを持つデバイスを対象に、PINGを発行する(ブロードキャストIDを使用してPING)。IDがわからないデバイスに対して使用するため、ネットワーク上に接続されるデバイスは1台のみとする事。

bool DX_Ping2 (uint8_t *id, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t *id

      検出されたデバイスのIDを保存するuint8_t型の変数のアドレス

    • uint32_t timeout

      検出タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 何らかのデバイスが応答しIDを取得できた
    false: デバイスがタイムアウト時間を超過しても見つからない

Page Top

DX_ReadByteData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムから1バイトのデータを読み出す。

bool DX_ReadByteData (uint8_t id, uint8_t adr, uint8_t *result, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~253: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • uint8_t *result

      読み出したデータを保存するuint8_t型の変数のアドレス

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_ReadWordData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムから1ワード(2バイト)のデータを読み出す。

bool DX_ReadWordData (uint8_t id, uint8_t adr, uint16_t *result, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~253: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • uint16_t *result

      読み出したデータを保存するuint16_t型の変数のアドレス

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_ReadBlockData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムを起点に指定されたサイズの連続したデータを読み出す。

bool DX_ReadBlockData (uint8_t id, uint8_t adr, uint8_t *result, uint8_t len, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~253: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • uint8_t *result

      読み出したデータを保存するuint8_t型の配列のアドレス

    • uint8_t len

      読み出すバイト数

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_WriteByteData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムに指定された1バイトのデータを書き込む。

bool DX_WriteByteData (uint8_t id, uint8_t adr, uint8_t dat, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~254: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • uint8_t dat

      0~255: 送信データ

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_WriteWordData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムに指定された1ワード(2バイト)のデータを書き込む。

bool DX_WriteWordData (uint8_t id, uint8_t adr, uint16_t dat, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~254: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • uint16_t dat

      0~65535: 送信データ

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_WriteBlockData anchor.png

指定されたIDを持つデバイスを対象に、指定アドレスのアイテムを起点に指定されたサイズの連続したデータを書き込む。

bool DX_WriteBlockData (uint8_t id, uint8_t adr, const uint8_t *dat, uint8_t len, uint32_t timeout, uint16_t *errcode);
  • パラメータ
    • uint8_t id

      0~254: 対象デバイスのID

    • uint8_t adr

      0~254: 対象アドレス

    • const uint8_t *dat

      書き込むデータを保存したuint8_t型の配列のアドレス

    • uint8_t len

      datのバイト数

    • uint32_t timeout

      0~500: 受信タイムアウト時間[ms]

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗

Page Top

DX_WriteSyncData (update) anchor.png

SYNCインストラクションを使用して複数のデバイスの同一アイテムに対して各々異なる値を一括送信する。

bool DX_WriteSyncData (const uint8_t *dat, uint8_t size, uint16_t *errcode);
  • パラメータ
    • const uint8_t *dat

      SYNCインストラクションのパラメータ部分を記述したuint8_t型の配列のアドレス

    • uint8_t size

      datのバイト数

    • uint16_t *errcode

      デバイスおよびライブラリのエラーコードを取得するuint16_t型の変数のアドレス、もしくはNULL

  • 戻り値

    true: 成功
    false: 失敗


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
最終更新: 2013-08-21 (水) 13:35:35 (JST) (1401d)