ページへ戻る

− Links

 印刷 

UD4 API :: Besttechnology

knowledge:UD4 API

ページ内コンテンツ
  • 概要
  • API
    • OS及びタスク関連
    • システム
      • UD4_SOFTRESET
    • 時間
      • UD4_WAIT
      • UD4_GET_ELAPSEDTIME
    • シリアル通信
      • UD4_USB_INIT
      • UD4_USB_SETBAUDRATE
      • UD4_USB_CSW
      • UD4_USB_PUTS
      • UD4_USB_PUTSB
      • UD4_USB_PUTSBD
      • UD4_USB_GETC
      • UD4_USB_PUTC
      • UD4_USB_TX_BUFF
      • UD4_USB_RX_BUFF
      • UD4_USB_RX_PURGE
      • UD4_USB_PRINTF
      • UD4_USB_SCANF
      • UD4_RS485_INIT
      • UD4_RS485_SET_TERMINATOR
      • UD4_RS485_SETBAUDRATE
      • UD4_RS485_CSW
      • UD4_RS485_PUTS
      • UD4_RS485_PUTSB
      • UD4_RS485_PUTSBD
      • UD4_RS485_GETC
      • UD4_RS485_PUTC
      • UD4_RS485_TX_BUFF
      • UD4_RS485_RX_BUFF
      • UD4_RS485_RX_PURGE
      • UD4_RS485_PRINTF
      • UD4_RS485_SCANF
    • LED
      • UD4_SET_LED1
      • UD4_TOGGLE_LED1
      • UD4_SET_LED2
      • UD4_TOGGLE_LED2
    • GPIO
      • UD4_CFG_GPIO
      • UD4_GET_GPIO_IN
      • UD4_SET_GPIO_OUT
      • UD4_GET_ADC
      • UD4_GET_PWM
    • I/O EXPANDER
      • UD4_GET_EXIO_PB2
      • UD4_GET_EXIO_PB3
      • UD4_GET_EXIO_DIP
      • UD4_GET_EXIO_IN
      • UD4_GET_EXIO_ALL
      • UD4_SET_EXIOT_PULLUP
    • プロポ
      • UD4_MEASURE_STICKPOS
      • UD4_GET_RCPOS
    • モータ
      • UD4_SET_MOTORENABLE
      • UD4_GET_MOTORENABLE
      • UD4_SET_FREQUENCY
      • UD4_SET_MOTORREVRSE
      • UD4_SET_M1RECHARGE
      • UD4_SET_M2RECHARGE
      • UD4_SET_M1DUTY
      • UD4_SET_M2DUTY
      • UD4_SET_DUTY
      • UD4_GET_M1DUTY
      • UD4_GET_M2DUTY

概要 anchor.png[1]

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

Page Top

API anchor.png[3]

Page Top

OS及びタスク関連 anchor.png[4]

OSで管理されるタスクや時間に関するAPIです。
ユーザはメモリの許す限りのタスクを作成可能で、自動的にマルチタスクで動作する設定になっています。

Page Top

システム anchor.png[5]

Page Top

UD4_SOFTRESET anchor.png[6]

MCUにソフトリセットを発行しブートローダに戻る。

void UD4_SOFTRESET (void)
Page Top

時間 anchor.png[7]

Page Top

UD4_WAIT anchor.png[8]

ミリ秒単位のディレイを挿入する。

void UD4_WAIT (const uint32_t ms)
Page Top

UD4_GET_ELAPSEDTIME anchor.png[9]

ミリ秒単位でインクリメントされるカウンタ値を取得。

uint32_t UD4_GET_ELAPSEDTIME (void)
Page Top

シリアル通信 anchor.png[10]

Page Top

UD4_USB_INIT anchor.png[11]

USBシリアルポートに接続されたUSARTを初期化する。

uint32_t UD4_USB_INIT (uint32_t baudrate, uint8_t *txb, uint16_t txb_size, uint8_t *rxb, uint16_t rxb_size)
Page Top

UD4_USB_SETBAUDRATE anchor.png[12]

USBシリアルポートに接続されたUSARTのボーレートを変更する。

uint32_t UD4_USB_SETBAUDRATE (uint32_t baudrate)
Page Top

