デジタルポート用のマクロ - renesas/Arduino GitHub Wiki

Digital Port用マクロ

Digital Port用マクロを使用すると、RL78ボードのDigital Portを制御できます。

関数

digitalPinToPort(pin)

  • 指定したピンに対応するポートを返す。

    • 例 : 引数 = 0の場合、 P03 の 0 を返す。
  • 引数

    • pin : RL78のピン番号
  • 戻り値

    • 指定したピンに対応するポート
      ※ 指定可能なピン以外を指定した場合は255を返す。
  • 使用例

    • 0番ピンのポート番号を取得する。
    uint8_t port;
    port = digitalPinToPort(0);

digitalPinToBitMask(pin)

  • 指定したピンに対応するビットマスクを返す。

    • 例 : 引数 = 0の場合、 P03 の ビットマスク値である 0x08を返す。
  • 引数

    • pin : RL78のピン番号
  • 戻り値

    • 指定したピンに対応するビットマスク値
      ※ 指定可能なピン以外を指定した場合は255を返す。
  • 使用例

    • 0番ピンのビットマスク値を取得する。。
    uint8_t mask;
    mask = digitalPinToBitMask(0);

portOutputRegister(port)

  • 指定したポートに対応するポート・レジスタ(Pxx)のアドレスを返す。

  • ポート・レジスタは8ビットのレジスタで、1ビット毎に端子の出力を設定する。1設定時はHIGHレベル、0設定時はLOWレベルを出力する。

  • 本マクロを使用する場合は、事前にportModeRegister()またはpinMode()でデジタル出力モードに設定すること。

  • 引数

    • port : RL78のポート
  • 戻り値

    • 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
      ※ 指定可能なポート以外を指定した場合はNULLを返す。
  • 使用例

    • ポート・レジスタ(P00)のアドレスを取得する。
    uint8_t * reg;
    reg = portOutputRegister(0);

portInputRegister(port)

  • 指定したポートに対応するポート・レジスタ(Pxx)のアドレスを返す。

  • ポート・レジスタは8ビットのレジスタで、1ビット毎に端子の入力値を読み出すことができる。1の場合はHIGHレベル、0の場合はLOWレベルとなる。

  • 本マクロを使用する場合は、事前にportModeRegister()またはpinMode()でデジタル入力モードに設定すること。

  • 引数

    • port : RL78のポート
  • 戻り値

    • 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
      ※ 指定可能なポート以外を指定した場合はNULLを返す。
  • 使用例

    • ポート・レジスタ(P00)のアドレスを取得する。
    uint8_t * reg;
    reg = portInputRegister(0);

portModeRegister(port)

  • 指定したポートに対応するポート・モード・レジスタ(PMxx)のアドレスを返す

  • ポート・モード・レジスタは1ビット単位で端子の入力/出力モードを設定する。0を設定すると出力モードに、1を設定すると入力モードにする。

  • 一部の端子はリセット時にアナログ等の機能が有効なため、本マクロを用いた設定が無効になる。正しくデジタル入出力モードに設定したい場合は、pinMode()を用いること。

  • 引数

    • port : RL78のポート
  • 戻り値

    • 指定したポートに対応するポート・モード・レジスタ(PMxx)のアドレス
      ※ 指定可能なポート以外を指定した場合はNULLを返す。
  • 使用例

      1. ポート0の入出力レジスタのアドレスを取得する。
    uint8_t * reg;
    reg = portModeRegister(0);
      1. 2番ピンに対して出力モードにして、HIGH/LOWを出力する。
    uint8_t pin = 2;
    uint8_t port;
    uint8_t mask;
    
    port = digitalPinToPort(pin);
    mask = digitalPinToBitMask(pin);
    
    *portModeRegister(port) &= ~(mask); // or pinMode(pin, OUTPUT);  //Output Mode
    *portOutputRegister(port) |= mask; // Output High Level
    delay(1000);
    *portOutputRegister(port) &= ~(mask); // Output Low Level
    delay(1000);
    1. 3番ピンに対して入力モードにして、ピンの入力状態を読み出す。
    uint8_t pin = 3;
    uint8_t port;
    uint8_t mask;
    uint8_t level;
    
    port = digitalPinToPort(pin);
    mask = digitalPinToBitMask(pin);
    
    *portModeRegister(port) |= mask; // or pinMode(pin, INPUT);  //Input Mode
    level = *portInputRegister(port) & mask; // Input pin
    if(level == 0)
    {
      // Low Level
    }
    else
    {
      // High Level
    }
⚠️ **GitHub.com Fallback** ⚠️