
現在PIC18F2550同士で、I2C通信を行いたくアセンブラでプログラミングをしておりますが、教えていただきたい点があります。
・マスターとスレーブは動作中に入れ替えることはできないのでしょうか?
RS等から任意の信号を与えると、マスタとスレーブが切り替わるようなことがしたいのですが、どの書籍をみてもそのような事ができるとは書いてなく困っております。
・PICだけでなくI2C通信を行うことのできるマイコンorCPU(プログラミングが簡単で高速動作できる)はあるのでしょうか?あればお教えいただきたいです。
以上よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>4つぐらいのPICを全てRS232CでPCと繋ぎ、また各PICをI2Cで繋ぎたいと考えております。
そして、PICメモリ内のデータをI2Cで4つの PICとやり取りしたいと考えた時、I2Cではマスタとマスタのデータ送受信はできないと思いました。そのため、マスタとスレーブの入れ替えが必要かと思いました。たしかにマスタ間は通信できません。通信できるのはマスタとスレーブ間だけです。しかし、この仕様だと4つが同時にマスタ要求する可能性があることを考えるとかなり難易度が高いですが大丈夫ですか?
マスタがスレーブ間のデータをマスタ経由で再転送仕組みにするほうが圧倒的に楽です。速度的に許されるなら検討してみてください。
スレーブA→マスタ→スレーブBって感じでデータを受け渡します。スレーブ間は必ずマスタを経由するので、効率は悪いですが制御は圧倒的に楽です。
>お完全に知識不足および情報不足で申し訳ありません。PIC18Fシリーズより高速であればよいのですが・・・。8bitや16bitなどのbitの違いが私にはわかっていません。もっと学習する必要がありますね。
簡単にプログラムを組むならC言語でI2Cライブラリを使ったほうが圧倒的に楽です。C18というコンパイラを検討してみてはどうでしょうか?
http://www.picfun.com/mccframe.html
とりあえず高速化なら環境のさほど変わらない同じマイクロチップ社のPIC24FかdSPICを使えばC言語とI2Cのライブラリもあるので楽に組めると思います。
速度的には、コンパイラの最適化なしでもPIC18Fの数倍は楽に出ると思いますが、コンパイラの最適化が期限付きなので、必要ならコンパイラのライセンスを購入してください。
http://www.picfun.com/
でPIC(16bit)を参照のこと。
>マスタがスレーブ間のデータをマスタ経由で再転送仕組みにするほうが圧倒的に楽です。速度的に許されるなら検討してみてください。
的確なアドバイス本島にありがとうございます。まずはマスタ経由でデータの送受信を試みたいと思います。
>とりあえず高速化なら環境のさほど変わらない同じマイクロチップ社のPIC24FかdSPICを使えばC言語とI2Cのライブラリもあるので楽に組めると思います。
今現在PIC16Fを使用していまして、それをPIC18f等におきかえようとしております。PIC以外でも様々なマイコンがあるみたいですが、初心者の私にはやはりPICが一番使いやすそうに感じます。
ありがとうございました。
No.1
- 回答日時:
>・マスターとスレーブは動作中に入れ替えることはできないのでしょうか?
何のために入れ替える必要があるかは疑問ですが、マスタがスレーブに対して入れ替えを要求する形にすれば大丈夫じゃないでしょうか?
マスタとスレーブがSTOP状態にあるときに入れ替えれると思います。
>RS等から任意の信号を与えると、マスタとスレーブが切り替わるようなことがしたいのですが、どの書籍をみてもそのような事ができるとは書いてなく困っております。
RSって何の略号でしょう?RS232Cですかね?
結線を考える限りどちらがマスタでもかまわないハード仕様ですので、同時にマスタ化やスレーブ化しないように制御が出来れば問題ないと思いますので可能だと思いますが、RS232Cに接続されいていない側のマイコンをマスタにするとマスタとスレーブの入れ変えは面倒な手続きになると思いますが。
>・PICだけでなくI2C通信を行うことのできるマイコンorCPU(プログラミングが簡単で高速動作できる)はあるのでしょうか?あればお教えいただきたいです。
たいていのワンチップマイコンは、全てのバリエーションではないですがI2Cをサポートしています。
8bitならAVR、16bitならdSPICやR8C、32bitならARM7のLPC2214やSH2の7144Fなどです。
16bitや32biのマイコンを使えば、高速でC言語とライブラリでI2Cのプログラムは楽に組めると思いますが、どこまでの速度を出したいのか?コストパフォーマンスは気にしなくて良いのか?消費電力は何mWまで良いのか?コンパイラの値段は有料でも良いのか?など条件を決めないと推薦のしようが無いです。
この回答への補足
非常に丁寧な御解答ありがとうございます。
なにぶんマイコン初心者なもので、質問があやふやですいません。
4つぐらいのPICを全てRS232CでPCと繋ぎ、また各PICをI2Cで繋ぎたいと考えております。そして、PICメモリ内のデータをI2Cで4つのPICとやり取りしたいと考えた時、I2Cではマスタとマスタのデータ送受信はできないと思いました。そのため、マスタとスレーブの入れ替えが必要かと思いました。
>マスタがスレーブに対して入れ替えを要求する形にすれば大丈夫じゃないでしょうか?
そのようなプログラムを作成すればできるのですね。頑張ってやってみます。
>条件を決めないと推薦のしようが無いです。
完全に知識不足および情報不足で申し訳ありません。PIC18Fシリーズより高速であればよいのですが・・・。8bitや16bitなどのbit
の違いが私にはわかっていません。もっと学習する必要がありますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
エディタとコンパイラ 基礎
-
DLLファイルの逆コンパイラにつ...
-
PICマイコンのプログラムカウン...
-
VBは速度が遅い?
-
COBOLの論理演算子について
-
COBOLのALPHABET...
-
ソフトの開発言語を調べる方法
-
pic
-
PIC用のフリーCコンパイラはあ...
-
python エラー
-
<unistd.h>をVisualStudioでつ...
-
エクセルのエラーメッセージ「4...
-
デバッガでステップ実行してい...
-
” OS ビルド ” の意味が分か...
-
「fatal error C1189」を回避す...
-
プレコンパイルの意味を教えて...
-
Makefile作成時の拡張子.oとは?
-
VS2010環境で2点ほど質問
-
HEWを使用しているのですが、こ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
ソフトの開発言語を調べる方法
-
unsigned long long 型のフォー...
-
printfなど、標準関数のソース...
-
C++でデスクトップGUIアプリ開...
-
組み込みソフト。ROM領域にデータ
-
COBOLのALPHABET...
-
リリースモードとデバッグモー...
-
C++Builder → Visual C++ 移植...
-
COBOLの論理演算子について質問...
-
<conio.h>?
-
パーサとコンパイラの違いって?
-
変数の内容がコロコロ変わる、...
-
HP-UXのプログラムをSolaris、R...
-
for文内での変数定義
-
C++DLLの明示的リンクに関して
-
AIXとCOBOLについて
-
COBOL計算式の中間ワーク桁数に...
-
volatile修飾子について
-
サイクルカウントの方法
おすすめ情報