PICとPICの接続について

このQ&Aのポイント
  • 3個のPIC16F84Aを使用し、Aの出力ピンからBとCの入力ピンに接続したい場合は問題ないのか?
  • PIC16F84AをA、B、Cとして、Aの信号をBとCに渡す接続方法について
  • PIC16F84Aの接続に関して、Aの出力ピンからBとCの入力ピンに接続することができるか?
回答を見る
  • ベストアンサー

PICとPICの接続について

PIC16F84Aを3個使用するのですが、仮にA、B、Cとし、入出力のピンの設定は正しくされているとします。 その場合Aの出力ピンから出ている出力線1本を、BとCの入力ピンの両方ともに接続しても問題ないのでしょうか? Aの信号(HまたはL)を、BとCに渡したいのです。

noname#230358
noname#230358

質問者が選んだベストアンサー

  • ベストアンサー
noname#230359
noname#230359
回答No.1

電源が同じで距離も近ければ問題ありません。 ただし、電源ON時、CPUが走り出すタイミングには若干の差がでますので そこは要注意です。

noname#230358
質問者

お礼

早速の回答ありがとうございます。 PICとPIC2個の接続の例が、本、ネットで調べてみても載ってなかったので質問にあげました。 ちなみに 電源は、同じ5Vです。 距離は、10cmぐらいです。 電源ON時については、注意したいと思います。 本当にどうもありがとうございました。

その他の回答 (1)

noname#230359
noname#230359
回答No.2

PICは、プログラムで夫々のピンの機能を入力にしたり、出力にしたり、アナログ入力にしたりしますが、電源が入り、リセットがかかった後にその機能設定ルーチンが走るまでの間、機能が設定されていません。元々、何の機能を持っているかにもよりますが、私がよく使うPIC12F675では設定がされるまで、アナログ入力になっているようです。このタイミングはプログラムの組み方でも変わってくるので、Aの信号が出力になる前に、B若しくはCの入力機能が決定し、その結果で直ぐに出力を出すようにしていたとします。その場合、B若しくはCの入力が不安定になっている時間が出来てしまう事になります。そこで、10KΩ程度の抵抗でプルアップしておくと良いと思います。内部のプルアップ機能をプログラム設定することも可能です。 よく直接信号を渡したつなげ方を行っていますが、あまり問題を感じた事はありません、けれども気持ち悪いので、私の手法としてはプルアップ抵抗だけ入れて、受け取る側は、信号がLowになったら動き出す様なプログラムを組むようにしています。(割り込み機能がある場合もLowエッジで割り込みプログラムを走らせる等)

noname#230358
質問者

お礼

10KΩの抵抗でプルアップしたいと思います。 詳しいご説明ありがとうございました。

