BIOS インタフェース関数
ここにあげる BIOS インタフェース関数は,ユーザ=プログラムが Pico-2 のハードウェア資源にアクセスするのを手助けします.ユーザ=プログラムがハードウェア資源に直接アクセスすることも可能ですが,この BIOS を利用することで,プログラミングおよびデバッグの効率を高めることができます.(uchar は unsigned char に,ushort は unsigned short に,uint は unsigned int に読み替えてください.)
- ダウンロード: BIOS ソースプログラム
【PWM: DCモータ(PWM・DIR)】
-
void PWM_init (void)
PWM モジュールを初期化します.モータ0〜3はすべて PWM=0,DIR=0 となります.PWM モジュールを利用する場合,最初にこの初期化が必要です. -
void PWM_set (uchar numB2, short valW)
- numB2: モータ番号 ∈ {0,1,2,3}
- valW: モータ電圧 ∈ [-32768,32767]
【ENC: エンコーダ(A・B)】
-
void ENC_init (void)
ENC モジュールを初期化します.モータ0〜3について,エンコーダの値は0 にリセットされます.ENC モジュールを利用する場合,最初にこの初期化が必要です. -
int ENC_get (uchar numB2)
- numB2: モータ番号 ∈ {0,1,2,3}
-
void ENC_set (uchar numB2, int count)
- numB2: モータ番号 ∈ {0,1,2,3}
- count: 代入するエンコーダ値 ∈ [-8388608,8388607]
【SEN: モータ電流センサ(SEN)】
-
void SEN_init (void)
SEN モジュールを初期化し,周期的な A/D 変換を開始します.SEN モジュールを利用する場合,最初にこの初期化が必要です. -
ushort SEN_get (uchar numB2)
- numB2: モータ番号 ∈ {0,1,2,3}
-
void SEN_gets
(ushort *sen0W, *sen1W, *sen2W, *sen3W)
- sen0W,sen1W,sen2W,sen3W: SEN 端子電圧の格納先
【SWT: 設定スイッチ(SW5−1)】
-
void SWT_init (void)
SWT モジュールを初期化します.SWT モジュールを利用する場合,最初に初期化が必要です. -
ushort SWT_get (void)
設定スイッチ SW5−1 の状態を読み取ります.返り値(符号なし16ビット整数)の下位5ビットに SW5−1 の状態(ON のとき 1,OFF のとき O;LSB が SW1 に対応)が入り,それ以外のビットはすべて 0 となります.
【SCI: シリアル通信(PORTX・PORTY)】
-
void SCI_init
(uchar addr, uchar pack_len, void *callback())
- addr: 自分のアドレス ∈ [0,31]
- pack_len: パケットのバイト長 ∈ [1,8]
- callback: コールバック関数へのポインタ
-
void SCI_transmit (uchar *packet)
- packet: 送信データ
【CMT: 汎用タイマ】
-
void CMT0_init
(uchar cselB2, ushort periodW, void *callback())
- cselB2: クロック選択 ∈ {0,1,2,3}
- period: カウンタ周期 ∈ [0x0000,0xffff]
- callback: コールバック関数へのポインタ
-
void CMT1_init
(uchar cselB2, ushort periodW, void *callback())
- cselB2: クロック選択 ∈ {0,1,2,3}
- period: カウンタ周期 ∈ [0x0000,0xffff]
- callback: コールバック関数へのポインタ
【RCS: ラジコン用サーボ(RCS)】
-
void RCS_init (void)
RCS モジュールを初期化します.RCサーボ0〜3に(RCS0−3 端子から)周期 10.677ms,パルス幅 1.5ms の PWM 信号を出力開始します.RCS モジュールを利用する場合,最初にこの初期化が必要です. -
void RCS_set (uchar numB2, ushort valW)
- numB2: RCサーボ番号 ∈ {0,1,2,3}
- valW: PWM 信号のデューティ比 ∈ [0x0000,0xffff]
【LED: 状態表示用 LED(LED)】
-
void LED_init (void)
状態表示用の LED5−1 を初期化し,すべて消灯させます.LED モジュールを利用する場合,最初にこの初期化が必要です. -
void LED_set (ushort dataW5)
- dataW5: LED5−1 の状態
-
ushort LED_get (void)
LED5−1 の状態を符号なし16ビット整数の下位5ビットとして返します.返り値の LSB が LED1 に対応し,各ビットが 1 のとき点灯,0 のとき消灯を表わします.それ以外のビットはすべて 0 となります. -
ushort LED_op (ushort locW5, ushort dataW5)
- locW5: 操作対象となる LED
- dataW5: 各 LED の状態
【LIO: デジタル入出力ポート(LIO)】
-
void LIO_init (uchar dirB4)
- dirB4: LIO3−0 の入出力方向
-
void LIO_set (uchar valB4)
- valB4: LIO への出力データ
-
ushort LIO_get (void)
LIO の各端子の状態を符号なし16ビット整数の下位4ビットとして返します.それ以外のビットはすべて 0 となります.返り値の LSB が LIO0 に対応します.入力設定された端子については入力状態が 0・1 で,出力設定された端子については出力状態が 0・1 で,各ビットに格納されます.
【LIN: デジタル入力ポート(ALINX・ALINY)】
-
void LIN_init (void)
LIN モジュールを初期化します.LIN モジュールを利用する場合,最初にこの初期化が必要です.入力端子となる ALINX・ALINY がアナログ入力ポートとして初期化されていても構いません.これらポートは,デジタル入力とアナログ入力として同時併用することが可能です. -
ushort LIN_get (void)
LIN の各端子(ALINY3−0, ALINX3−0)の符号なし16ビット整数の下位8ビットとして返します.それ以外のビットはすべて 0 となります.返り値のビット0(LSB)が ALINX0 に対応し,ビット7が ALINY3 に対応します.
【AIX・AIY: アナログ入力ポート(ALINX・ALINY)】
-
void AIX_init (void)
AIX モジュールを初期化し,ALINX3−0 端子について周期的な A/D 変換を開始します.AIX モジュールを利用する場合,最初にこの初期化が必要です. -
void AIY_init (void)
AIY モジュールを初期化し,ALINY3−0 端子について周期的な A/D 変換を開始します.AIY モジュールを利用する場合,最初にこの初期化が必要です. -
void AIX_gets
(ushort *val0W, *val1W, *val2W, *val3W)
- val0W,val1W,val2W,val3W: ALINX 端子電圧の格納先
-
void AIY_gets
(ushort *val0W, *val1W, *val2W, *val3W)
- val0W,val1W,val2W,val3W: ALINY 端子電圧の格納先
【WDT: 番犬タイマ】
-
void WDT_init (uchar cselB3)
- cselB3W: タイマ周期 ∈ {0,1,2,3}
-
void WDT_reset (void)
WDT_init()で指定した時間内に WDT_reset() を呼び出せば,タイマは 0 に戻り,再びカウントアップしていきます.指定された時間内にWDT_reset() を呼び出せなかった場合,Pico-2 は強制的にリセットされます. -
int WDT_check (void)
WDT によって強制的にリセットされた場合,0 以外の値を返します.通常のリセット(マニュアルリセットまたはパワーオンリセット)による場合は 0 を返します.この関数によって,WDT によってリセットされたかどうかを判別することができます.この関数の利用は WDT_init() による初期化を必要としません.(通常,プログラム実行の初期段階でこのチェックを行ない,必要ならば対策をとることになります.)