Arduinoで遊ぶページ

Arduinoで遊んだ結果を残すページです。
garretlab
Pio

Pio

概要

Atmel SAM3X8E ARM Cortex-M3プロセッサの並列入出力コントローラ(Parallel Input/Output Controller、PIO)のレジスタを定義する型です。

ひとつのPIOで最大32個の入出力ラインを制御することができます。SAM3X8Eプロセッサには、PIOAとPIOB、PIOC、PIODという4つのPIOがあります。

ソースコード

Pioは、hardware/arduino/sam/system/CMSIS/Device/ATMEL/sam3xa/include/component/component_pio.h に定義されています。以下に全ソースコードを示します。ソースコードのライセンスはこちら

typedef struct {
  WoReg PIO_PER;       /**< \brief (Pio Offset: 0x0000) PIO Enable Register */
  WoReg PIO_PDR;       /**< \brief (Pio Offset: 0x0004) PIO Disable Register */
  RoReg PIO_PSR;       /**< \brief (Pio Offset: 0x0008) PIO Status Register */
  RoReg Reserved1[1];
  WoReg PIO_OER;       /**< \brief (Pio Offset: 0x0010) Output Enable Register */
  WoReg PIO_ODR;       /**< \brief (Pio Offset: 0x0014) Output Disable Register */
  RoReg PIO_OSR;       /**< \brief (Pio Offset: 0x0018) Output Status Register */
  RoReg Reserved2[1];
  WoReg PIO_IFER;      /**< \brief (Pio Offset: 0x0020) Glitch Input Filter Enable Register */
  WoReg PIO_IFDR;      /**< \brief (Pio Offset: 0x0024) Glitch Input Filter Disable Register */
  RoReg PIO_IFSR;      /**< \brief (Pio Offset: 0x0028) Glitch Input Filter Status Register */
  RoReg Reserved3[1];
  WoReg PIO_SODR;      /**< \brief (Pio Offset: 0x0030) Set Output Data Register */
  WoReg PIO_CODR;      /**< \brief (Pio Offset: 0x0034) Clear Output Data Register */
  RwReg PIO_ODSR;      /**< \brief (Pio Offset: 0x0038) Output Data Status Register */
  RoReg PIO_PDSR;      /**< \brief (Pio Offset: 0x003C) Pin Data Status Register */
  WoReg PIO_IER;       /**< \brief (Pio Offset: 0x0040) Interrupt Enable Register */
  WoReg PIO_IDR;       /**< \brief (Pio Offset: 0x0044) Interrupt Disable Register */
  RoReg PIO_IMR;       /**< \brief (Pio Offset: 0x0048) Interrupt Mask Register */
  RoReg PIO_ISR;       /**< \brief (Pio Offset: 0x004C) Interrupt Status Register */
  WoReg PIO_MDER;      /**< \brief (Pio Offset: 0x0050) Multi-driver Enable Register */
  WoReg PIO_MDDR;      /**< \brief (Pio Offset: 0x0054) Multi-driver Disable Register */
  RoReg PIO_MDSR;      /**< \brief (Pio Offset: 0x0058) Multi-driver Status Register */
  RoReg Reserved4[1];
  WoReg PIO_PUDR;      /**< \brief (Pio Offset: 0x0060) Pull-up Disable Register */
  WoReg PIO_PUER;      /**< \brief (Pio Offset: 0x0064) Pull-up Enable Register */
  RoReg PIO_PUSR;      /**< \brief (Pio Offset: 0x0068) Pad Pull-up Status Register */
  RoReg Reserved5[1];
  RwReg PIO_ABSR;      /**< \brief (Pio Offset: 0x0070) Peripheral AB Select Register */
  RoReg Reserved6[3];
  WoReg PIO_SCIFSR;    /**< \brief (Pio Offset: 0x0080) System Clock Glitch Input Filter Select Register */
  WoReg PIO_DIFSR;     /**< \brief (Pio Offset: 0x0084) Debouncing Input Filter Select Register */
  RoReg PIO_IFDGSR;    /**< \brief (Pio Offset: 0x0088) Glitch or Debouncing Input Filter Clock Selection Status Register */
  RwReg PIO_SCDR;      /**< \brief (Pio Offset: 0x008C) Slow Clock Divider Debouncing Register */
  RoReg Reserved7[4];
  WoReg PIO_OWER;      /**< \brief (Pio Offset: 0x00A0) Output Write Enable */
  WoReg PIO_OWDR;      /**< \brief (Pio Offset: 0x00A4) Output Write Disable */
  RoReg PIO_OWSR;      /**< \brief (Pio Offset: 0x00A8) Output Write Status Register */
  RoReg Reserved8[1];
  WoReg PIO_AIMER;     /**< \brief (Pio Offset: 0x00B0) Additional Interrupt Modes Enable Register */
  WoReg PIO_AIMDR;     /**< \brief (Pio Offset: 0x00B4) Additional Interrupt Modes Disables Register */
  RoReg PIO_AIMMR;     /**< \brief (Pio Offset: 0x00B8) Additional Interrupt Modes Mask Register */
  RoReg Reserved9[1];
  WoReg PIO_ESR;       /**< \brief (Pio Offset: 0x00C0) Edge Select Register */
  WoReg PIO_LSR;       /**< \brief (Pio Offset: 0x00C4) Level Select Register */
  RoReg PIO_ELSR;      /**< \brief (Pio Offset: 0x00C8) Edge/Level Status Register */
  RoReg Reserved10[1];
  WoReg PIO_FELLSR;    /**< \brief (Pio Offset: 0x00D0) Falling Edge/Low Level Select Register */
  WoReg PIO_REHLSR;    /**< \brief (Pio Offset: 0x00D4) Rising Edge/ High Level Select Register */
  RoReg PIO_FRLHSR;    /**< \brief (Pio Offset: 0x00D8) Fall/Rise - Low/High Status Register */
  RoReg Reserved11[1];
  RoReg PIO_LOCKSR;    /**< \brief (Pio Offset: 0x00E0) Lock Status */
  RwReg PIO_WPMR;      /**< \brief (Pio Offset: 0x00E4) Write Protect Mode Register */
  RoReg PIO_WPSR;      /**< \brief (Pio Offset: 0x00E8) Write Protect Status Register */
} Pio;

