8 years, 3 months ago.

i2c通信を割り込ませたい

i2c通信を割り込ませたいのですが、スタートコンディションとストップコンディションを盛り込んだサンプルソースがないのでプログラミングに苦慮しています。mbedのi2cはマスターもスレーブもwhile(1)の無限ループで常時作動させてないと使えないのでしょうか?あるいは無限ループの関数にあるswitch文にdefaultを設けてそこでi2c通信を行っていないときの動作をさせるようにした方がいいのでしょうか? サンプルソースはここを見ました。 https://developer.mbed.org/users/okini3939/notebook/I2C_jp/ https://developer.mbed.org/users/okini3939/notebook/i2cslave_jp/ プログラミングの問題で恐縮ですがよろしくお願いします。

1 Answer

8 years, 3 months ago.

Quote:

mbedのi2cはマスターもスレーブもwhile(1)の無限ループで常時作動させてないと使えないのでしょうか?

割り込み要因として何を使いたいかにもよりますが、Ticker等の周期割り込み中でI2C APIを使うことは可能だと思います。mbed のAPIで規定されていない割り込み要因を使う場合は、ハードウェアを直接叩けば良いと思います。 while(1) ループを使うのは、main() から抜け出さいようにするための手法なので、割り込みとは直接関係ありません。