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/M12でのポート入出力設定について
Home
Forum
Tags
More
Cancel
New
Replies
11 replies
Subscribers
442 subscribers
Views
5635 views
Users
0 members are here
input-dirbclr
3
7
PD1bset
out-data-setbclr
P1-3
PD1bclr
Options
Share
More
Cancel
Related
R8C/M12でのポート入出力設定について
さる
over 10 years ago
R8C/M12を趣味で使っております。
今回、ポートの入出力で、想定外の動作をしたので、質問させて頂きます。
条件として、
P1-3ポートは、オープンドレインで外部プルアップ
P1-7ポートは、オープンドレインで外部プルアップ
で、それに合わせてレジスタの設定を行っています。
ここで、
bclr 3\,PD1 ;input-dir
bclr 7\,PD1
bclr 3\,P3 ;out-data-set
bclr 7\,P3
bset 3\,PD1 ;output-dir
bset 7\,PD1
bclr 3\,PD1 ;input-dir
bclr 7\,PD1
bset 3\,PD1
bset 7\,PD1
bclr 3\,PD1
bclr 7\,PD1
と記述した時、P1-3の出力ラッチレジスタの内容が1に
変化している様な動作をします。
(この時、P1-3のポートレベルは1です。)
端子レベル強制読み出しビットは0で変更していません。
P1-7など1ビット単体で変更する際に、変更する以外のビットでは出力レジスタの値でなく、入力レジスタの値が反映される様な気がします。
お手数ですが、ご教示ください。
マニュアルの注意記述など指示頂ければ幸いです。
Parents
チョコ
over 10 years ago
スタッフのチョコです。
さる様の「Re:極端な例として」にコメントさせていただきます。
> bclr 3\,P1 ;out-data-set
> bclr 7\,P1 ;(btst 7\,P1でも同じ)
この処理だけが問題であれば,以下のようにすることでp1.3とp1.7を同時に0にできます。(ほかのビットの値が問題になる場合には直接ポートに演算するだけでは済みませんが。)
and.b #01110111b\,P1 ;out-data-set
後は,ほかの処理でp1.3とp1.7のラッチの値を1にしないように注意しておけば,p1.7とp1.3の制御はPD1レジスタに対するビット処理で可能です。(こちらは,ほかのビットを気にする必要はありません。)
なお,ラッチの値を0にしておいて,入出力の方向切り替えで,オープンドレイン出力を制御するのはよくやる方法です。
ただし,ポートを入力に切り替えても,すぐに端子の電圧が立ち上がるわけではありません。信号線の浮遊容量とプルアップ抵抗の値で決まる時定数で立ち上がっていきます。つまり,入力に切り替えてすぐに正しい値が読めるわけではないことには注意が必要です。
Cancel
Up
0
Down
Reply
Cancel
Reply
チョコ
over 10 years ago
スタッフのチョコです。
さる様の「Re:極端な例として」にコメントさせていただきます。
> bclr 3\,P1 ;out-data-set
> bclr 7\,P1 ;(btst 7\,P1でも同じ)
この処理だけが問題であれば,以下のようにすることでp1.3とp1.7を同時に0にできます。(ほかのビットの値が問題になる場合には直接ポートに演算するだけでは済みませんが。)
and.b #01110111b\,P1 ;out-data-set
後は,ほかの処理でp1.3とp1.7のラッチの値を1にしないように注意しておけば,p1.7とp1.3の制御はPD1レジスタに対するビット処理で可能です。(こちらは,ほかのビットを気にする必要はありません。)
なお,ラッチの値を0にしておいて,入出力の方向切り替えで,オープンドレイン出力を制御するのはよくやる方法です。
ただし,ポートを入力に切り替えても,すぐに端子の電圧が立ち上がるわけではありません。信号線の浮遊容量とプルアップ抵抗の値で決まる時定数で立ち上がっていきます。つまり,入力に切り替えてすぐに正しい値が読めるわけではないことには注意が必要です。
Cancel
Up
0
Down
Reply
Cancel
Children
No Data