Arduinoでは以下のようにレジスタを操作し、D8ピンとD9ピンの入力を同時に読み取りました。
byte input = PINB | ~0b00000011;
同じことをESP32-DevkitCの26ピンと27ピンを使ってやりたいと考えています。
公式のリファレンスの4.12 Register Summaryには、
NAME: GPIO_IN_REG
Description: GPIO 0-31 input register
Address: 0x3FF4403C
Access: read only
とあり、この辺りにそれらしい事が書かれていることは調べがついたのですが、
具体的にどうコーディングすれば良いのか見当がつきません。
どなたかアドバイス頂けますでしょうか。
よろしくお願いいたします。
【5月24日追記】
アドバイス頂いたおかげで、期待通りの動きになりました。
アドバイス頂いた皆様、誠にありがとうございました。
最終的にこうなりました。
C++
1//26ピンと27ピンのフラグを立てる 2static const uint32_t GPIO_IN_REG_MASK = 0b00001100000000000000000000000000; 3void setup() { 4 //26と27はインプットだよ。プルアップ抵抗よろしくね。 5 pinMode(26, INPUT_PULLUP); 6 pinMode(27, INPUT_PULLUP); 7} 8void loop() { 9 uint32_t gpio_in_reg = *((uint32_t *)0x3FF4403C); // 読み取り 10 gpio_in_reg = gpio_in_reg | ~GPIO_IN_REG_BUTTON_MASK; //マスクを使って必要なとこ以外は1に 11 gpio_in_reg >>= 24;//必要なのは上位8ビットだけ 12 byte input = gpio_in_reg; 13 //inputには26ピンがONなら0b11111011が、27ピンがONなら0b11110111が入る 14}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/23 13:15