PULSEIN()
PULSEIN 入力パルス幅の計測
書式
PULSEIN( パルス入力ピン番号 , 検出信号 , タイムアウト )
PULSEIN( パルス入力ピン番号 , 検出信号 , タイムアウト , スケール値 )
引数
パルス入力ピン番号: 0 ~ 34 パルスを入力するピン
上記のピン番号は数値の他に次のピン名(定数)での指定も可能です。
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB8, PB10, PB11, PB12, PB13, PB14, PB15, PC13
検出信号 : LOW、HIGH または 0 、1 測定対象のパルス
タイムアウト :パルス検出待ちタイムアウト時間 0 ~ 32767 (ミリ秒)
スケール値 :計測時間のスケール変換 1 ~ 1327671 (デフォルト値 1)
戻り値
正常時: 測定した パルス幅 0 ~ 32767(単位はスケール値 × マイクロ秒)
タイムアウト時:0
オバーフロー時:-1
説明
パルス入力ピン番号で指定したピンから入力される信号のパルス幅を計測し、その値を返します。
測定は、入力ピンの状態が検出信号の状態になった時点で計測を開始し、検出信号の状態でなくなた時点で計測を終了します。たとえば、測定する検出信号がHIGHの場合、PULSEIN()はピンがHIGHになるのを待ち、HIGHになった時点で計測を開始し、ピンがLOWになるタイミングで計測を終了し、そのパルスの長さを返します。タイムアウト内に完全なパルスが受信されなかった場合は0を返します。
測定したパスルが整数値32767を超えた場合は、オーバーフローとし-1を返します。
オーバーフローを回避したい場合は、スケール値を適宜調整して下さい。
スケール値が1の場合、1~31767マイクロ秒までのパルスの測定を行うことが出来ます。この場合、500kHz~15Hzまでのパルスを測定出来ます。15Hzより遅い、信号の測定はオーバーフローが発生します。
スケール値が1000の場合、1~31767ミリ秒までのパルスの測定を行うことが出来ます。この場合、500Hz~0.015Hzまでのパルスの測定が可能です。
本関数はArduinoのpulseIn()関数を利用して計測しています。
測定値はあくまでも目安であり、精度はあまり高くありません。
注意:
NTSC版では、NTSCビデオ信号生成を随時並行して行っているため測定値に誤差が生じます。NTSC版で利用の場合は、コンソールモードにで測定することで精度が向上します。
ピン番号の指定範囲及び定数は、ST32F103C8T6での利用を想定したものです。ST32F103C8T6以外のMPUにて使う場合は、機能設定できない場合があります。
利用するシステム構成により、利用出来ないピンがあります。詳細については、ボート上のピン一覧を参照して下さい。 エラーメッセージ
Syntax error :文法エラー、書式と異なる利用を行った
Illegal value :ピン番号、モードに範囲外の値を指定した
Overflow :指定した数値が-32768 ~ 32767を超えている
'(' or ')' expected :’(‘ または ‘)’がない
利用例
パスル幅を計測する
code:pulsein_sample.bas
10 CLS
20 GPIO PA8,INPUT_PU
30 A=PULSEIN(PA8,LOW,200,1)
40 LOCATE 0,0:?#8,A
50 GOTO 30
補足:PA8ピンは5Vトレラント(5Vの入力が可能)です。パスル計測等には5Vトレラントのピンの利用を推奨します。
関連項目