こんにちは、ソフトは趣味レベルのfultonpapaといいます。会社に余っていたRL78/G13StarterKit(以下RSK)があるので、持ち帰って勉強してます。CS+ forCA,Cx
Tutorialプロジェクトに多くのサンプルがあり、いろいろ試せて良いですがIIC MASTER(サブプロジェクト)のサンプルが動きません。スターターキットのコードが動かない時、どこから手をつけたらよいでしょうか?ジャンパやプルアップ等はI2C用に設定してあり、ダミーのスレーブをつけてます。オシロはあるので、波形は見られます。
※状況 キー割込みで通信開始しますが、始にSCLA0にLoがでてそのままLoレベルのまま。 リセットするとまた5Vに復帰。SDAはずっとHiです。 StartConditionが出ないので、通信のつの字の前で躓いてます。 ボードは購入状態と変わらない状態で(ジャンパとかは設定) スレーブはArduinoでは標準ライブラリで正常に動作してます。 1)デバッグの勉強になるので、レジスタや主要関数を追跡する。 マニュアルのフローとサンプルのr_serial.cを解読していく。 現在取り組み中ですが、先が見えず、挫折するかもしれない。 2)もしかしてコード生成サンプルコードが違ってると疑う。 以前、RSKのLINのサンプルコードは違ってた。 3)RSKで動いている人のコードを入手して彼我解析。 4)CS+ CA,CX用の別のサンプル、事例を探す。(見つかってない) 5)IICAを使わず、GPIOで動作する最小限のライブラリを自作する。 6)本フォーラムにCC-RLのサンプル等あるのですが、CACXとの違いが わからない。好きなほうを使えるのでしょうか?
乱筆ですいません。趣味なので楽はするつもりは無いので、なにか初心者向けに情報があればご提供下さい。
チョコです。
fultonpapaさん,今更CS+CA78K0Rで始めるのはお勧めできません。これから始めるならCS+CC-RLをお勧めします。
RL78/G13StarterKitに付属しているプログラムはサブプロジェクトが複数含まれたような形式になっていますが,通常はこのような使い方をするのはそれほど大くないとかと思います。特に,I2C関係はスレーブの制御手順に従った通信手順が必要で,RL78/G13StarterKitに付属しているプログラムを少し変更したくらいで制御できるとは思わないでください。
RL78のI2C関係は,かふぇルネのサンプルプログラム等にかなり多くの情報をアップしています。そこにはエクセルファイルがあり,登録してある情報の一覧がリンク付きでリストされています。リストの上の方にかなりI2C関係の情報やプロジェクトがあるので,そちらを参照してみてください。
初心者はこちらの方が使いやすいかと思います。
同じく,サンプルプログラム等にあるプロジェクトですが,「IICA0基本制御(ポーリング処理)」の方がArduinoの例に近いかもしれません。
https://japan.renesasrulz.com/cafe_rene/m/sample_program/244
プログラムとしてはRL78/G14でRTCのデータをI2Cバス用のLCDに表示しているものです。コード生成は初期設定のみ使用しています。
r_main.cの中にIICA関係の関数があります。ここでは,割り込みはスタンバイの解除で使用しているだけで,I2Cはポーリングで処理しています。
Wire.beginTransmission関数に相当するのが,R_IICA0_start_condition関数です。ただし,スレーブアドレスは65行目で#defineで0xA0と宣言しているので,ここを0xC4に変更してください。
Wire.write関数に相当するのが,R_IICA0_transmit関数です。
Wire.endTransmission関数に相当するのが,R_IICA0_StopCondition関数です。
これらの関数を使うだけですが,必ず割り込み禁止(DI)状態で動作させてください。