Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
Other MCU/MPU Products
R8C/Tiny
More
Cancel
R8C/Tiny
R8C/Tiny Forum
R8C/38CのPD0が変更出来ない
Home
Forum
Tags
More
Cancel
New
Replies
5 replies
Subscribers
442 subscribers
Views
2765 views
Users
0 members are here
R5F2138CCNFP
PD0
プログラム
prc2
ポート設定
beginner
Options
Share
More
Cancel
Related
R8C/38CのPD0が変更出来ない
tantaka
over 10 years ago
R5F2138CCNFPのポート設定で、PD0が書き変わりません。プログラム上からもHEWのツール(I/O)からでも書き変わらず\”0\”のままです。プログラムの先頭で、まだ、クロック設定しかしていないのですが、何かP0の設定に影響する要因が有るのでしょうか。
ポート設定処理では、prc2 = 1;・・・・prc2 = 0;で閉めています。PD0以外はプログラムからも、ツールからも書き変わります。何か分かりましたら教えて頂けますか。
チョコ
over 10 years ago
スタッフのチョコです。
tantaka様のスレッドにコメントさせていただきます。
R8C/38のマニュアルがダウンロードできなくてR8C/35を見ていますが,「ポートPi方向レジスタ」の説明の部分に以下のような注がございます。この点をご確認ください。
「PD0レジスタは、PRCRレジスタのPRC2ビットを“1”(書き込み許可)にした次の命令で書いてください。」
Cancel
Up
0
Down
Reply
Cancel
tantaka
over 10 years ago
早速の回答ありがとうございます。以下の様な書き方で
prc2 = 1; ←ここでのprc2を見ると\”0\”のまま
pd0 = 0x0f; ←ここでのpd0を見ると\”0\”のまま
p0 = 0x03
.
.
prc2 =0;
上記の様に書いて有りますが、pd0だけが書き変わりません。マニュアルに、PRC2 ビットを“1”( 書き込み許可) にした後、SFR 領域に書き込むと“0”になります。と有りますが、この説明が理解しずらいです。
Cancel
Up
0
Down
Reply
Cancel
TOYKEY
over 10 years ago
tantakaさん
こんにちはTOYKEYと申します。
>PRC2 ビットを“1”( 書き込み許可) にした後、
>SFR 領域に書き込むと“0”になります。
>と有りますが、この説明が理解しずらいです。
→PRC2でPD0のプロテクトを解除したあと、何か
レジスタをいじると自動的にプロテクトが
復活するという意味です。
当然ながらデバッガでブレークをかけると、
内部的にはレジスタをいじっちゃいます。
よって
プロテクト解除
↓
PD0の設定
という一連の流れの中でブレークを貼らないで
ください。
つまり
prc2 = 1; ←ここでブレークしちゃダメ
pd0 = 0x0f;←ここでブレークしちゃダメ
p0 = 0x03 ←ここで確認してみましょう
それでもだめならまた書き込んでください。
Cancel
Up
0
Down
Reply
Cancel
チョコ
over 10 years ago
スタッフのチョコです。
TOYKEY様フォローありがとうございます。
tantaka様,このプロテクトでは必ず,連続して設定する必要がございます。TOYKEY様がコメントされているように,ブレークをかけると,ブレークを実現するための処理が挿入されてしまい,「次の命令」とはなりません。
このような,連続したシーケンスが指定されている場合には,ブレークの設定にはご注意ください。
Cancel
Up
0
Down
Reply
Cancel
tantaka
over 10 years ago
回答ありがとうございます。
原因は、ポート設定の書き方に問題が有るようです。
prc2 = 1;
pd0_0 = 1;
pd0_1 = 1;
・
・
上記の記述から、以下の記述に変更
prc2 = 1;
pd0 = 0x0f;
・
・
ご指摘の様にprc2設定の後、bit単位での設定では、自動的にプロテクトが復活して書き込めなくなってしまった、と言う事みたいです。
問題は解決しました。大変ありがとうございました。
Cancel
Up
0
Down
Reply
Cancel