- 締切済み
PICC(HI-TECH SoftWare)によるI2C通信
現在、HI-TECH SoftWare社製のPICCを使い PIC16F88のプログラミングを行っています。 I2Cを用いて2つのPIC間の通信を行いたいのですが、 どのようにして行えばいいのかわかりません。 自分で情報収集を行ったのですが HI-TECH SoftWare社製のPICC及びPIC16F88の情報があまりなく 暗礁に乗り上げてしまいました。 もしどなたかPICCでのI2Cの行い方をご存じの方、 使用方法またはサンプルプログラムをいただけないでしょうか。 どうかよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- LM5505E
- ベストアンサー率61% (8/13)
http://homepage1.nifty.com/rikiya/software/316PICI2C.htm これを16F88用に書き換えるのでは駄目なのですか?? 「PIC I2C Master slave」 等で検索すれば、結構出てきますよ。 #2さんも書いているように、16F877とかを使った方が良いかと・・・ PIC間通信する用途が分からないので、これ位しかコメント出来ません。 当方は、ほとんどBASICで書いているので、PICCはあまり分かりません。
- ponpoko213
- ベストアンサー率50% (10/20)
期待されている回答ではないと思いますが,経験談を一つ. 私もPIC88でI2C(スレーブ)を実装してみました.でも,会社で部下と一緒に行った部分が多いので,ソースは公開できません.が,様子はお伝えできます. はっきりいって,I2Cのプロトコルはかなり煩雑です.今まで,RS-232Cや485などで非同期通信を実装したり,SDLCループ,HDLC等のBOPもやってきましたが,良くできているプロトコルだと関心する一方で,実装は相当困難です.アセンブラかCかは大した問題ではありませんが,タイミング取りが難しいのです.HDLCなどのBOPの場合,通常はLSIがプロトコルに合致した命令を実装していて,プログラマはレジスタへの指令書き込みによりプロトコルのかなりの部分がLSIにより相当アシストされます.例えばフラグ(パディング)を出す時なども,通常は機能レジスタの当該のビットを立てるだけです. ところが,PICでI2Cを実装しようとすると,ベースバンドの意味のある立ち上がりまたは立下り信号を巧みにソフトウエアで操ってあげなければなりません.ですので,複雑な通信シーケンスを実装するには,ステータスカウンタなどを設けて,ステータスイベントマトリクス方式でプロトコルを実装するのがお勧めですが,それでもタイミング問題の可視化はかなり困難であると思います.(すみません,言葉だけでは通じないかもしれません) デジタルストレージオシロが無いと,相当きついデバッグになるでしょう.私の腕では,デジタルストレージオシロが無いと,到底I2Cの実装には自信がありません.会社等でアナライザを買える状況にあるときは,横河電機から新発売されたI2Cプロトコル翻訳機能付きの多機能オシロを購入されるのが確実だと思います.個人レベルの開発であるのであれば,格安のデジタルストレージオシロを購入することに,わたくしならなると思います. 加えて,PIC88に実装されているのはスレーブモードのみで,ホスト側として動作させるためにはソフトでかなり補ってあげないと実現はできません.(できないという意味ではないです). 私たちも,ホスト側はPIC16F877を使用しました.PIC88はスレーブとして実際に接続することはできています.(PIC16F877は40PのICですが,は,PIC16F88とのソフトウエアコンパチビリティーがかなり高いので,使いやすいです) 一方,SPIは,比較的単純です.これなら,どうにか実機確認レベルでいけるような気がします. 何に使うかにもよりますが,I2Cには相当手を焼いたことだけは,お伝えしたいと思います.(良くできたプロトコルであります.だからこそ,会社で実現してみたのですが) でも,おもしろいですよね.PICって.がんばりましょう. I2C
- zwi
- ベストアンサー率56% (730/1282)
PIC16F88をアセンブラでいじったことがある私からでよろしければ。だたしI2Cは使ったことがありません。 PIC16F88の情報がないとの事ですが、PIC毎のI2C制御の仕組みの差は少ないはずですので、他のPICの情報は参考になると思います。 アセンブラでPIC16F88じゃないですが、この本に例が出ています。 http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-2131-2 それとPICCはライブラリが充実していないので、アセンブラの要領で地道に全てのレジスタを設定してやる必要があるはずです。アセンブラのコードを参考にすれば、さほど難しくないと思います。 CCS Cならば、ライブラリにI2Cのライブラリもありますので、楽をするならこちらが良いかと。上で紹介した本もCCS Cで書かれています。