Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

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;
        }

よろしくお願いします。

  • In reply to KDX200:

    チョコです。
    >P5は0x02で、PM5は0xfdです。
    その値はSO11としては問題ないですね。
    そうなると,シリル出力許可レジスタ(SOE0レジスタ)のSOE03ビットが1になっていますか。
    どちらにしても,関係するレジスタの値を全て確認する必要があります。最終的な設定が
    正しければ,どんな順番で設定してもSO11からは何か出せるはずです。
  • In reply to チョコ:

    KDX200です。
    >そうなると,シリル出力許可レジスタ(SOE0レジスタ)のSOE03ビットが1になっていますか。
    適当なところで停止させたときの値ですが、SOE03は1でした。
    それ以外の関連するSFRレジスタは、以下の通りです。
    PER0 0x25
    SPS0 0x0004
    SMR0 0x0020
    SCR0 0x0087
    SDR0 0x0000
    SIR0 0x0000
    SSR0 0x0000
    SS0 0x0000
    ST0 0x0000
    SE0 0x0008
    SOE0 0x0008
    SOL0 0x0000
    SO0 0x0f07
    SSC0 0x0000
    ISC 0x00
    PIM5 0x00
    POM5 0x00
    PMC0 0xff
    PM5 0xfd
    P5 0x02
    特に問題はないと思います。
    今更ですが、CS+はV4.01.00[05 Sep 2016]を使用しています。最新だと思います。
  • In reply to KDX200:

    チョコです。
    SMR0,SCR0,SDR0,SSR0はSMR03,SCR03,SDR03,SSR03の間違いですね。
    気になるのは,SCR03の値が0x0087とあることです。ここは0xC087でないと,
    送信も受信もできません。
    送信したいときに,SCR03のTXE03(ビット15)が1(送信可能状態)になって
    いるかを確認してください。
  • In reply to チョコ:

    KDX200です。
    >SMR0,SCR0,SDR0,SSR0はSMR03,SCR03,SDR03,SSR03の間違いですね。
    すみません。間違いです。

    SCR03を確認してみました。
    結果、0xc007でした。
    これであれば問題ないはずですが、うまくいきません。
    SMR03,SIR03,SSR03も前回と同じ値です。
    SDR03だけが0xce00となっていますが、これは送信するクロック分周比とデータでしょうから
    問題ないと思います。
    新しく作成したプロジェクトではうまくいってますが、もう少し追ってみます。
    よろしくお願いします。
  • In reply to KDX200:

    KDX200です。

    いままで新規にプロジェクトを起こして作業していましたが、気になったことがありupします。

    CS+の初期の端子割り当てが添付のようにないっていました。

    注意書きで、最初に設定したらできないと表示されていますが、あまり気にせずにいました。

    添付画面のように、SCIで使用するポート、P30,P50,P51の端子割り当てがありません。

    もしかして、これが原因でしょうか。

    だとしたら、お騒がせして申し訳ございませんでした。

    でも、なぜ変更できないのでしょうか?

  • In reply to KDX200:

    チョコです。
    >でも、なぜ変更できないのでしょうか?
    この設定は,ハードウェア(外部端子)の直接的な変更に繋がります。通常のシステムで,端子の変更を頻繁に行うことはプログラムと言うかシステムの管理上でトラブルが発生する可能性が高くなり好ましくありません。
    デバイスとしては,単純に「周辺I/Oリダイレクション・レジスタ(PIOR)」を変更すれば簡単に変わりますが,それにソフトウェアや接続されている外部が対応できるかは疑問です。
    そのために,コード生成ではハードウェア構成をこていしてしまっていると考えられます。
    プログラマブルな機能は頻繁に機能を切り替えてつかうものではなく,目的にあわせて設定し,その後は固定しておくのだと思っています。
  • In reply to KDX200:

    チョコです。
    RL78/G13のマニュアルをチェックしたら,SCK11,SO11,SI11はリダイレクションの対象になっていません。
    従って,そのような機能はこの表には出てきません。
    端子として固定されているので,この表は無関係です。
  • In reply to チョコ:

    KDX200です。
    チョコさま、ご回答ありがとうございます。
    つまるところ、最初にI/Oを決めなければならないと言うことですね。(SH-2はなかったような?)
    サンデープログラマーなので、思いつくままにやっていました。
    RL78は初めてなので、どう使っていいかもわからず始めてしまいました。
    これからは、仕様を固めて取りかかるようにします。
    ありがとうございました。
  • In reply to KDX200:

    チョコです。
    最初にハードウェア構成を決めるのは,システムとしての問題であり,デバイスは無関係です。
    端子機能をソフトウェアで変更できても,途中で変えるとトラブルの元になるので,やめた方が
    いいです。
    (昔から,プログラマブルなデバイスの設定を頻繁に変更してトラブルを引き起こす例が多くみられ
    ました。)

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page