例えばPICの16F84には18のピンがあり、そのうちのポートAB合わせて13のピンが入出力用として使用できるのですが、工作をしていて「あと1ピン足りない!!」などという事があると思いますが、その様な場合にどのようにして解決すればよいでしょうか?
以前「デジタルICの74シリーズという物を使えばピンの不足を補う事ができる」という話を聞いたことがあるのですが、ご存知の方がおられたら是非お教えください。具体的にどのように接続し、PIC側のプログラムをどのようにしてやれば良いのかを教えていただければありがたいです。
参考になるHPがあればそれもお願いします。
しかし、本当にシロウトに毛の生えた程度の者なので専門用語等はできる限り分かりやすい言葉にしていただけると非常に助かります。
「PICを2個使ってリンクさせちゃえばいいじゃん」と言うご意見もあるかもしれませんが、できればそれ以外の方法が良いので・・・。
よろしくお願いします。
No.7ベストアンサー
- 回答日時:
「74HC595」と「74HC165」を使用した入出力拡張方について、詳しく書かれているドキュメントがありました。
(同じ事考える人はいっぱいいるんだなぁ)http://gd4-082139.gd.icnet.ne.jp/~hero/hero.htm
私のブックマークに入っていたのですが、PIC関係は見ていなかったので気づきませんでした。スイマセン。
このページのちょうど真ん中くらいで「PIC.PDF」と言うアクロバット文書がダウンロードできます。
「手軽に使用可能な1チップマイコンのPICから、Mid-range PIC(主に16F8x)を使用する上での留意点などを記述したヒント集です。」だそうです。
このドキュメントの34ページ目に、そのものズバリが詳しく書かれています。
お礼が大変遅くなってしまいました。申し訳ありません。
シロウトの僕にはやっぱり意味不明なのでシロウトらしくもっと基本的な部分から勉強していき、それからもう一度kabasanさんの回答を読み返したいと思います。
ありがとうございました。
No.6
- 回答日時:
>3本が8本というのは要するに・・・・
ちょっと(だいぶ?)違います。
PICの命令にビットシフト命令有りましたっけ?(そりゃあるわな・・記憶が~)それがわかれば理解できると思うんですけど・・・・
「595」はシフトレジスタって言うんですけど、3本の信号は以下の意味になります。
1、ビットデータ
2、データを送る合図
3、送ったデータを出力する合図
8ビットのメモリがここにあると思ってください。↓
入力 → □□□□□□□□
ピン1に「1」か「0」を出して、ピン2で合図を送ると「595」がデータを左端に記憶します。
もう一度送ると新しいものが左端に入って、前にあったデータは1個右へ移ります。9回送ったら、いちばん最初に送ったビットデータが捨てられます。
ピン3に合図を送ると記憶しているデータを「595」の出力ピンに出します。
またデータを送り初めても、ピン3の合図を送らない限り出力は変化しません。
出力を1個だけ変更したくても、8ビット全部送りなおさないといけません。
出力変更に数十クロックを要するので、シビアなタイミングを出力するのには向きませんが、それでも10MHzなら数マイクロ秒でできるので、たいていの出力に問題なく使えます。
8ビット全部送信する命令をサブルーチン化しておけば、プログラムも大きくなりません。
8ビットのファイルレジスタ1個を出力のつもりでビット操作して、直後に送信サブルーチンをコールするだけです。出力のつもりのファイルレジスタのビットを1個ずつシフトして送信します。
長くなったけど、わかりますかね?
****************************************************************
>根本的な部分の質問なのですが、演算を確実に理解できればデータシートを見て使い方がわかってくる物なのでしょうか?
う~む、私は最初ロジック回路から入ったので、演算がわかれば論理回路がすべて理解できるかどうかは・・・・そもそもCPUはロジック回路を簡単にするために作られたものですから、逆方向から理解するのは大変だと思います。
****************************************************************
>あと、これだけ知っていればある程度はOKという演算を教えて下さい。
PICはそれ自体、最低限の命令に絞られてますから、ひと通り知ってないとプログラムはできないと思います。むしろ、どう組み合わせれば目的の処理ができるか、応用力、発想力がいります。そういう意味ではプログラムの難しいCPUだと思います。(実際それも、私が別のCPUに乗り換えた理由の一つです)
たとえば、割り込み処理ですが、割り込みのために今のワークレジスタとステータス(ゼロフラグとか)をどこかに保存しないといけませんが、ステータスを退避保存する命令がありません。下手にワークを退避するとステータスが変わってしまい、通常処理に戻った時バグります。
あえてあげるならPICの場合、「スキップ系」の命令を完全に理解するべきだと思います。多用しますからね。
またなんでも聞いて下され。(あ~何か作りたくなってきた)
No.5
- 回答日時:
もっとI/Oピン数の多いPICを選ぶと言うのが一番楽な方法ですが、
それではダメですか?
16F84にこだわるのであれば、やっぱりあなたや皆さんのおっしゃるように
74シリーズのICを使ったいろいろなやりかたがあると思います。
入力専用ピンが欲しいのか、出力専用ピンが欲しいのか、それとも他のピン
と同じようにプログラムで入力か出力かを選べるピンが欲しいのか、
いずれの場合もそれぞれいろいろな回路が考えられます。
あとは回路全体の見直しですか。ほかにピンを節約できるところは無いか、とか。
いかがでしょうか?
ありがとうございます。
16F84にこだわるわけではないのですが、シロウトの僕には最も扱い易そうですし、今現在使用しているライタは509か16F84しか書き込めないので。
使用目的が入力、出力のどちらかによって回路の構成が変わるんですね、なるほど!とりあえずいろいろ勉強してみます。
No.4
- 回答日時:
では、私は259(アドレッサブルラッチ)で。
259のD入力に書き込みたい値”0/1”を与え、A,B,C入力で書き込みたいピンを選択し、イネーブルに書き込みパルスを与えると、Q0~7の任意の出力にD入力で与えた値が出てきます。 要はアドレス3ビット,データ1ビットのメモリーの出力がピンにでているようなものです。
(5本使って8本になるんじゃ、あまり増えてないって? 259ってあまり使わないか)
No.3
- 回答日時:
No.2
- 回答日時:
似たようなことをよくしていますよ。
ロジックICで「74HC165」と「74HC595」を検索して調べてください。
ACシリーズでもいいですよ。東芝のサイトなどでデータシートは自由にダウンロードできます。
例えば、「595」を使うと3本の出力ピンで制御して8本の新たな出力ピンを作成できます。1本にHorLを出力し、2本目をL→H→Lとしてクロックパルスとします。これで1ビット「595」へ送れました。これを8回行った後、3本目を2本目と同様に操作してパルスを送ると、「595」の出力8本に送ったデータが現れます。
目的の出力をメモリへ書くようにして、タイマー割り込みで定期的に8ビットを送信させます。タイマーを別に使用したいなら、出力が1個でも変更したときに、8ビット全部を送信するサブルーチンを呼ぶようにします。
「165」を使うと3本の出力ピンを消費して、新たに8本の入力ができます。
後は、「74HC74」を使う手もあります。これも出力を保持してくれる「レジスタ」の一種です。ICの使用量は増えますが、制御プログラムがいくぶん簡単になります。
使い方は・・・・宿題って事にしましょうか(笑)。データシートとにらめっこしてください。きっとためになりますよ。
最後にアトメルってメーカーの「AVRマイコン」ってご存知ですか?。
PICみたいなマイコンで、「AT90S2313」が近いと思います。(実はよく使ってるんです)
PICより4倍早くてレジスタもたくさん有り、使いやすいですよ。ご参考までに。
この回答への補足
ありがとうございます。
3本が8本ですか?これは「595」のある3本のピンにPICの出力ピン3本を接続する事によって「595」の他の8本のピンを出力ピンとして駆動できるという事でしょうか?
もしそうだとすれば、
3本が8本というのは要するに・・・・「3本のピンそれぞれの状態を2進法で表すと000、001、010、011,100,101,110,111の8通りの状態を作る事ができ、その8通りの数値を595の8本のピンの出力にする」という事でしょうか?
でも、これでは8ピン中の複数本を同時に出力する事は出来ないですね・・。
これは考え方としてはハズレでしょうか?
PICのポートAとBみたいに交互に出力して見かけ上同時出力っぽくすればいけそうですけど・・・。
勝手に思いついた事を書いてしまいました・・・。
根本的な部分の質問なのですが、演算を確実に理解できればデータシートを見て使い方がわかってくる物なのでしょうか?
あと、これだけ知っていればある程度はOKという演算を教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- LANケーブル・USBケーブル これで接続方法はあっていますか? 2 2023/06/06 20:30
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- ビデオカード・サウンドカード グラボの16ピンの端子を 8ピン2つしか空いていない電源ケーブルに挿すには 2 2023/05/04 15:04
- カスタマイズ(車) (続き)初めてカーナビの取付にチャンレジします。アドバイスください。 3 2022/12/10 15:13
- その他(行事・イベント) イベントの来賓用徽章(花のリボン)について 2 2023/04/08 22:52
- 離婚 先月突然離婚を旦那から言われて、何か怪しいと思っていました。 ある日、私がいない時に会社の後輩の子と 20 2023/04/16 21:22
- その他(悩み相談・人生相談) 曰く付きのものでしょうか?デイサービスで働いていて、そこに通ってる利用者さんにストラップを貰いました 3 2023/03/25 09:10
- その他(スマートフォン・携帯電話・VR) ピンで開けるタイプのSIMスロットのスマホですが、SIMカードの入れ替えで頻繁にピンを使ってスロット 2 2022/12/28 12:24
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- ドライブ・ストレージ ネットワークHDD(NAS)について教えて下さい。 11 2023/03/08 11:15
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
400V 3相4線式について...
-
パルスとレベルについて
-
NPNとPNPの違いについて
-
矩形波回路の作成
-
デルタ3相とスター3相
-
電気設備で使われるGCの意味...
-
近接スイッチの2線式と3線式...
-
電流値(AC・DC)
-
同一電圧値、異なる電源供給源...
-
ブザーの音を大きくする
-
EVT(GPT)の電圧比について
-
流量計のパルス出力について
-
3端子レギュレータ、トランジス...
-
分岐回路と分岐幹線の違いは何...
-
ボルテージフォロワが電圧降下する
-
H3ロケット打ち上げ失敗の原因...
-
spi通信はプルアップ抵抗必要で...
-
TLC555を用いた発振回路について
-
オーディオ回路でのスピーカー...
-
オペアンプの故障
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
400V 3相4線式について...
-
近接スイッチの2線式と3線式...
-
EVT(GPT)の電圧比について
-
パルスとレベルについて
-
SSRリレーの使い方
-
NPNとPNPの違いについて
-
電気設備で使われるGCの意味...
-
鉄心とフェライトのB-H特性とB-...
-
同一電圧値、異なる電源供給源...
-
3端子レギュレータ、トランジス...
-
8ビット電文出力とはどんな信号?
-
[LT Spice] オペアンプのシミュ...
-
触れるだけタッチライトのしくみ
-
オシロの入力インピーダンスに...
-
高周波部品 - バイアスティ...
-
シロッコファンを動かしたい 壊...
-
電気回路について
-
利得と増幅率
-
クランプ回路
-
ボルテージフォロワの役割がよ...
おすすめ情報