I2C通信の「マスタ送信」「マスタ受信」「マスタ送受信」の割り込み処理プログラムです。RIIC用と簡易I2C用があります。実験には湿度センサ(AHT25)(ASAIR (Guangzhou Aosong Electronic)製) とサーモパイル型赤外線センサ(A3D01S-FU-50-60)(日本セラミック製)を使いました。次の資料を参考にしています。資料1*1 ,資料2*2, 資料3*3
- 温湿度センサ(AHT25)の処理
- サーモパイル型赤外線センサ(A3D01S-FU-50-60)の処理
- RIIC 割り込みフロー
- 簡易I2C通信 割り込みフロー
- プログラム(RIIC)
- プログラム(簡易I2C)
- 動作確認
温湿度センサ(AHT25)の処理
測定の開始は「マスタ送信」でトリガコマンドを送信します(2秒間隔)。500msec後に「マスタ受信」により温湿度データを読み出します。その500msec後に、温湿度の計算を行います。この処理はRIICと簡易I2Cで共通です。
(センサの電源投入時のCalibration check(ステータスの0x18 チェック)は未実装です。)
サーモパイル型赤外線センサ(A3D01S-FU-50-60)の処理
センサ周囲温度を「マスタ送受信」(コマンド=0x70)により読み出します。500msec後に、読み出しデータから周囲温度を計算します。500msec後に測定対象物の温度を「マスタ送受信」(コマンド=0x71)により読み出します。その500msec後に、読み出しデータから対象物の温度を計算します。この処理はRIICと簡易I2Cで共通です。
RIIC 割り込みフロー
割り込み処理が起動されるタイミングについては、資料2の「6.2 割り込み発生タイミング」に記載されています。
簡易I2C通信 割り込みフロー
割り込み処理が起動されるタイミングについては、資料3の「6.2 割り込み発生タイミング」に記載されています。
プログラム(RIIC)
本プログラムで使用する割り込み処理は、timer.cとriic.cで記述するようにしました。
このためルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化しました。
ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。
GitHub登録場所: https://github.com/vABCWork/RIIC_intr
(通信速度が100[Kbps]を超えないように、 ICBRH、ICBRLレジスタの設定を修正しまた。(オシロの測定で約98[Kbps]) )
プログラム(簡易I2C)
本プログラムで使用する割り込み処理は、timer.cとsci_iic.cで記述するようにしました。
このためルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化しました。
GitHub登録場所: https://github.com/vABCWork/SCI_IIC
動作確認
RIIC割り込み
簡易I2C割り込み
変数の値
読み出しデータから温度(湿度)を計算した値です。
実験の様子
RIICの場合はRIIC用のUSBポートを、簡易I2Cの場合は簡易I2C(SCI-I2C)用のUSBポートを使用します。USBケーブルは30[cm]です。