質問編集履歴
3
質問内容の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,11 +10,23 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
|
13
|
+
(変更)具体的には、通信自体はできるものの、得られた値を格納するICDRRが初期値0xFFのまま変わらず得られる温度が255℃になってしまいます。
|
14
|
-
|
15
|
-
(追記)その際、SDAOが1から0に切り替わっています。
|
16
14
|
|
17
15
|
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
(変更前)その挙動は、マスタ送信からマスタ受信に切り替えるためにICCR1のTRSビットを切り替えた後にクリアするICSRのTDREビットをクリアした際に、何故かICSRのTENDとRDRFが立ち上がってしまう、というものです。
|
20
|
+
|
21
|
+
その際、SDAOが1から0に切り替わっています。
|
22
|
+
|
23
|
+
(追記)通信中のレジスタの確認はステップモードとブレークポイントを利用して行なっていましたが、ブレークの位置でレジスタの値が変わってしまったため、質問内容を変えさせていただきます。
|
24
|
+
|
25
|
+
大変申し訳ありません
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
---
|
18
30
|
|
19
31
|
このような挙動が発生してしまう原因と対策を教えてください。
|
20
32
|
|
@@ -108,11 +120,11 @@
|
|
108
120
|
|
109
121
|
|
110
122
|
|
111
|
-
IIC2.ICSR.BIT.TEND = 0; /* TENDクリア */
|
123
|
+
IIC2.ICSR.BIT.TEND = 0; /* TENDクリア */
|
112
124
|
|
113
125
|
IIC2.ICCR1.BIT.TRS = 0; /* マスタ受信モード切替 */
|
114
126
|
|
115
|
-
IIC2.ICSR.BIT.TDRE = 0; /* TDREクリア */
|
127
|
+
IIC2.ICSR.BIT.TDRE = 0; /* TDREクリア */
|
116
128
|
|
117
129
|
IIC2.ICIER.BIT.ACKBT = 0; /* ACKBT=0を設定 */
|
118
130
|
|
2
文頭に前スレの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
こんにちは。
|
2
|
+
|
3
|
+
先日「H8/3687FのIIC2通信の手順( https://teratail.com/questions/31067)」でも似たような質問させていただいた者です。
|
2
4
|
|
3
5
|
|
4
6
|
|
1
情報の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
|
10
10
|
|
11
11
|
その挙動は、マスタ送信からマスタ受信に切り替えるためにICCR1のTRSビットを切り替えた後にクリアするICSRのTDREビットをクリアした際に、何故かICSRのTENDとRDRFが立ち上がってしまう、というものです。
|
12
|
+
|
13
|
+
(追記)その際、SDAOが1から0に切り替わっています。
|
12
14
|
|
13
15
|
|
14
16
|
|
@@ -96,7 +98,7 @@
|
|
96
98
|
|
97
99
|
// while(IIC2.ICSR.BIT.TEND == 0){;} // TEND=1
|
98
100
|
|
99
|
-
while(IIC2.ICIER.BIT.ACKBR == 1){;} //アクノリッジ (この時点でICSR:C0)
|
101
|
+
while(IIC2.ICIER.BIT.ACKBR == 1){;} //アクノリッジ (この時点でICSR:0xC0)
|
100
102
|
|
101
103
|
|
102
104
|
|
@@ -108,7 +110,7 @@
|
|
108
110
|
|
109
111
|
IIC2.ICCR1.BIT.TRS = 0; /* マスタ受信モード切替 */
|
110
112
|
|
111
|
-
IIC2.ICSR.BIT.TDRE = 0; /* TDREクリア */ // (この処理後ICSR:60)
|
113
|
+
IIC2.ICSR.BIT.TDRE = 0; /* TDREクリア */ // (この処理後ICSR:0x60、ICCR2のSDAO:0)
|
112
114
|
|
113
115
|
IIC2.ICIER.BIT.ACKBT = 0; /* ACKBT=0を設定 */
|
114
116
|
|