質問編集履歴

3

結論を追記

2019/09/18 07:27

投稿

退会済みユーザー
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

修正依頼に対応。これ以上簡単に説明するとなると・・・うーん

2019/09/18 07:27

投稿

退会済みユーザー
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

少しわかりやすくコメントを追加しました。

2019/09/17 23:53

投稿

退会済みユーザー
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