UD4_USB_CSW anchor.png[13]

void (*UD4_USB_CSW) (void)
Page Top

UD4_USB_PUTS anchor.png[14]

USBシリアルポートに接続されたUSARTから文字列を送信する。

void UD4_USB_PUTS (const char *str)
Page Top

UD4_USB_PUTSB anchor.png[15]

USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。

void UD4_USB_PUTSB (const uint8_t *buf, int size)
Page Top

UD4_USB_PUTSBD anchor.png[16]

USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。送信の際に送信バッファは使用しない。

void UD4_USB_PUTSBD (const uint8_t *buf, int size)
Page Top

UD4_USB_GETC anchor.png[17]

USBシリアルポートに接続されたUSARTの受信バッファから1文字取り出す。受信バッファが空の時は受信されるまで待機する。

char UD4_USB_GETC (void)
Page Top

UD4_USB_PUTC anchor.png[18]

USBシリアルポートに接続されたUSARTから1文字送信する。

void UD4_USB_PUTC (char ch)
Page Top

UD4_USB_TX_BUFF anchor.png[19]

USBシリアルポートに接続されたUSARTの送信バッファに残る未送信データのバイト数を返す。

int UD4_USB_TX_BUFF (void)
Page Top

UD4_USB_RX_BUFF anchor.png[20]

USBシリアルポートに接続されたUSARTの受信バッファに受信されたデータのバイト数を返す。

int UD4_USB_RX_BUFF (void)
Page Top

UD4_USB_RX_PURGE anchor.png[21]

USBシリアルポートに接続されたUSARTの受信バッファに残ったデータを破棄する。

void UD4_USB_RX_PURGE (void)
Page Top

UD4_USB_PRINTF anchor.png[22]

USBシリアルポートに接続されたUSARTから書式化文字列を送信する。

int UD4_USB_PRINTF (const char *str, ...)
Page Top

UD4_USB_SCANF anchor.png[23]

int UD4_USB_SCANF (const char *str, ...)
Page Top

UD4_RS485_INIT anchor.png[24]

uint32_t UD4_RS485_INIT (uint32_t baudrate, uint8_t *txb, uint16_t txb_size, uint8_t *rxb, uint16_t rxb_size)
Page Top

UD4_RS485_SET_TERMINATOR anchor.png[25]

RS-485 I/Fの終端抵抗をONないしOFFする。

void UD4_RS485_SET_TERMINATOR (bool term_on)
Page Top

UD4_RS485_SETBAUDRATE anchor.png[26]

uint32_t UD4_RS485_SETBAUDRATE (uint32_t baudrate)
Page Top

UD4_RS485_CSW anchor.png[27]

void (*UD4_RS485_CSW) (void)
Page Top

UD4_RS485_PUTS anchor.png[28]

void UD4_RS485_PUTS (const char *str)
Page Top

UD4_RS485_PUTSB anchor.png[29]

void UD4_RS485_PUTSB (const uint8_t *buf, int size)
Page Top

UD4_RS485_PUTSBD anchor.png[30]

void UD4_RS485_PUTSBD (const uint8_t *buf, int size)
Page Top

UD4_RS485_GETC anchor.png[31]

char UD4_RS485_GETC (void)
Page Top

UD4_RS485_PUTC anchor.png[32]

void UD4_RS485_PUTC (char ch)
Page Top

UD4_RS485_TX_BUFF anchor.png[33]

int UD4_RS485_TX_BUFF (void)
Page Top

UD4_RS485_RX_BUFF anchor.png[34]

int UD4_RS485_RX_BUFF (void)
Page Top

UD4_RS485_RX_PURGE anchor.png[35]

void UD4_RS485_RX_PURGE (void)
Page Top

UD4_RS485_PRINTF anchor.png[36]

int UD4_RS485_PRINTF (const char *str, ...)
Page Top

UD4_RS485_SCANF anchor.png[37]

int UD4_RS485_SCANF (const char *str, ...)
Page Top

LED anchor.png[38]

Page Top

UD4_SET_LED1 anchor.png[39]

LED1を対象とし、trueを指定すると点灯、falseを指定すると消灯する。

