質問編集履歴

3

質問内容の変更

2016/04/06 01:06

投稿

imokempi1002
imokempi1002

スコア12

test CHANGED
File without changes
test CHANGED
@@ -10,11 +10,23 @@
10
10
 
11
11
 
12
12
 
13
- その挙動は、マスタ送マスタ受信に切り替えるめにICCR1のTRSビット切り替えた後にクリアするICSRのTDREビットをクリアした際に、何故かICSRのTENDとRDRF立ち上がってしまう、とうものです。
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クリア */ // (この処理後ICSR:0x80)
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クリア */ // (この処理後ICSR:0x60、ICCR2のSDAO:0)
127
+ IIC2.ICSR.BIT.TDRE = 0; /* TDREクリア */
116
128
 
117
129
  IIC2.ICIER.BIT.ACKBT = 0; /* ACKBT=0を設定 */
118
130
 

2

文頭に前スレの追加

2016/04/06 01:06

投稿

imokempi1002
imokempi1002

スコア12

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

情報の追加

2016/04/06 00:38

投稿

imokempi1002
imokempi1002

スコア12

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