Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
PIO_Get()

PIO_Get()

概要

指定したピンにHIGHのものがあるときは1、そうでない場合は0を返します。

レジスタ シンボル 意味
Output Data Status レジスタ PIO_ODSR ピンの出力状態を読み取る。ピンが出力状態のとき有効。
0:LOW、1:HIGH
Pin Data Status レジスタ PIO_PDSR ピンの状態を読み取る。ピンの設定状態に関係しない。
0:LOW、1:HIGH

ソースコード

PIO_Get()は、hardware/arduino/sam/system/libsam/source/pio.c に定義されています。以下に全ソースコードを示します。ソースコードのライセンスはこちら

extern uint32_t PIO_Get( Pio* pPio, const EPioType dwType, const uint32_t dwMask )
{
    uint32_t dwReg ;

    if ( (dwType == PIO_OUTPUT_0) || (dwType == PIO_OUTPUT_1) )
    {
        dwReg = pPio->PIO_ODSR ;
    }
    else
    {
        dwReg = pPio->PIO_PDSR ;
    }

    if ( (dwReg & dwMask) == 0 )
    {
        return 0 ;
    }
    else
    {
        return 1 ;
    }
}
extern uint32_t PIO_Get( Pio* pPio, const EPioType dwType, const uint32_t dwMask )
{

引数は、ピンに対応したPIO(Parallel IO Controller)を示すPioへのポインタ型のpPioと、EPioType型のdwType、ピンに対応するマスク(コントローラのどのビットでそのピンが制御されるかを示します)を示すconst uint32_t型のdwMaskの2つです。

    uint32_t dwReg ;

    if ( (dwType == PIO_OUTPUT_0) || (dwType == PIO_OUTPUT_1) )
    {
        dwReg = pPio->PIO_ODSR ;
    }
    else
    {
        dwReg = pPio->PIO_PDSR ;
    }

dwTypeがPIO_OUTPUT_0もしくはPIO_OUTPUT_1のときは、dwRegにpPio->PIO_ODSR(Output Data Status Register:I/Oラインへの出力値を読み取るレジスタ)を設定します。それ以外の場合は、pPio->PIO_PDSR(Pin Data Status Register:I/Oラインの入力値を読み取るレジスタレジスタ))を設定します。

    if ( (dwReg & dwMask) == 0 )
    {
        return 0 ;
    }
    else
    {
        return 1 ;
    }
}

dwRegとdwMaskの論理積をとって0であれば0を、そうでなければ1を返します。

つまり、dwMaskによってあらわされるピンのうちひとつでもPIOによって制御されているときは、dwMaskによってあらわされるピンが一つでも出力モードになっていれば1を返します。そうでなければ0を返します。

バージョン

Arduino 1.5



メニューを表示するためにJavaScriptを有効にしてください。

Arduinoで遊ぶページ
Copyright © 2013 garretlab all rights reserved.
inserted by FC2 system