質問編集履歴
3
結論を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
### 結論
|
2
|
+
|
3
|
+
PINAやPINCなるマクロは定数として数値を返すわけではなく、端子の入力を読み取って返してくれるため構造体のメンバとして持たせる発想が間違いでした。
|
4
|
+
|
5
|
+
ほかのアプローチでソースを作成します。
|
6
|
+
|
7
|
+
|
8
|
+
|
1
9
|
### 前提・実現したいこと
|
2
10
|
|
3
11
|
変数でPINA,PINC,PINLなどとして定義されている値を取得したい。
|
2
修正依頼に対応。これ以上簡単に説明するとなると・・・うーん
test
CHANGED
File without changes
|
test
CHANGED
@@ -192,7 +192,29 @@
|
|
192
192
|
|
193
193
|
PINAなどと定義されている定数?が変数や構造体に思ったとおりに格納できていないように見える。
|
194
194
|
|
195
|
+
|
196
|
+
|
197
|
+
```
|
198
|
+
|
195
|
-
|
199
|
+
構造体にPINXのXとなる部分の1文字をchar型で持つ
|
200
|
+
|
201
|
+
↓
|
202
|
+
|
203
|
+
InterpretPinDivision関数の引数にcharを与え、内部で指定したかったPINXを選択してvolatile uint8_t型として返す処理を行う
|
204
|
+
|
205
|
+
↓
|
206
|
+
|
207
|
+
確認としてPinDivisionString関数の引数にuint8_t型としてInterpretPinDivision関数の戻り値を与え、実際に定数PINA,PINC...などと比較して合致したPINXがどれかを文字列にして返す
|
208
|
+
|
209
|
+
```
|
210
|
+
|
211
|
+
といった処理を行っているのですが、PinDivisionString関数の戻り値が指定したかったPINXと異なるPINXを指定してしまっているような結果にななります。
|
212
|
+
|
213
|
+
また、PINCを指定した場合に最終的にPINCと一致する場合があったりPINAと一致する場合があったりと、値が不安定になっているようにみえます。
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
196
218
|
|
197
219
|
- 値が変動する。
|
198
220
|
|
1
少しわかりやすくコメントを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
変数でPINAなどとして定義されている値を取得したい。
|
3
|
+
変数でPINA,PINC,PINLなどとして定義されている値を取得したい。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -34,15 +34,15 @@
|
|
34
34
|
|
35
35
|
```cpp
|
36
36
|
|
37
|
-
const PinPorts info1 = {'a', 0},
|
37
|
+
const PinPorts info1 = {'a', 0}, //digitalRead(22)として
|
38
|
-
|
38
|
+
|
39
|
-
info2 = {'a', 6},
|
39
|
+
info2 = {'a', 6}, //digitalRead(28)として
|
40
|
-
|
40
|
+
|
41
|
-
info3 = {'c', 3},
|
41
|
+
info3 = {'c', 3}, //digitalRead(34)として
|
42
|
-
|
42
|
+
|
43
|
-
info4 = {'g', 1},
|
43
|
+
info4 = {'g', 1}, //digitalRead(40)として
|
44
|
-
|
44
|
+
|
45
|
-
info5 = {'l', 2};
|
45
|
+
info5 = {'l', 2}; //digitalRead(46)として
|
46
46
|
|
47
47
|
|
48
48
|
|