現: 2018-08-16 (木) 13:03:31 takaboo | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | #norelated | ||
+ | #contents | ||
+ | *概要 [#kf2ae7d8] | ||
+ | UD4 APIは[[UD4]]で構成されたアプリケーションを効率的に運用するためのAPI。~ | ||
+ | GPIOに入力されたセンサの状態からそれに応じたDCモータの制御といったアプリケーションレベルにおいて最低限必要な機能でカバーします。~ | ||
+ | なお、本APIはその他のライブラリを静的に使用していますので、ベンダーから提供されるGCC Developer Liteをインストールする際は、各コンポーネントを手動で選択することなくフルインストールした環境で使用して下さい。また、全てのソースもインストールと同時に展開されますので、必要に応じて参照できます。~ | ||
+ | APIで提供されるプロトタイプ宣言や特殊な構造体はud4.hに集約されています。このヘッダファイルに宣言が無いAPIは使用しないで下さい。 | ||
+ | *API [#g2b0ad68] | ||
+ | **OS及びタスク関連 [#g1e34fba] | ||
+ | OSで管理されるタスクや時間に関するAPIです。~ | ||
+ | ユーザはメモリの許す限りのタスクを作成可能で、自動的にマルチタスクで動作する設定になっています。 | ||
+ | **システム [#ab351c4d] | ||
+ | ***UD4_SOFTRESET [#q6cac9f5] | ||
+ | MCUにソフトリセットを発行しブートローダに戻る。 | ||
+ | void UD4_SOFTRESET (void) | ||
+ | |||
+ | **時間 [#sb99b2bd] | ||
+ | ***UD4_WAIT [#ve2069f4] | ||
+ | ミリ秒単位のディレイを挿入する。 | ||
+ | void UD4_WAIT (const uint32_t ms) | ||
+ | |||
+ | ***UD4_GET_ELAPSEDTIME [#l5abb27a] | ||
+ | ミリ秒単位でインクリメントされるカウンタ値を取得。 | ||
+ | uint32_t UD4_GET_ELAPSEDTIME (void) | ||
+ | |||
+ | **シリアル通信 [#x624cbd3] | ||
+ | ***UD4_USB_INIT [#s2372f28] | ||
+ | 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 [#x14a5e93] | ||
+ | USBシリアルポートに接続されたUSARTのボーレートを変更する。 | ||
+ | uint32_t UD4_USB_SETBAUDRATE (uint32_t baudrate) | ||
+ | |||
+ | ***UD4_USB_CSW [#geddc06b] | ||
+ | void (*UD4_USB_CSW) (void) | ||
+ | ***UD4_USB_PUTS [#fc527860] | ||
+ | USBシリアルポートに接続されたUSARTから文字列を送信する。 | ||
+ | void UD4_USB_PUTS (const char *str) | ||
+ | |||
+ | ***UD4_USB_PUTSB [#zfce77a1] | ||
+ | USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。 | ||
+ | void UD4_USB_PUTSB (const uint8_t *buf, int size) | ||
+ | |||
+ | ***UD4_USB_PUTSBD [#wd34ebd2] | ||
+ | USBシリアルポートに接続されたUSARTから指定バイト数のデータ列を送信する。送信の際に送信バッファは使用しない。 | ||
+ | void UD4_USB_PUTSBD (const uint8_t *buf, int size) | ||
+ | |||
+ | ***UD4_USB_GETC [#y3d05af6] | ||
+ | USBシリアルポートに接続されたUSARTの受信バッファから1文字取り出す。受信バッファが空の時は受信されるまで待機する。 | ||
+ | char UD4_USB_GETC (void) | ||
+ | |||
+ | ***UD4_USB_PUTC [#l6f7818f] | ||
+ | USBシリアルポートに接続されたUSARTから1文字送信する。 | ||
+ | void UD4_USB_PUTC (char ch) | ||
+ | |||
+ | ***UD4_USB_TX_BUFF [#ff18f833] | ||
+ | USBシリアルポートに接続されたUSARTの送信バッファに残る未送信データのバイト数を返す。 | ||
+ | int UD4_USB_TX_BUFF (void) | ||
+ | |||
+ | ***UD4_USB_RX_BUFF [#f0ecceb9] | ||
+ | USBシリアルポートに接続されたUSARTの受信バッファに受信されたデータのバイト数を返す。 | ||
+ | int UD4_USB_RX_BUFF (void) | ||
+ | |||
+ | ***UD4_USB_RX_PURGE [#i7a376d7] | ||
+ | USBシリアルポートに接続されたUSARTの受信バッファに残ったデータを破棄する。 | ||
+ | void UD4_USB_RX_PURGE (void) | ||
+ | |||
+ | ***UD4_USB_PRINTF [#seb0da04] | ||
+ | USBシリアルポートに接続されたUSARTから書式化文字列を送信する。 | ||
+ | int UD4_USB_PRINTF (const char *str, ...) | ||
+ | |||
+ | ***UD4_USB_SCANF [#b8bb8fd7] | ||
+ | int UD4_USB_SCANF (const char *str, ...) | ||
+ | ***UD4_RS485_INIT [#y6f77a43] | ||
+ | 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 [#g4946e9c] | ||
+ | RS-485 I/Fの終端抵抗をONないしOFFする。 | ||
+ | void UD4_RS485_SET_TERMINATOR (bool term_on) | ||
+ | |||
+ | ***UD4_RS485_SETBAUDRATE [#sc757aae] | ||
+ | uint32_t UD4_RS485_SETBAUDRATE (uint32_t baudrate) | ||
+ | ***UD4_RS485_CSW [#mb39ab24] | ||
+ | void (*UD4_RS485_CSW) (void) | ||
+ | ***UD4_RS485_PUTS [#z0ad91fd] | ||
+ | void UD4_RS485_PUTS (const char *str) | ||
+ | ***UD4_RS485_PUTSB [#m9cd784c] | ||
+ | void UD4_RS485_PUTSB (const uint8_t *buf, int size) | ||
+ | ***UD4_RS485_PUTSBD [#e55a1e9c] | ||
+ | void UD4_RS485_PUTSBD (const uint8_t *buf, int size) | ||
+ | ***UD4_RS485_GETC [#a8537f0a] | ||
+ | char UD4_RS485_GETC (void) | ||
+ | ***UD4_RS485_PUTC [#z6350e7d] | ||
+ | void UD4_RS485_PUTC (char ch) | ||
+ | ***UD4_RS485_TX_BUFF [#mfe5c20a] | ||
+ | int UD4_RS485_TX_BUFF (void) | ||
+ | ***UD4_RS485_RX_BUFF [#l111d489] | ||
+ | int UD4_RS485_RX_BUFF (void) | ||
+ | ***UD4_RS485_RX_PURGE [#yffa4836] | ||
+ | void UD4_RS485_RX_PURGE (void) | ||
+ | ***UD4_RS485_PRINTF [#p9051ff4] | ||
+ | int UD4_RS485_PRINTF (const char *str, ...) | ||
+ | ***UD4_RS485_SCANF [#o9b50359] | ||
+ | int UD4_RS485_SCANF (const char *str, ...) | ||
+ | **LED [#i0f5f770] | ||
+ | ***UD4_SET_LED1 [#i7f1fc35] | ||
+ | LED1を対象とし、trueを指定すると点灯、falseを指定すると消灯する。 | ||
+ | void UD4_SET_LED1 (bool on) | ||
+ | |||
+ | ***UD4_TOGGLE_LED1 [#x167d7f4] | ||
+ | 呼び出される度にLED1が点灯していれば消灯、消灯していれば点灯する。 | ||
+ | void UD4_TOGGLE_LED1 (void) | ||
+ | |||
+ | ***UD4_SET_LED2 [#sedfc506] | ||
+ | LEDを対象とし、trueを指定すると点灯、falseを指定すると消灯する。 | ||
+ | void UD4_SET_LED2 (bool on) | ||
+ | |||
+ | ***UD4_TOGGLE_LED2 [#e743f751] | ||
+ | 呼び出される度にLED2が点灯していれば消灯、消灯していれば点灯する。 | ||
+ | void UD4_TOGGLE_LED2 (void) | ||
+ | |||
+ | **GPIO [#f36003ea] | ||
+ | ***UD4_CFG_GPIO [#u4ab6e3e] | ||
+ | 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 [#p2a8c743] | ||
+ | 10チャネル分のGPIOの入力状態を一括取得する。 | ||
+ | uint16_t UD4_GET_GPIO_IN (void) | ||
+ | |||
+ | ***UD4_SET_GPIO_OUT [#ue71134c] | ||
+ | 10チャネル分のデータをGPIOから出力する。出力データはUD4_CFG_GPIOのmodeにtPinDOUTもしくはtPinDOUT_OCが指定されているチャネルにのみ影響する。 | ||
+ | void UD4_SET_GPIO_OUT (uint16_t out) | ||
+ | |||
+ | ***UD4_GET_ADC [#a77ff159] | ||
+ | 0~9の任意チャネルのGPIOのアナログ電圧を取得する。UD4_CFG_GPIOのmodeにtPinAINが指定されているチャネルのみ意味を持つ。 | ||
+ | uint16_t UD4_GET_ADC (uint8_t ch) | ||
+ | |||
+ | ***UD4_GET_PWM [#c5f215e6] | ||
+ | 指定されたパルス幅計測チャネルで計測されたパルス幅を取得する。UD4_CFG_GPIOのmodeにtPinMPW0~7が指定されている場合にのみ有効。GPIOのチャネルとは異なる事に注意。 | ||
+ | uint32_t UD4_GET_PWM (uint8_t ch) | ||
+ | |||
+ | **I/O EXPANDER [#y4b9b6f2] | ||
+ | ***UD4_GET_EXIO_PB2 [#c83b97fe] | ||
+ | PB2の状態を取得する。 | ||
+ | bool UD4_GET_EXIO_PB2 (void) | ||
+ | |||
+ | ***UD4_GET_EXIO_PB3 [#vd79d9df] | ||
+ | PB3の状態を取得する。 | ||
+ | bool UD4_GET_EXIO_PB3 (void) | ||
+ | |||
+ | ***UD4_GET_EXIO_DIP [#bb3c6257] | ||
+ | ディップスイッチに設定された値を取得する。 | ||
+ | uint8_t UD4_GET_EXIO_DIP (void) | ||
+ | |||
+ | ***UD4_GET_EXIO_IN [#s99721a9] | ||
+ | 10チャネルあるGPIOの状態を一括取得する。 | ||
+ | uint16_t UD4_GET_EXIO_IN (void) | ||
+ | |||
+ | ***UD4_GET_EXIO_ALL [#d4c10d3f] | ||
+ | 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 [#daca7298] | ||
+ | 10チャネルあるGPIOのプルアップを一括設定する。 | ||
+ | void UD4_SET_EXIOT_PULLUP (uint16_t pullup) | ||
+ | |||
+ | **プロポ [#p090aec7] | ||
+ | ***UD4_MEASURE_STICKPOS [#o90539dd] | ||
+ | 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 [#z99053a5] | ||
+ | 任意のパルス幅計測チャネルで測定された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) | ||
+ | |||
+ | **モータ [#b6c26425] | ||
+ | ***UD4_SET_MOTORENABLE [#he89e8b8] | ||
+ | 2chのHブリッジを制御するゲートドライバを活性ないし非活性化する。非活性状態では接続したモータはフリー状態となり、一切の指令を受け付けない。 | ||
+ | void UD4_SET_MOTORENABLE (bool on) | ||
+ | |||
+ | ***UD4_GET_MOTORENABLE [#y2b5a200] | ||
+ | Hブリッジを制御するゲートドライバの活性状態を取得する。 | ||
+ | bool UD4_GET_MOTORENABLE (void) | ||
+ | |||
+ | ***UD4_SET_FREQUENCY [#k8aacece] | ||
+ | void UD4_SET_FREQUENCY (uint32_t hz) | ||
+ | ***UD4_SET_MOTORREVRSE [#q436bc47] | ||
+ | デューティー比で指令されるモータの回転方向を内部的に切り替える。 | ||
+ | void UD4_SET_MOTORREVRSE (uint8_t rev) | ||
+ | |||
+ | 0:非反転 | ||
+ | 1:M1のみ反転 | ||
+ | 2:M2のみ反転 | ||
+ | 3:M1とM2を反転 | ||
+ | |||
+ | ***UD4_SET_M1RECHARGE [#e6d9e9ee] | ||
+ | M1のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M1DUTYで指定される値から自動的に減じられる。 | ||
+ | void UD4_SET_M1RECHARGE (uint16_t permil) | ||
+ | |||
+ | ***UD4_SET_M2RECHARGE [#e2538cdd] | ||
+ | M2のブートストラップ回路の充電時間をデューティー比(‰)で指定する。ここで指定された値がUD4_SET_M2DUTYで指定される値から自動的に減じられる。 | ||
+ | void UD4_SET_M2RECHARGE (uint16_t permil) | ||
+ | |||
+ | ***UD4_SET_M1DUTY [#lb9caafa] | ||
+ | M1の出力デューティー比を‰で指定する。符号は回転方向を意味する。 | ||
+ | void UD4_SET_M1DUTY (int16_t permil) | ||
+ | |||
+ | ***UD4_SET_M2DUTY [#wf8946e8] | ||
+ | M2の出力デューティー比を‰で指定する。符号は回転方向を意味する。 | ||
+ | void UD4_SET_M2DUTY (int16_t permil) | ||
+ | |||
+ | ***UD4_SET_DUTY [#u238d2da] | ||
+ | M1とM2の回転方向とデューティー比を‰で指定する。符号は回転方向を意味する。 | ||
+ | void UD4_SET_DUTY (int16_t m1_permil, int16_t m2_permil) | ||
+ | |||
+ | ***UD4_GET_M1DUTY [#x86b426e] | ||
+ | M1に指定されたデューティー比を‰で返す。符号は回転方向を意味する。 | ||
+ | int16_t UD4_GET_M1DUTY (void) | ||
+ | |||
+ | ***UD4_GET_M2DUTY [#c5527d78] | ||
+ | M2に指定されたデューティー比を‰で返す。符号は回転方向を意味する。 | ||
+ | int16_t UD4_GET_M2DUTY (void) |