void UD4_SET_LED1 (bool on)
Page Top

UD4_TOGGLE_LED1 anchor.png[40]

呼び出される度にLED1が点灯していれば消灯、消灯していれば点灯する。

void UD4_TOGGLE_LED1 (void)
Page Top

UD4_SET_LED2 anchor.png[41]

LEDを対象とし、trueを指定すると点灯、falseを指定すると消灯する。

void UD4_SET_LED2 (bool on)
Page Top

UD4_TOGGLE_LED2 anchor.png[42]

呼び出される度にLED2が点灯していれば消灯、消灯していれば点灯する。

void UD4_TOGGLE_LED2 (void)
Page Top

GPIO anchor.png[43]

Page Top

UD4_CFG_GPIO anchor.png[44]

0~9の任意チャネルのGPIOを個々に初期化する。

void UD4_CFG_GPIO (uint8_t ch, TGPIOPinMode mode)
tPinDIN:入力(Hi-Z)
tPinDIN_PU:入力(プルアップ)
tPinDIN_PD:入力(プルダウン)
tPinDOUT:出力(プッシュプル)
tPinDOUT_OC:出力(オープンドレイン)
tPinAIN:アナログ入力
tPinMPW0~7:入力(パルス幅計測,プルアップ)
tPinSPISEL:PS2互換ゲームパッド(SPI_SELECT 出力)
tPinSPISCK:PS2互換ゲームパッド(SPI_SCK 出力)
tPinSPIMISO:PS2互換ゲームパッド(SPI_MISO 入力)
tPinSPIMOSI:PS2互換ゲームパッド(SPI_MOSI 出力)
Page Top

UD4_GET_GPIO_IN anchor.png[45]

10チャネル分のGPIOの入力状態を一括取得する。

uint16_t UD4_GET_GPIO_IN (void)
Page Top

UD4_SET_GPIO_OUT anchor.png[46]

10チャネル分のデータをGPIOから出力する。出力データはUD4_CFG_GPIOのmodeにtPinDOUTもしくはtPinDOUT_OCが指定されているチャネルにのみ影響する。

void UD4_SET_GPIO_OUT (uint16_t out)
Page Top

UD4_GET_ADC anchor.png[47]

0~9の任意チャネルのGPIOのアナログ電圧を取得する。UD4_CFG_GPIOのmodeにtPinAINが指定されているチャネルのみ意味を持つ。

uint16_t UD4_GET_ADC (uint8_t ch)
Page Top

UD4_GET_PWM anchor.png[48]

指定されたパルス幅計測チャネルで計測されたパルス幅を取得する。UD4_CFG_GPIOのmodeにtPinMPW0~7が指定されている場合にのみ有効。GPIOのチャネルとは異なる事に注意。

uint32_t UD4_GET_PWM (uint8_t ch)
Page Top

I/O EXPANDER anchor.png[49]

Page Top

UD4_GET_EXIO_PB2 anchor.png[50]

PB2の状態を取得する。

bool UD4_GET_EXIO_PB2 (void)
Page Top

UD4_GET_EXIO_PB3 anchor.png[51]

PB3の状態を取得する。

bool UD4_GET_EXIO_PB3 (void)
Page Top

UD4_GET_EXIO_DIP anchor.png[52]

ディップスイッチに設定された値を取得する。

uint8_t UD4_GET_EXIO_DIP (void)
Page Top

UD4_GET_EXIO_IN anchor.png[53]

10チャネルあるGPIOの状態を一括取得する。

uint16_t UD4_GET_EXIO_IN (void)
Page Top

UD4_GET_EXIO_ALL anchor.png[54]

PB2・PB3・ディップスイッチ・GPIOの状態を一度に取得する。

TIICExIO UD4_GET_EXIO_ALL (void)
typedef struct {
  uint8_t   DIP; // ディップスイッチ
  bool      PB2; // PB2
  bool      PB3; // PB3
  uint16_t  IN;  // GPIO
} TIICExIO;
Page Top

UD4_SET_EXIOT_PULLUP anchor.png[55]

10チャネルあるGPIOのプルアップを一括設定する。

void UD4_SET_EXIOT_PULLUP (uint16_t pullup)
Page Top

