- 9880. I2CとRS232Cの多重受信割り込み [TAMU] 2006/03/12 19:02
- pic同士でi2cの通信を行っています。マスターからスレーブに一方的にデータを送っています。スレーブ側でRS232Cの送受信も行っています、スレーブがわでI2Cの受信割り込みとRS232Cの受信割り込みを使うとI2Cの通信が停止してしまい電源を再投入しなければ復帰しません。試しにRS232Cの受信をポーリングにするとI2Cの停止はありません。
RS232Cの割り込み中にI2Cのデータが来ると停止するようです。やることが多いのでなるべく両方割り込みを使いたいのですが、何か対策があればご指導ください。
環境は下記の通りです、宜しくお願い致します。
プログラムはCCS-C PCWH Ver3.187
マスター側 PIC18F2220
スレーブ側 PIC18F4320
- 9881. Re: I2CとRS232Cの多重受信割り込み [初心者] 2006/03/12 19:21
- >pic同士でi2cの通信を行っています。マスターからスレーブに一方的にデータを送っています。スレーブ側でRS232Cの送受信も行っています、スレーブがわでI2Cの受信割り込みとRS232Cの受信割り込みを使うとI2Cの通信が停止してしまい電源を再投入しなければ復帰しません。試しにRS232Cの受信をポーリングにするとI2Cの停止はありません。
>RS232Cの割り込み中にI2Cのデータが来ると停止するようです。やることが多いのでなるべく両方割り込みを使いたいのですが、何か対策があればご指導ください。
>環境は下記の通りです、宜しくお願い致します。
>
>プログラムはCCS-C PCWH Ver3.187
>マスター側 PIC18F2220
>スレーブ側 PIC18F4320
PIC18は2重割り込みまでは何とか可能でしょうが、
関数のネスティング時に多重割り込みが入る時
スタック量は足りてますか?
多重割り込みというアイディアの時点で、他のマイコンを選んだほうが良いと思います。
そこまで苦労してPICを使わなくても良いような気がします。
- 9883. Re: I2CとRS232Cの多重受信割り込み [Kazu] 2006/03/12 21:04
- >スレーブがわでI2Cの受信割り込みとRS232Cの受信割り込みを使うと
>I2Cの通信が停止してしまい電源を再投入しなければ復帰しません。
>試しにRS232Cの受信をポーリングにするとI2Cの停止はありません。
RS-232Cの受信割り込み処理に長時間かかりっぱなしになっていませんか?
RS232Cの受信割り込みがかかったら受信データーを変数に格納し
自前のフラグを立てて直ぐに割り込みを終わらせ次の受信を待つようにしてはどうでしょうか?
・・・受信データーは、メインルーチンでフラグを監視して処理します。
実際にやったことはありませんがUARTの受信割り込みを低レベルに設定して
格差を付けてみてはどうでしょうか?
http://www.picfun.com/pic18frame.html
- 9900. Re: I2CとRS232Cの多重受信割り込み [TAMU] 2006/03/13 22:34
- 初心者様 KAZU様
ありがとう御座います。
参考になりました調整してみます。