WoReg、RoReg、RwRegはレジスタの読み書き可能性に応じて定義される型です。

Pioレジスタでは、以下の制御を行うことができます。

アドレス(オフセット) レジスタ シンボル 読み書き
0x0000 PIO Enable レジスタ PIO_PER 書き込み専用
0x0004 PIO Disable レジスタ PIO_PDR 書き込み専用
0x0008 PIO Status レジスタ PIO_PSR 読み取り専用
0x000C 予約 - -
0x0010 Output Enable レジスタ PIO_OER 書き込み専用
0x0014 Output Disable レジスタ PIO_ODR 書き込み専用
0x0018 Output Status レジスタ PIO_OSR 読み取り専用
0x001C 予約 - -
0x0020 Glitch Input Filter Enable レジスタ PIO_IFER 書き込み専用
0x0024 Glitch Input Filter Disable レジスタ PIO_IFDR 書き込み専用
0x0028 Glitch Input Filter Status レジスタ PIO_IFSR 読み取り専用
0x002C 予約 - -
0x0030 Set Output Data レジスタ PIO_SODR 書き込み専用
0x0034 Clear Output Data PIO_CODR 書き込み専用
0x0038 Output Data Status レジスタ PIO_ODSR 読み書き
0x003C Pin Data Status レジスタ PIO_PDSR 読み込み専用
0x0040 Interrupt Enable レジスタ PIO_IER 書き込み専用
0x0044 Interrupt Disable レジスタ PIO_IDR 書き込み専用
0x0048 Interrupt Mask レジスタ PIO_IMR 読み取り専用
0x004C Interrupt Status レジスタ PIO_ISR 読み取り専用
0x0050 Multi-driver Enable レジスタ PIO_MDER 書き込み専用
0x0054 Multi-driver Disable レジスタ PIO_MDDR 書き込み専用
0x0058 Multi-driver Status レジスタ PIO_MDSR 読み取り専用
0x005C 予約 - -
0x0060 Pull-up Disable レジスタ PIO_PUDR 書き込み専用
0x0064 Pull-up Enable レジスタ PIO_PUER 書き込み専用
0x0068 Pad Pull-up Status レジスタ PIO_PUSR 読み取り専用
0x006C 予約 - -
0x0070 Peripheral AB Select レジスタ PIO_ABSR 読み書き
0x0074 予約 - -
0x0078 予約 - -
0x007C 予約 - -
0x0080 System Clock Glitch Input Filter Select レジスタ PIO_SCIFSR 書き込み専用
0x0084 Debouncing Input Filter Select レジスタ PIO_DIFSR 書き込み専用
0x0088 Glitch or Debouncing Input Filter Clock Selection Status レジスタ PIO_IFDGSR 読み取り専用
0x008C Slow Clock Divider Debouncing レジスタ PIO_SCDR 読み書き
0x0090 予約 - -
0x0094 予約 - -
0x0098 予約 - -
0x009C 予約 - -
0x00A0 Output Write Enable レジスタ PIO_OWER 書き込み専用
0x00A4 Output Write Disable レジスタ PIO_OWDR 書き込み専用
0x00A8 Output Write Status レジスタ PIO_OWSR 読み取り専用
0x00AC 予約 - -
0x00B0 Additional Interrupt Modes Enable レジスタ PIO_AIMER 書き込み専用
0x00B4 Additional Interrupt Modes Disables レジスタ PIO_AIMDR 書き込み専用
0x00B8 Additional Interrupt Modes Mask レジスタ PIO_AIMMR 読み取り専用
0x00BC 予約 - -
0x00C0 Edge Select レジスタ PIO_ESR 書き込み専用
0x00C4 Level Select レジスタ PIO_LSR 書き込み専用
0x00C8 Edge/Level Status レジスタ PIO_ELSR 読み取り専用
0x00CC 予約 - -
0x00D0 Falling Edge/Low Level Select レジスタ PIO_FELLSR 書き込み専用
0x00D4 Rising Edge/ High Level Select レジスタ PIO_REHLSR 書き込み専用
0x00D8 Fall/Rise - Low/High Status PIO_FRLHSR 読み取り専用
0x00DC 予約 - -
0x00E0 Lock Status レジスタ PIO_LOCKSR 読み取り専用
0x00E4 Write Protect Mode レジスタ PIO_WPMR 読み書き
0x00E8 Write Protect Status レジスタ PIO_WPSR 読み取り専用
0x00EC-0X00F8 予約 - -
0x0100-0X0144 予約 - -

バージョン

Arduino 1.5



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

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