質問編集履歴
3
数字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
|
63
63
|
byte input = gpio_in_reg;
|
64
64
|
|
65
|
-
//inputには26ピンがONなら0b0
|
65
|
+
//inputには26ピンがONなら0b11111011が、27ピンがONなら0b11110111が入る
|
66
66
|
|
67
67
|
}
|
68
68
|
|
2
結果
test
CHANGED
File without changes
|
test
CHANGED
@@ -25,3 +25,45 @@
|
|
25
25
|
|
26
26
|
|
27
27
|
よろしくお願いいたします。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
【5月24日追記】
|
32
|
+
|
33
|
+
アドバイス頂いたおかげで、期待通りの動きになりました。
|
34
|
+
|
35
|
+
### アドバイス頂いた皆様、誠にありがとうございました。
|
36
|
+
|
37
|
+
最終的にこうなりました。
|
38
|
+
|
39
|
+
```C++
|
40
|
+
|
41
|
+
//26ピンと27ピンのフラグを立てる
|
42
|
+
|
43
|
+
static const uint32_t GPIO_IN_REG_MASK = 0b00001100000000000000000000000000;
|
44
|
+
|
45
|
+
void setup() {
|
46
|
+
|
47
|
+
//26と27はインプットだよ。プルアップ抵抗よろしくね。
|
48
|
+
|
49
|
+
pinMode(26, INPUT_PULLUP);
|
50
|
+
|
51
|
+
pinMode(27, INPUT_PULLUP);
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
void loop() {
|
56
|
+
|
57
|
+
uint32_t gpio_in_reg = *((uint32_t *)0x3FF4403C); // 読み取り
|
58
|
+
|
59
|
+
gpio_in_reg = gpio_in_reg | ~GPIO_IN_REG_BUTTON_MASK; //マスクを使って必要なとこ以外は1に
|
60
|
+
|
61
|
+
gpio_in_reg >>= 24;//必要なのは上位8ビットだけ
|
62
|
+
|
63
|
+
byte input = gpio_in_reg;
|
64
|
+
|
65
|
+
//inputには26ピンがONなら0b00000100が、27ピンがONなら0b00001000が入る
|
66
|
+
|
67
|
+
}
|
68
|
+
|
69
|
+
```
|
1
太字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,17 +8,13 @@
|
|
8
8
|
|
9
9
|
公式のリファレンスの4.12 Register Summaryには、
|
10
10
|
|
11
|
-
**
|
11
|
+
**NAME: GPIO_IN_REG**
|
12
12
|
|
13
|
-
|
13
|
+
**Description: GPIO 0-31 input register**
|
14
14
|
|
15
|
-
|
15
|
+
**Address: 0x3FF4403C**
|
16
16
|
|
17
|
-
Address: 0x3FF4403C
|
18
|
-
|
19
|
-
Access: read only
|
17
|
+
**Access: read only**
|
20
|
-
|
21
|
-
**
|
22
18
|
|
23
19
|
とあり、この辺りにそれらしい事が書かれていることは調べがついたのですが、
|
24
20
|
|