RL78 CSI について

RL78/G13を使用しています。

CSIで別のデバイスと通信したいのですが、シミュレータで出力波形を見るとクロックは出力されるのにデータが出力されません。

CSIを使用する上でアドバイスを頂けないでしょうか。

CSIは、SAU0のCSI11を使用し、シングル転送モード、連続転送モード、どちらでも同じです。

また、関係あるかどうかわからないのですが、SAU0のUART0も有効にしてコード生成しています。

コード生成されたデータは、r_cg_serial_userの割り込み処理の最後にF_SPI_comフラグのクリアを追加しています。

サブルーチンコールは以下のように行っています。

   if ((SSR11 & 0x0040 ) == 0) {
        P14_bit.no0 = 0;
        g_tx_data[0] = 0x31;
        g_tx_data[1] = 0x00;
        data_length = 1;
        F_SPI_com = 1;
        result = R_CSI11_Send_Receive(&g_tx_data[0], data_length, &g_rx_data[0]);
        
        while (1U)
        {
            if ( F_SPI_com == 0 )
                break;
        }

よろしくお願いします。

  • チョコです。
    >でも、なぜ変更できないのでしょうか?
    この設定は,ハードウェア(外部端子)の直接的な変更に繋がります。通常のシステムで,端子の変更を頻繁に行うことはプログラムと言うかシステムの管理上でトラブルが発生する可能性が高くなり好ましくありません。
    デバイスとしては,単純に「周辺I/Oリダイレクション・レジスタ(PIOR)」を変更すれば簡単に変わりますが,それにソフトウェアや接続されている外部が対応できるかは疑問です。
    そのために,コード生成ではハードウェア構成をこていしてしまっていると考えられます。
    プログラマブルな機能は頻繁に機能を切り替えてつかうものではなく,目的にあわせて設定し,その後は固定しておくのだと思っています。
  • チョコです。
    RL78/G13のマニュアルをチェックしたら,SCK11,SO11,SI11はリダイレクションの対象になっていません。
    従って,そのような機能はこの表には出てきません。
    端子として固定されているので,この表は無関係です。
  • KDX200です。
    チョコさま、ご回答ありがとうございます。
    つまるところ、最初にI/Oを決めなければならないと言うことですね。(SH-2はなかったような?)
    サンデープログラマーなので、思いつくままにやっていました。
    RL78は初めてなので、どう使っていいかもわからず始めてしまいました。
    これからは、仕様を固めて取りかかるようにします。
    ありがとうございました。
  • チョコです。
    最初にハードウェア構成を決めるのは,システムとしての問題であり,デバイスは無関係です。
    端子機能をソフトウェアで変更できても,途中で変えるとトラブルの元になるので,やめた方が
    いいです。
    (昔から,プログラマブルなデバイスの設定を頻繁に変更してトラブルを引き起こす例が多くみられ
    ました。)