プロポ anchor.png[56]

Page Top

UD4_MEASURE_STICKPOS anchor.png[57]

8チャネルのパルス幅計測チャネルを同時に計測しラジコン用プロポのニュートラル位置・最大位置・最小位置を記憶する。use_usb_terminalにtrueを指定するとUSBシリアルターミナルに測定状況が逐次送信される。

void UD4_MEASURE_STICKPOS (bool use_usb_terminal)

測定手順は以下の通り。

  1. PB2が押されるまで待機 その間LED1,2が200ms周期で点滅
  2. PB2が押されるとニュートラル位置の測定を開始
    その間LED1が50ms周期で点滅
  3. 測定時間に制限は無いので、頃合いを見計らってPB2を押してニュートラル位置の測定を終了させる
  4. 最大・最小位置の測定を開始
    その間LED2が40ms周期で点滅
    全スティックを両端まで目一杯倒す事を何回か繰り返す
  5. こちらも測定時間に制限は無いので、PB2を押して最大・最小位置の測定を終了させる
  6. 測定値をフラッシュROMに記憶し、LED1,2を消灯させて終了
Page Top

UD4_GET_RCPOS anchor.png[58]

任意のパルス幅計測チャネルで測定されたUD4_GET_PWMで取得される値を1000~-1000の範囲に正規化する。per_neuはニュートラル位置の不感帯、per_ulは最大・最小位置の不感帯を%で指定。UD4_MEASURE_STICKPOSでプロポの特性が測定済みが条件。

int32_t UD4_GET_RCPOS (uint8_t ch, int32_t per_neu, int32_t per_ul)
Page Top

モータ anchor.png[59]

Page Top

UD4_SET_MOTORENABLE anchor.png[60]

2chのHブリッジを制御するゲートドライバを活性ないし非活性化する。非活性状態では接続したモータはフリー状態となり、一切の指令を受け付けない。

void UD4_SET_MOTORENABLE (bool on)
Page Top

UD4_GET_MOTORENABLE anchor.png[61]

Hブリッジを制御するゲートドライバの活性状態を取得する。

bool UD4_GET_MOTORENABLE (void)
Page Top

UD4_SET_FREQUENCY anchor.png[62]

void UD4_SET_FREQUENCY (uint32_t hz)
Page Top

UD4_SET_MOTORREVRSE anchor.png[63]

デューティー比で指令されるモータの回転方向を内部的に切り替える。

void UD4_SET_MOTORREVRSE (uint8_t rev)
0:非反転
1:M1のみ反転
2:M2のみ反転
3:M1とM2を反転
Page Top

UD4_SET_M1RECHARGE anchor.png[64]

M1のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M1DUTYで指定される値から自動的に減じられる。

void UD4_SET_M1RECHARGE (uint16_t permil)
Page Top

UD4_SET_M2RECHARGE anchor.png[65]

M2のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M2DUTYで指定される値から自動的に減じられる。

void UD4_SET_M2RECHARGE (uint16_t permil)
Page Top

UD4_SET_M1DUTY anchor.png[66]

M1の出力デューティー比を‰で指定する。符号は回転方向を意味する。

void UD4_SET_M1DUTY (int16_t permil)
Page Top

UD4_SET_M2DUTY anchor.png[67]

M2の出力デューティー比を‰で指定する。符号は回転方向を意味する。

void UD4_SET_M2DUTY (int16_t permil)
Page Top

UD4_SET_DUTY anchor.png[68]

M1とM2の回転方向とデューティー比を‰で指定する。符号は回転方向を意味する。

void UD4_SET_DUTY (int16_t m1_permil, int16_t m2_permil)
Page Top

UD4_GET_M1DUTY anchor.png[69]

M1に指定されたデューティー比を‰で返す。符号は回転方向を意味する。

int16_t UD4_GET_M1DUTY (void)
Page Top

UD4_GET_M2DUTY anchor.png[70]

M2に指定されたデューティー比を‰で返す。符号は回転方向を意味する。

int16_t UD4_GET_M2DUTY (void)

Last-modified: 2018-08-16 (木) 13:03:31 (JST) (2089d) by takaboo