GR-ROSEのI2C通信について

こんにちはkommyです。

マイコン+C言語歴半年の初心者です。

ルネサスのホームページを見ながらROSEの勉強をしています。

お聞きしたいことがあり投稿しました。

内容はArduino UNO + Arduinoスケッチを使用してI2C通信できていたコードを

変更を加えることなく

*GR-ROSE + IDE for GR で使用(ビルド(検証ボタン)と書き込み)

を実施 → 通信ができない現象がおきました。

printfデバックを行い、どこで止まっているのかをみたところ

(1)の関数で止まっているようです。

ご存じの方がいましたらご教授をよろしくお願いします。

<使用機器>:Qwiic - TCA9548A搭載 8チャンネル Mux拡張基板(スイッチサイエンスで購入)

<抜粋コード>:numは切り替えチャンネルの数字(1,2,4,8 etc )

Wire.beginTransmission(0x70);                         // TCA9548A デバイスアドレス:0x70
Serial.println(num);                                            // シリアルモニタに表示できました
Wire.write( num );
Serial.println(num);                                           // シリアルモニタに表示できました
Wire.endTransmission();                                  // (1)
Serial.println(num);                                           // シリアルモニタに表示できない

  • 追加で情報を投稿します。

    <Arduino UNO での 正常動作時 のスクリーンショット>

    (ループでチャンネル(1,2,4,8)切り替えしたものです)

    各チャンネル切り替え時にチャンネル数字を各3回モニタ表示(デバック用)します。

    これは正常時でチャンネル数4x3回=12モニタ表示します。問題にしている関数(1)は問題なく処理されています。

    <GR-ROSE での 途中停止時 のスクリーンショット>

    最初のチャンネル切り替え1の途中

    Wire.endTransmission();                                  // (1)

    以降処理が進んでいない状況です。

    何卒よろしくお願いします。

  • Wire.begin()がないと思います。

    すみませんが、GR-ROSEはタイムアウトの処理が入っていないため、通信ができないと止まってしまいます。

  • Okamiya さん ありがとうございます!

    Wire.begin();

    を追加し動作させることができました!

    今後ともよろしくお願いします!