CS+ CGについて質問です)RL78/I1E のTRJO0(P12) (TRJIO0(P11)ではない) でのパルス出力とUART1のRXD1(P11)がブッキング?

RL78/I1Eを使ってます。

CS+ の CG で、以下の設定をすることができません。 ハード的な仕様としてはOKのハズですが、何か勘違いしておりますでしょうか?

ご教授ねがいます。

 

①UART1 TXD1, RXD1(P11) を使う設定とする

②RJタイマのパルス出力を TRJO0(P12) にて実施したい。

 

②の設定の際、RXD1(P11) の兼用ポートである TRJIO0(P11) がブッキングしているとして、②が設定できない。

 TRJIO0(P11)が使えないのはOKだが、TRJO0(P12) は無指定であり、使える状態にありますので、こちらを

 機能として選択しパルス出力できると思います。

 

この現象はCS+ v4, v5 ともに発生します。

  • norito.okadaさま
    NAKAといいます。
    本当ですね!コード生成だとUART1を使うとタイマーRJパルス出力モードに”!”マークがつきますね。僕はUART1とP12をフロー制御のRTSとして外部割り込み機能(INT3)で使ってますが、動作はOKです。一度レジスタを直接設定して試してみたらどうでしょうか?もし時間が取れましたら試してみます。
  • norito.okadaさま
    NAKA_METAL DEATH !

    昼休みにちょっちょっと実験してみました!

    UART1で通信しながら(送信)、タイマーRJのTRJO0ピンから1msのパルス出力できましたよ!

    TRJIOピンの設定はやめました。下記

    ここまでやってハードマニュアルを初めて ちらっ!とみたら、TRJO0とTRJIO0は反転出力で1セットみたいなので
    できない感じもしますが(TRJO0はTOENAで禁止にはできるけど)、実際やったらできちゃった感じですよ!

    /*************************************************************************
    // 関数名 : fn_Init_TRJ(void)
    // 動作 : タイマーRJの初期化(1msパルス出力モード)
    // 引数 :
    // 作成 : NAKA 17.03.20
    // ***********************************************************************/
    void fn_Init_TRJ(void)
    {
    TRJ0EN = 1; //クロック入力
    TRJCR0 &= ~0x01; //タイマー停止
    TRJMK0 = 1; //割り込み禁止
    TRJIF0 = 0; //割り込みフラグクリア
    TRJPR10 = 1; //プライオリティ設定
    TRJPR00 = 0; //プライオリティ設定
    TRJMR0 = 1; //パルスOUTPUT動作
    TRJIOC0 = 0x04; //OUTPUT許可 、極性設定
    TRJ0 = 0x4E1F; //1ms設定
    POM1 &= 0xFB; //TRJO0pinの設定
    P1 &= 0xFB;
    PM1 &= 0xFB;
    TRJMK0 = 0; //割り込み許可
    TRJCR0 |= 0x01; //タイマー開始
    }

    P.S.
    そうか、巷は今日は休日かぁ~ NAKA_METALは仕事DEATH !
    早く家に帰って、SU_METALとYUI_METALとMOA_METALに癒されよう!!!
  • NAKAです。
    UART1受信もできたし、おまけにCSI00もつけたのでSAUはFULL動作でTRJのTRJO0に出力パルス確認しました!
    iine! iine!
  • > ハード的な仕様としてはOKのハズですが、何か勘違いしておりますでしょうか?

    『RL78/I1E ユーザーズマニュアル ハードウェア編』の「7.4.3 パルス出力モード」に

    TRJIO0端子とTRJO0端子の2端子からパルス出力が可能で, アンダフローするごとに出力レベルを反転します。TRJO0端子については, TRJIOC0レジスタのTOENAビットによりパルス出力を停止できます。

    とあるので、パルス出力モードを使用する際には TRJIO0端子(=P11)のパルス出力を停止することはできない仕様では?

  • fujita nozomu先生 NAKAです。
    春分の日にもかかわらず、お仕事お疲れさまです。

    僕もマニュアルを読んで、上記のように 先生と同じ理解だったんですが、TRJIO0端子(P11)の設定

    POM1 &= 0xFD;
    P1 &= 0xFD;
    PM1 &= 0xFD;

    をあえてやらなかったら、

    P11からのパルス出力はありませんでした、というよりUART1のRXD1端子の機能が有効にできた感じです。UART1で受信できましたから。

    内部では出力されているのかもしれませんが、アナログスイッチみたいなものの選択がRXD1側になってる感じがしました。(勝手な想像ですが.......汗)
  • > TRJIO0端子(P11)の設定
    >
    > POM1 &= 0xFD;
    > P1 &= 0xFD;
    > PM1 &= 0xFD;
    >
    > をあえてやらなかったら、

    『RL78/I1E ユーザーズマニュアル ハードウェア編』の 23頁、「図2 - 6 端子タイプ8-1-4の端子ブロック図」を見る限りでは

    POM1 &= 0xfd;
    PU1 &= 0xfd; P1 &= 0xfd; PM1 |= 0x02;

    とするのが適切のようです。リセット信号により初期化される値であり敢えて設定しなくても動作すると思います。

    機能を有効化してポート・モード・レジスタで無効化する使い方は恐らくは CS+ のコード生成ツールの想定していないハードウェアの使い方ではないかと思いますが、メンテ性を考えると少々躊躇するものがありますね。

  • チョコです。
    RL78の端子の入出力は基本的にポート機能の設定で制御しています。
    特にPMレジスタを入力(=1)に設定すると,出力の兼用機能からは出力されません。
    今回はこのケースに当たります。
    マニュアルの「図2 - 6 端子タイプ8-1-4の端子ブロック図」を参照してください。
  • fujita nozomu先生、チョコ先生 恐縮します!NAKA DEATH!

    「図2 - 6 端子タイプ8-1-4の端子ブロック図」もちらっと見てましたが、見流してました....汗)
    norio.okadaさんへの回答としては『あまり良い使い方ではないけど、動かないことはない』になるのでしょうか?
  • チョコです。
    マニュアルに記載されている情報に基づいた使い方です。
    そもそもコード生成が初心者レベルなので,そこから一歩進んだ使い方と言うべきでしょう。
  • 使い方に問題はないと思いますが、コード生成ツールでは両立できない筈の UART1 と パルス出力モードをコード生成ツールが生成したコードを編集して実現するとなると保守性は落ちることとなるので、ドキュメントに明記するなりコメントをがっつり書くなりの作業は必要になると思います。