関連するQ&A

  • PICマイコンができること

    PICは入力信号によって「Yes」か「No」かを出力させるという仕事はできるが、入力信号をそのまま出力させるという仕事はできないものなのでしょうか? 今、PICマイコンに入力する信号は、サーボモータを動かすためのパルス信号であり、サーボモータが右に動くときと、左に動くときとで別々のポートから信号を出力させることを考えてます。 そのために、入力信号のパルス幅をタイマーで計測し、判断させているのですが、問題は判断項目(while や if)が加わると入力信号をそのまま出力することができないことです。 一応、PIC16F84Aを用いて10MHzの内部クロックで 1.判断項目がないとき入力信号をそのまま出力(別々に出力はしない) 2.判断項目は同じとして出力を入力信号にせず、5Vにして別々に出力 の2つについて実際にできました。 結構、厳しい条件ですがPICに期待しすぎなのかわからなくなったので質問しました。 よろしくお願いします。

  • PIC 12C509でFA回路を作ってみたが動作しない。

    8ピンの12C509でFA(FullAdder,全加算器)を作ってみたのですが、正常に動作しません。 LIST P=PIC12C509A include "P12C509A.INC" ORG 04H MOVLW B'00000111' TRIS GPIO ;1,2,3番ピンを入力にする ほかは出力 MOVLW 0H ;0000 0000 MOVWF GPIO ;出力をすべてLoにする main MOVF GPIO,0 CALL get_fa movwf GPIO goto main get_fa ANDLW B'00000111' ;3ビットだけマスク ADDWF PCL,F ;PCレジスタに数字を加えてジャンプ RETLW B'00000000' ;000 RETLW B'00001000' ;001  RETLW B'00001000' ;010  RETLW B'00010000' ;011 RETLW B'00001000' ;100 RETLW B'00010000' ;101 RETLW B'00010000' ;110 RETLW B'00011000' ;111 END 1,2,3ピンから入力して結果を4ピンにS 5ピンにCを出力するはずなんですがどこが間違ってるのでしょう?

  • PICのピンの割り当て、この記述は正しいのでしょうか?

    現在C言語によるプログラムを勉強しているのですが、わからない箇所が出てきました。 PICのピンの入出力の割り当てをする部分の set_tris_a(0x10); //RA1,RA3を入力,RA0,RA2,RA4を出力に設定している。 という部分です。 調べたところ"0x"という部分は16進表記であるという意味で、その後の部分で格ピンの入出力を表しているようなのですが、"10"の部分は10進法表記ではないかと思うのです。 (16進なら"A"と表記するのが正しいのではないでしょうか) また"0x"は16進表記との事ですが、他に、たとえば10進や2進表記で格ピンの割り当ては可能なのでしょうか?

  • PIC12F675 GPIO入出力について

     現在、PIC12F675にてA/D変換、EEP- W/R,TMR0を使ったプログラムを作成しているのですが、GPIOの入出力がおかしくTMR0、GP0~2が正常に動作しません。   ●各PINの使用状況・・・ ・GP0/出力(H/L) ・GP1/出力(H/L) ・GP2/TMR0 ・GP3/入力(S/W) ・GP4/入力(A/D変換) ・GP5/出力(H/L) ●開発環境   ・MPLAB IDE V8.40   ・デイバイス PIC KIT1 MPLAB IDEのファイルレジスタとウォッチのウインドウでデバッグしていて気づいたのですが、SFRアドレス00H~05Hまでの変化がそのままGPポートの変化へとつながっており、GP0がRestricted Memoryicted Memoryが表示され、SIMでRUNさせてみるとプログラムでは「BSF」でGP0を出力してもGPIOの0ビット目は変化しません。 GP2も変化がなくTMR0も動作していない様です。  もちろんBANK1でTRISIOの設定(B'00011000')は行っています。 自己解決を試みましたが万策尽きて投稿させていただきました。 恐れ入りますが何方かご教授いただけましですでしょうか。  

  • PICプログラムについて

    こんにちは 早速ですが質問です。 PIC16A84を使用しています。発振は4Mhzを使用しようと考えています。 入力Aの信号ONで出力Aの信号を(通常ON)をを25mSec間OFFし次にONを25mSecと入力Aの信号がONの間繰り返すのですが、この他に、入力Bと出力Bがあり、入力A、出力Aと同じ動きをするのですが、入力AとBが同時にONしたときのプログラム方法がわかりません。(プログラムの同時進行の場合のプログラミング方法) わかりずらいですがよろしくお願い致します。

  • PICアセンブラでのポート入出力設定の質問です。

    初めに、カテ違いだったらすいません。 大学の授業でPIC16F628Aを用いてライントレースロボットを動かすアセンブラプログラムを作っています。 授業でポートBの入出力設定を MOVLW B'11000011' MOVWF TRISB とTRISBレジスタの入出力設定を行なっていました。  入力が1で出力が0だというのは分かるんですが、どうやって、01を決定しているのかが分かりません。 教科書には、各ポートに接続されているハードウェアに依存すると書いているのですが、理解しにくいので、出来れば例などを上げて頂けたら幸いです。  また、この11000011という設定は、何の意味があるのかも頂けないでしょうか? お願いします。

  • PIC16F1823の割り込み処理について

    PIC初心者です。よろしくお願いします。 ※HI-TECH Cコンパイラを使用しています。 最近まで、PIC16F676を使用していましたが、 今回、PIC16F1823に変更することにしました。 プルグラムをPIC16F1823用に変更し、実行したところ思ったように動いてくれません。 いろいろ調べたところ割り込み処理がうまいこと出来ていないような気がします。 割り込みルーチンに飛んだ後、なぜか戻ってこないような気がします。 下記のコードは、簡単に書き直しました。 どなたか分かる方、お願いしますm(_ _)m --------------------------------------------- #include <htc.h> __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_ON & CP_OFF); unsigned int i,Time; void main(void) { OSCCON = 0b01101010; //おそらく4MHz? //ポートA ANSELA = 0x00; //全てデジタル CM1CON0 = 0b00000111; //コンパレート無効化 CM1CON1 = 0b00000111; TRISA = 0b00111110; //ポートA入力出力設定 WPUA = 0b00110110; //ポートAプルアップビット指定 PORTA = 0b00000100; //各ピンデフォルト値 IOCAP = 0b00100000; //割り込みピン指定 //ポートC ANSELC = 0x00; //全てデジタル TRISC = 0b00000000; //ポートC入力出力設定 nWPUEN = 0; //プルアップ有効化 IOCIE = 1; IOCIF = 0; GIE = 1; i = 0; while(1){  if(i){   RC5 =1;   RC0 =0;  }else{   RC5 =0;   RC0 =1;  } } } void interrupt ISR(void){ //割込み if(IOCIF && !RA5){  if(i) i=0;else i=1; } IOCIF = 0; }

  • PICを用いて、複数入力をランダムに出力する方法

    電子回路の「で」の字も習ったことのない超初心者です。C言語の初歩的なプログラミングならかじったことがあります。 突然いままで触ったこともなかったPICにて、記事タイトルのような処理をするプログラムを組まなければならないことになりました。 詳しい仕様としましては、 ・入力が8個、出力も8個 ・「出力先変更スイッチ(ダクトスイッチというものを使用することを想定)」を押すことで、8個の入力を、ランダムに8個の出力に割り振る という単純なことができればいいのですが、なにぶん右も左も分からず、ピンが幾つ必要なのかも分からず手を付けられずにいます。 手元にある環境は、 ・28ピンPIC(型番:PIC16F876-20/SP) ・40ピンPIC(型番:PIC16F877A-I/P) ・ライタ(LEAP ELECTRONIC) ・MPLAB(エディタになると聞きインストールしたのみ) 以上です。 希望する回答は、以下の2点についてです。 ・手元にあるPIC(28ピン、40ピン)のどちらを使用すればよいか ・具体的にどのようなプログラムを書けばよいか(PICで乱数は使えるのでしょうか?) 時間もなく、出来るだけ早くもう明日にでも完成させたいので、ご協力くださる方、是非宜しくお願い致します。

  • PICの信号について

    PICでループやスリープを使わずピンの1つをHIGHにし続けたり、LOWにし続けたりする出力信号を出すことはできるのでしょうか?

  • pic のポート出力がされない

    たまにしかPICを使わない割にはその都度お訊ねして恐縮ですがどなたか教えてください。 16F648A のPORTA bit4(RA4) を  MOVLW B'11100000' , MOVWF TRISA によって出力設定しています。 プログラムの中で H/Lレベル出力するようにしているつもりですが LレベルのままHレベルになりません bit3-0 はプログラム通り H/Lが正しく出力しています 何か見過ごしていると思っていますが 気がつかず困っています 宜しくお願いします 追記します SIM によるデバックではSFRの表示から bit4は他のbitと同様正しく出力されていることを確認しています