概要
UD4 APIはUD4で構成されたアプリケーションを効率的に運用するためのAPI。
GPIOに入力されたセンサの状態からそれに応じたDCモータの制御といったアプリケーションレベルにおいて最低限必要な機能でカバーします。
なお、本APIはその他のライブラリを静的に使用していますので、ベンダーから提供されるGCC Developer Liteをインストールする際は、各コンポーネントを手動で選択することなくフルインストールした環境で使用して下さい。また、全てのソースもインストールと同時に展開されますので、必要に応じて参照できます。
APIで提供されるプロトタイプ宣言や特殊な構造体はud4.hに集約されています。このヘッダファイルに宣言が無いAPIは使用しないで下さい。
API
OS及びタスク関連
OSで管理されるタスクや時間に関するAPIです。
ユーザはメモリの許す限りのタスクを作成可能で、自動的にマルチタスクで動作する設定になっています。
システム
UD4_SOFTRESET
MCUにソフトリセットを発行しブートローダに戻る。
void UD4_SOFTRESET (void)
時間
UD4_WAIT
ミリ秒単位のディレイを挿入する。
void UD4_WAIT (const uint32_t ms)
UD4_GET_ELAPSEDTIME
ミリ秒単位でインクリメントされるカウンタ値を取得。
uint32_t UD4_GET_ELAPSEDTIME (void)
シリアル通信
UD4_USB_INIT
USBシリアルポートに接続されたUSARTを初期化する。
uint32_t UD4_USB_INIT (uint32_t baudrate, uint8_t *txb, uint16_t txb_size, uint8_t *rxb, uint16_t rxb_size)
UD4_USB_SETBAUDRATE
USBシリアルポートに接続されたUSARTのボーレートを変更する。
uint32_t UD4_USB_SETBAUDRATE (uint32_t baudrate)
UD4_USB_CSW
void (*UD4_USB_CSW) (void)
UD4_USB_PUTS
USBシリアルポートに接続されたUSARTから文字列を送信する。
void UD4_USB_PUTS (const char *str)
UD4_USB_PUTSB
USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。
void UD4_USB_PUTSB (const uint8_t *buf, int size)
UD4_USB_PUTSBD
USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。送信の際に送信バッファは使用しない。
void UD4_USB_PUTSBD (const uint8_t *buf, int size)
UD4_USB_GETC
USBシリアルポートに接続されたUSARTの受信バッファから1文字取り出す。受信バッファが空の時は受信されるまで待機する。
UD4_USB_PUTC
USBシリアルポートに接続されたUSARTから1文字送信する。
void UD4_USB_PUTC (char ch)
UD4_USB_TX_BUFF
USBシリアルポートに接続されたUSARTの送信バッファに残る未送信データのバイト数を返す。
int UD4_USB_TX_BUFF (void)
UD4_USB_RX_BUFF
USBシリアルポートに接続されたUSARTの受信バッファに受信されたデータのバイト数を返す。
int UD4_USB_RX_BUFF (void)
UD4_USB_RX_PURGE
USBシリアルポートに接続されたUSARTの受信バッファに残ったデータを破棄する。
void UD4_USB_RX_PURGE (void)
UD4_USB_PRINTF
USBシリアルポートに接続されたUSARTから書式化文字列を送信する。
int UD4_USB_PRINTF (const char *str, ...)
UD4_USB_SCANF
int UD4_USB_SCANF (const char *str, ...)
UD4_RS485_INIT
uint32_t UD4_RS485_INIT (uint32_t baudrate, uint8_t *txb, uint16_t txb_size, uint8_t *rxb, uint16_t rxb_size)
UD4_RS485_SET_TERMINATOR
RS-485 I/Fの終端抵抗をONないしOFFする。
void UD4_RS485_SET_TERMINATOR (bool term_on)
UD4_RS485_SETBAUDRATE
uint32_t UD4_RS485_SETBAUDRATE (uint32_t baudrate)
UD4_RS485_CSW
void (*UD4_RS485_CSW) (void)
UD4_RS485_PUTS
void UD4_RS485_PUTS (const char *str)
UD4_RS485_PUTSB
void UD4_RS485_PUTSB (const uint8_t *buf, int size)
UD4_RS485_PUTSBD
void UD4_RS485_PUTSBD (const uint8_t *buf, int size)
UD4_RS485_GETC
char UD4_RS485_GETC (void)
UD4_RS485_PUTC
void UD4_RS485_PUTC (char ch)
UD4_RS485_TX_BUFF
int UD4_RS485_TX_BUFF (void)
UD4_RS485_RX_BUFF
int UD4_RS485_RX_BUFF (void)
UD4_RS485_RX_PURGE
void UD4_RS485_RX_PURGE (void)
UD4_RS485_PRINTF
int UD4_RS485_PRINTF (const char *str, ...)
UD4_RS485_SCANF
int UD4_RS485_SCANF (const char *str, ...)
LED
UD4_SET_LED1
LED1を対象とし、trueを指定すると点灯、falseを指定すると消灯する。
void UD4_SET_LED1 (bool on)
UD4_TOGGLE_LED1
呼び出される度にLED1が点灯していれば消灯、消灯していれば点灯する。
void UD4_TOGGLE_LED1 (void)
UD4_SET_LED2
LEDを対象とし、trueを指定すると点灯、falseを指定すると消灯する。
void UD4_SET_LED2 (bool on)
UD4_TOGGLE_LED2
呼び出される度にLED2が点灯していれば消灯、消灯していれば点灯する。
void UD4_TOGGLE_LED2 (void)
GPIO
UD4_CFG_GPIO
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 出力)
UD4_GET_GPIO_IN
10チャネル分のGPIOの入力状態を一括取得する。
uint16_t UD4_GET_GPIO_IN (void)
UD4_SET_GPIO_OUT
10チャネル分のデータをGPIOから出力する。出力データはUD4_CFG_GPIOのmodeにtPinDOUTもしくはtPinDOUT_OCが指定されているチャネルにのみ影響する。
void UD4_SET_GPIO_OUT (uint16_t out)
UD4_GET_ADC
0~9の任意チャネルのGPIOのアナログ電圧を取得する。UD4_CFG_GPIOのmodeにtPinAINが指定されているチャネルのみ意味を持つ。
uint16_t UD4_GET_ADC (uint8_t ch)
UD4_GET_PWM
指定されたパルス幅計測チャネルで計測されたパルス幅を取得する。UD4_CFG_GPIOのmodeにtPinMPW0~7が指定されている場合にのみ有効。GPIOのチャネルとは異なる事に注意。
uint32_t UD4_GET_PWM (uint8_t ch)
I/O EXPANDER
UD4_GET_EXIO_PB2
PB2の状態を取得する。
bool UD4_GET_EXIO_PB2 (void)
UD4_GET_EXIO_PB3
PB3の状態を取得する。
bool UD4_GET_EXIO_PB3 (void)
UD4_GET_EXIO_DIP
ディップスイッチに設定された値を取得する。
uint8_t UD4_GET_EXIO_DIP (void)
UD4_GET_EXIO_IN
10チャネルあるGPIOの状態を一括取得する。
uint16_t UD4_GET_EXIO_IN (void)
UD4_GET_EXIO_ALL
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;
UD4_SET_EXIOT_PULLUP
10チャネルあるGPIOのプルアップを一括設定する。
void UD4_SET_EXIOT_PULLUP (uint16_t pullup)
プロポ
UD4_MEASURE_STICKPOS
8チャネルのパルス幅計測チャネルを同時に計測しラジコン用プロポのニュートラル位置・最大位置・最小位置を記憶する。use_usb_terminalにtrueを指定するとUSBシリアルターミナルに測定状況が逐次送信される。
void UD4_MEASURE_STICKPOS (bool use_usb_terminal)
測定手順は以下の通り。
- PB2が押されるまで待機
その間LED1,2が200ms周期で点滅
- PB2が押されるとニュートラル位置の測定を開始
その間LED1が50ms周期で点滅
- 測定時間に制限は無いので、頃合いを見計らってPB2を押してニュートラル位置の測定を終了させる
- 最大・最小位置の測定を開始
その間LED2が40ms周期で点滅
全スティックを両端まで目一杯倒す事を何回か繰り返す
- こちらも測定時間に制限は無いので、PB2を押して最大・最小位置の測定を終了させる
- 測定値をフラッシュROMに記憶し、LED1,2を消灯させて終了
UD4_GET_RCPOS
任意のパルス幅計測チャネルで測定された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)
モータ
UD4_SET_MOTORENABLE
2chのHブリッジを制御するゲートドライバを活性ないし非活性化する。非活性状態では接続したモータはフリー状態となり、一切の指令を受け付けない。
void UD4_SET_MOTORENABLE (bool on)
UD4_GET_MOTORENABLE
Hブリッジを制御するゲートドライバの活性状態を取得する。
bool UD4_GET_MOTORENABLE (void)
UD4_SET_FREQUENCY
void UD4_SET_FREQUENCY (uint32_t hz)
UD4_SET_MOTORREVRSE
デューティー比で指令されるモータの回転方向を内部的に切り替える。
void UD4_SET_MOTORREVRSE (uint8_t rev)
0:非反転
1:M1のみ反転
2:M2のみ反転
3:M1とM2を反転
UD4_SET_M1RECHARGE
M1のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M1DUTYで指定される値から自動的に減じられる。
void UD4_SET_M1RECHARGE (uint16_t permil)
UD4_SET_M2RECHARGE
M2のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M2DUTYで指定される値から自動的に減じられる。
void UD4_SET_M2RECHARGE (uint16_t permil)
UD4_SET_M1DUTY
M1の出力デューティー比を‰で指定する。符号は回転方向を意味する。
void UD4_SET_M1DUTY (int16_t permil)
UD4_SET_M2DUTY
M2の出力デューティー比を‰で指定する。符号は回転方向を意味する。
void UD4_SET_M2DUTY (int16_t permil)
UD4_SET_DUTY
M1とM2の回転方向とデューティー比を‰で指定する。符号は回転方向を意味する。
void UD4_SET_DUTY (int16_t m1_permil, int16_t m2_permil)
UD4_GET_M1DUTY
M1に指定されたデューティー比を‰で返す。符号は回転方向を意味する。
int16_t UD4_GET_M1DUTY (void)
UD4_GET_M2DUTY
M2に指定されたデューティー比を‰で返す。符号は回転方向を意味する。
int16_t UD4_GET_M2DUTY (void)