IICAの送信に関する件

 こんにちは

 G10にてCS+のコード生成プラグインのR_IICA0_Slave_Sendを使用して送信をしようと思っています。

二つ目の引数に2を入れて送信したところ、受け側は0xXX 0xFFとなります。1バイト目は〇なのですが、

2バイト目が0xFFになります。どのようなことが考えられますか?

  • RAM_BASEが0x80というのがありますが、

    void R_IICA0_Slave_Send(uint8_t * const tx_buf, uint16_t tx_num)だと、どうなっているのか

    という疑問がでました。

    受信側からみるとコード生成の自局アドレス 仮に0x60 tx_buf[0]

    0x80がtx_buf[1]ということ? 0x61?という疑問が湧きました。

  • チョコです。

    RAM_BASEとスレーブアドレスは全く無関係です。

    >受信側からみるとコード生成の自局アドレス 仮に0x60 tx_buf[0]

    >0x80がtx_buf[1]ということ? 0x61?という疑問が湧きました。

    少なくとも、スレーブアドレスはIICA0が対応しているだけで、

    ユーザープログラムに対してデータとして渡される訳ではありません。

    RAM_BASEはスレーブに書き込むアドレスレジスタ(1バイト目の

    データ)の値の中でRAMの先頭を示すデータです。

    通常、EEPROMやRAMおよび複数のレジスタを持つスレーブでは、

    書き込みの最初のデータがこのようなRAMやレジスタ等のアドレスを

    示します。この場合だと、アドレスが0x80以上ならRAMに対応して

    いると考えてください。

    つくたろうさんのスレーブはこのような内部のアドレス・レジスタは

    使っていないようなので、マスタからの読み出し通信が起動されたら

    単に送信するデータを順に送信するだけのはずです。

    以上

  • ご回答ありがとうございます。

    内部のアドレス・レジスタを使うのは

    uint8_t     static sreg ~

    というのでしょうか?  検索した感じだとショート・ダイレクト・アドレッシングでしょうか。

    CS+で新規作成したファイルに宣言しても、うまくいきませんでした。どこか設定を変更する

    必要があるのでしょうか。

  • チョコです。

    sregですが、これは、CA78K0Rでの機能です。あのプロジェクトは、CA78K0Rで作成してあり、それをCC-RLに移植しています。

    CC-RLのマニュアル(R20UT3123JJ)の移行支援機能オプションを使って移植しています。

    添付されているPDFにも、CC-RLのプロパティで以下のように設定しています。

    今回は最初からCC-RLなので、「sreg」ではなく、「saddr」を使ってください。

    CC-RLコンパイラのマニュアルには以下のような説明があります。

    ここらを参考にしてください。

    以上

  • ありがとうございます。