現在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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パーサとコンパイラの違いって?
-
ソフトの開発言語を調べる方法
-
#pragmaとは
-
BCC Developer開発環境でソケッ...
-
C++でデスクトップGUIアプリ開...
-
変数の内容がコロコロ変わる、...
-
C言語をどうしたら?
-
COBOLのALPHABET...
-
プログラミング初心者
-
windowsでもC言語を始めたいの...
-
プログラマーに向いている人の...
-
std::stringを別のコンパイラで...
-
VisualStudioはQuadコア対応で...
-
C言語を始めるにあたっての準備
-
C言語はC言語でできている?
-
C言語でのコンパイラの作成方法
-
AIXとCOBOLについて
-
『Bin』ディレクトリは何の略語?
-
main() 関数は、int を返値とす...
-
python エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
プログラマーに向いている人の...
-
printfなど、標準関数のソース...
-
cc と gcc の違い
-
組み込みソフト。ROM領域にデータ
-
C++Builder → Visual C++ 移植...
-
COBOLの論理演算子について質問...
-
COBOLのALPHABET...
-
VC++の/Zm オプションについて
-
リリースモードとデバッグモー...
-
C++でデスクトップGUIアプリ開...
-
PICでのI2C通信でのマスタ、ス...
-
C言語の規格
-
パーサとコンパイラの違いって?
-
void型のポインタで構造体の参照
-
VisualC++6.0でのProfessionalE...
-
OpenMAXというものについて、簡...
-
#pragmaとは
-
<conio.h>?
おすすめ情報