デジタルポート用のマクロ - renesas/Arduino GitHub Wiki
Digital Port用マクロを使用すると、RL78ボードのDigital Portを制御できます。
-
指定したピンに対応するポートを返す。
- 例 : 引数 = 0の場合、 P03 の 0 を返す。
-
- pin : RL78のピン番号
-
- 指定したピンに対応するポート
※ 指定可能なピン以外を指定した場合は255を返す。
- 指定したピンに対応するポート
-
- 0番ピンのポート番号を取得する。
uint8_t port; port = digitalPinToPort(0);
-
指定したピンに対応するビットマスクを返す。
- 例 : 引数 = 0の場合、 P03 の ビットマスク値である 0x08を返す。
-
- pin : RL78のピン番号
-
- 指定したピンに対応するビットマスク値
※ 指定可能なピン以外を指定した場合は255を返す。
- 指定したピンに対応するビットマスク値
-
- 0番ピンのビットマスク値を取得する。。
uint8_t mask; mask = digitalPinToBitMask(0);
-
指定したポートに対応するポート・レジスタ(Pxx)のアドレスを返す。
-
ポート・レジスタは8ビットのレジスタで、1ビット毎に端子の出力を設定する。1設定時はHIGHレベル、0設定時はLOWレベルを出力する。
-
本マクロを使用する場合は、事前にportModeRegister()またはpinMode()でデジタル出力モードに設定すること。
-
- port : RL78のポート
-
- 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
※ 指定可能なポート以外を指定した場合はNULLを返す。
- 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
-
- ポート・レジスタ(P00)のアドレスを取得する。
uint8_t * reg; reg = portOutputRegister(0);
-
指定したポートに対応するポート・レジスタ(Pxx)のアドレスを返す。
-
ポート・レジスタは8ビットのレジスタで、1ビット毎に端子の入力値を読み出すことができる。1の場合はHIGHレベル、0の場合はLOWレベルとなる。
-
本マクロを使用する場合は、事前にportModeRegister()またはpinMode()でデジタル入力モードに設定すること。
-
- port : RL78のポート
-
- 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
※ 指定可能なポート以外を指定した場合はNULLを返す。
- 指定したポートに対応するポート・レジスタ(Pxx)のアドレス
-
- ポート・レジスタ(P00)のアドレスを取得する。
uint8_t * reg; reg = portInputRegister(0);
-
指定したポートに対応するポート・モード・レジスタ(PMxx)のアドレスを返す
-
ポート・モード・レジスタは1ビット単位で端子の入力/出力モードを設定する。0を設定すると出力モードに、1を設定すると入力モードにする。
-
一部の端子はリセット時にアナログ等の機能が有効なため、本マクロを用いた設定が無効になる。正しくデジタル入出力モードに設定したい場合は、pinMode()を用いること。
-
- port : RL78のポート
-
- 指定したポートに対応するポート・モード・レジスタ(PMxx)のアドレス
※ 指定可能なポート以外を指定した場合はNULLを返す。
- 指定したポートに対応するポート・モード・レジスタ(PMxx)のアドレス
-
-
- ポート0の入出力レジスタのアドレスを取得する。
uint8_t * reg; reg = portModeRegister(0);
-
- 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);
-
-
- 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 }