Arduinoで遊ぶページ

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

PIO_GetOutputDataStatus()

概要

指定したピンが出力モードに設定されているかどうかを調べます。

以下のレジスタを使います。

レジスタ シンボル 意味
PIO Status レジスタ PIO_PSR PIOの状態を読み取る。
0:PIOが無効、1:PIOが有効
Output Status レジスタ PIO_OSR ピンの出力状態を読み取る。
0:入力モード、1:出力モード

ソースコード

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

extern uint32_t PIO_GetOutputDataStatus( const Pio* pPio, const uint32_t dwMask )
{
  /* Test if pin is under control of PIO */
  if ( (pPio->PIO_PSR & dwMask) != 0 )
  {
    /* Test if pin is configured as output */
    if ( (pPio->PIO_OSR & dwMask) != 0 )
    {
      return 1 ;
    }
  }

  return 0 ;
}
extern uint32_t PIO_GetOutputDataStatus( const Pio* pPio, const uint32_t dwMask )
{

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

  /* Test if pin is under control of PIO */
  if ( (pPio->PIO_PSR & dwMask) != 0 )
  {
    /* Test if pin is configured as output */
    if ( (pPio->PIO_OSR & dwMask) != 0 )
    {
      return 1 ;
    }
  }

  return 0 ;
}

pPio->PIO_PSRは32ビットのレジスタで、ビットが1の場合はそのビットに対応しているピンがPIO(Parallel Input/Output Controller)によって制御されていることを示します。

pPio->PIO_OSRは32ビットのレジスタで、ビットが1の場合はそのビットに対応しているピンが出力モードであることを示します。

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

バージョン

Arduino 1.5



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

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