- 5738. 出力ピンと入力ピンを共有する方法 [さいころステーキ] 2005/08/04 01:41
- 数ヶ月前だと思うのですが、この掲示板で
出力ピンと入力ピンを共有する方法
をどなたかが書いていたと思います。
再度、教えて頂けますでしょうか。
例えば
出力:LED
入力:プッシュスイッチ
を、1つのピンで共有する方法だったと思います。
普段は出力としてピンを設定して、時々入力を見るような
プログラムを作成すると思うのですが、回路構成が分かりません。
よろしくお願いします。
- 5741. Re: 出力ピンと入力ピンを共有する方法 [JO_O] 2005/08/04 09:46
- 毎度JOです。
以前の投稿は分かりませんが、回路の検討をして見ました。
条件として、PIC出力中もプッシュSWが押せる事(CMOSの出力をショートしない)
出力設定→TRIS→入力設定→TRIS→出力設定 と切り替えて使用する。
PIC━━┳━LED━┳━270Ω━━VDD
┃ ┃
10KΩ プッシュSW
┃ ┃
GND GND
この回路であれば、条件を満たしますが、LED点灯中にプッシュSWを押すと、
LEDが消灯してしまいます、消灯しないようにすると、回路が複雑になりそうです。
この回路には条件があります、LEDの順方向電圧が2V以下である事です、
2V以上では、PIC入力設定でSWがOFFの時,
入力HIレベルが、3Vを切ってしまいます。
もっと部品点数の少ない回路が出来るでしょうか??
他の方の投稿を楽しみにしております。
- 5742. 投稿者削除 [ ] 2005/08/04 09:49
-
- 5743. Re: 出力ピンと入力ピンを共有する方法 [JO_O] 2005/08/04 09:52
- 失礼しました、スペースがカットされてしまいました、
再度回路を上げます。
.PIC ━━┳━LED━┳━270Ω━━VDD
. ┃ ┃
. 10KΩ プッシュSW
. ┃ ┃
. GND GND
- 5744. Re: 出力ピンと入力ピンを共有する方法 [リバー] 2005/08/04 10:35
- 下のように入力にダイオードを入れてみてはどうでしょうか?
入力がhighの時に出力もhighになりますが
PIC━┳━━┳━━━出力
┃ ┃
┃ ┗←ダイオード━入力
10kΩ(プルダウン)
┃
GND
- 5747. Re: 出力ピンと入力ピンを共有する方法 [新参者] 2005/08/04 12:31
- はじめまして。
(下の→├はダイオード、無しでも可)
Port┳→├10kΩ┳10kΩ(PullUp)━Vdd
┃ ┃
330Ω SW
LED ┃
┃ GND
GND
SWはPUSH-SWの他、設定JPやDIP-SW等 ONのままでもOK。ダイオードは電源リセット時などPort未初期化でのLED点灯防止なので、気にしなければ無くても可。
LCD表示器のデータ線やSWマトリクスとLEDマトリクスのデータ線なども入出力兼用に出来ますね。
- 5748. Re: 出力ピンと入力ピンを共有する方法 [リバー] 2005/08/04 12:42
- この図の時
ダイオードの先でプルアップをしたら、プルアップ電源
がダイオードに阻まれて結局ハイインピーダンス状態に
なると思うのですが大丈夫なのでしょうか?
- 5750. Re: 出力ピンと入力ピンを共有する方法 [新参者] 2005/08/04 13:01
- >この図の時
>ダイオードの先でプルアップをしたら、プルアップ電源
>がダイオードに阻まれて結局ハイインピーダンス状態に
>なると思うのですが大丈夫なのでしょうか?
そうですね(^^; ダイオード無しに訂正します。
直前の思いつきで追加したのが不味かったようです。
結局のところ、通常のSW入力回路に直列保護抵抗を入れれば時分割で入出力共用化可能です。
(ストローブ信号などデータ不定に出来ない出力Portは共用NG)
- 5752. Re: 出力ピンと入力ピンを共有する方法 [CHOBI] 2005/08/04 15:30
- 入力/出力切替つながりで便乗させてください。
先日下記でLEDで発光/受光のページ見つけて
http://variable.air-nifty.com/pic/2005/03/_.html
12F675にて実験してみました。
暗くするとLED点等
http://park23.wakwak.com/~chobi/dark.JPG
明るくするとLED消灯
http://park23.wakwak.com/~chobi/light.JPG
回路は
PIC I/O--R--LED--GNDだけのシンプルな回路です。
(写真にはSW写っていますが、全く関係ありません)
下記がメインの部分のソースです。
(1) 出力に設定、LEDの電荷引き抜き
(2) 入力に設定、A/D変換して閾値より低ければ
出力に切り替えてLED点灯
(3) 閾値より高ければ何もしない
結構おもしろかったです。(ライトークも購入して
しまいました)
MAIN
CLRFGPIO
BANK1
MOVLFB'00111000',TRISIO
BANK0
CALLTIME_500U
CALLTIME_500U
BANK1
MOVLFB'00111001',TRISIO
MOVLFB'01010001',ANSEL
BANK0
MOVLFB'00000001',ADCON0
CALLTIME_500U
BSFADCON0,GO
AD_START
BTFSCADCON0,GO
GOTOAD_START
MOVFFADRESH,PD
BANK1
CLRFANSEL
MOVLFB'00111000',TRISIO
BANK0
MOVLWD'8'
SUBWFPD,W
BTFSCSTATUS,C
GOTOMAIN
ON
MOVLFB'00000111',GPIO
CALLTIME_125M
GOTOMAIN
- 5755. Re: 出力ピンと入力ピンを共有する方法 [JO_O] 2005/08/04 22:12
- 再度JOです。
PIC出力中にプッシュSWが押された時、直接或はダイオードを通してVDD,VSSに
短絡してはいけません、LEDを通しても同じく禁止です、ポートの電流が
ポートの最大電流を超えてしまいます。
先の投稿で
PIC ━━┳━LED━┳━270Ω━━VDD
┃ ┃
10KΩ プッシュSW
┃ ┃
GND GND
この回路であれば、条件を満たしますが、LED点灯中にプッシュSWを押すと、
LEDが消灯してしまいます、消灯しないようにすると、回路が複雑になりそうです。
さらに考えて見ました、LED点灯中にプッシュSWを押すとLEDが消灯してしまうのは、
PICのポートをデジタルポートととらえているからです。
PICのポートをアナログ的に捉えれば、LEDを点灯しながら、
「点灯しているように見せる」事もできそうです。
VDD
┃
27k
┃
PIC━━╋━━━┳━━
┃ ┃
47k 1K
┃ ┃
VSS スイッチ
┃
VSS
この回路でPICを入力ポートとして使用した場合、入力インピダンスは高いので、
スイッチOFFでポート電圧は、3.1Vで「HI」と認識します
スイッチONでポート電圧は、0.17Vで「LO」と認識します。
したがってこの回路では、0.17V〜3.1Vまで変化します
PICを出力ポートとした場合、VDD及びVSSに短絡する事もありません
PICを出力ポートとした場合、負荷が十分に高い場合出力電圧は、
0.5V以下と4.5V以上になります、そこでコンパレーターを2個用意して、
1.6V以下では「LO」と判断、3.3V以上では「HI」と認識させて、
FFでセット、リセットさせれば、入力と同時に出力できます。
- 5756. Re: 出力ピンと入力ピンを共有する方法 [JO_O] 2005/08/04 22:12
NE555を使用しましょう、555の2番と6番ピンを短絡すると、
内部で3分割された電圧と比較して、1.6V以下ではセット
3.3V以上ではリセットします、3番ピンの出力は200mAまで流せますから
LEDが点灯できます
VDD
┃
270Ω
VDD ┃
VDD ┃ LED
┃ ┃ ┃
27k ┏━┻━━┻
┃ ┃ 8 3
PIC━━╋━━━┳━━━┳━┫2
┃ ┃ ┃ ┃
47k 1K ┗━┫6
┃ ┃ ┃ NE555
VSS スイッチ ┃
┃ ┗━━━━━
VSS
PIC出力設定で、「1」を出力するとLED点灯、「0」を出力するとLED消灯
スイッチの入力を監視する場合は、LEDの点灯状態をスタックしておいて→
入力設定(TRIS)→ポートの入力→出力設定(TRIS)→スタックしておいた
LEDの点灯状態を復旧させる、この間12ステップ程度です。
出力「点灯時」にPICを入力設定に切り替えても、1.6V〜3.3V以内に収まっているので、
出力に影響はありません、この時スイッチがおされていても、
12ステップで復旧しますので、「目では認識できません」
12ステップ=クロック4MHzでも12us程度
出力「消灯中」にPICを入力設定に切り替えても、3.3V以内に収まっているので、
消灯のままです
この回路であれば、スイッチが「押されっぱなし」でも
出力に影響はあまり・・・ありませんですね。
回路の検証はしておりません、実際に作られて問題があれば、再投稿ください
仕事でプログラム中ですが「頭の体操」のつもりで30分程度でした、
もっといいアイデアがあれば、投稿下さい勉強になります。
- 5763. Re: 出力ピンと入力ピンを共有する方法 [新参者] 2005/08/05 13:30
- 修正と補足です。
Port ┳1kΩ┳1kΩ(Pullup)━Vdd
┃ ┃
330Ω SW
LED ┃
┃ GND
GND
補足:LED出力とSW入力共用の場合はSW-off時の'H'入力レベル(VIH)を考慮する必要ありますね。
TTL入力PortではVIH:2.0V程度なので上図の抵抗値を参考にして下さい。
LED負荷とシュミットトリガ入力Portの共用はVIH条件を満足するのが難しそうです。
LCD表示器のデータ線などとSW入力共用ならTTL/シュミット入力共OKでしょう。
- 5769. Re: 出力ピンと入力ピンを共有する方法 [さいころステーキ] 2005/08/06 00:36
- 返信が遅れてすみません。
JO_Oさんをはじめ、皆さんいろいろと情報ありがとうございます。
タイマー IC を使った回路はちょっと難しそうですね…
教えて頂いた回路は近い内に試し、何か有りましたらまた書き込ませて
頂くと思いますが、その際はよろしくお願いします。
- 5770. Re: 出力ピンと入力ピンを共有する方法 [さいころステーキ] 2005/08/06 00:44
- CHOBIさん、面白い情報ありがとうございます。
LED に光を当てると電圧が発生するなんて思っても
みませんでした。
実際に私の手元に有る数種類の LED を試した所
非点灯時は透明で赤発色の物が 10 〜 200mV 程度、
秋月で購入した自動点滅の赤の LED は
20 〜 300mV 程度まで電圧が変化しました。
(逆に全然変化しない物だと 5 〜 50mV ぐらいでした)
この現象と、入力/出力切替でこんな面白い事が
できるんですねー。
- 5775. Re: 出力ピンと入力ピンを共有する方法 [CHOBI] 2005/08/06 10:05
- 私の手持ちの中では”黄色”が断然良かったです。
白熱電球近づけると1Vを超えました。
一般的にシリコンに比べ、化合物半導体は
バンドギャップが大きいので開放電圧は大きく
なると思います。