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)のパルス出力を停止することはできない仕様では?

  • In reply to fujita nozomu:

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

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

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

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

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

    内部では出力されているのかもしれませんが、アナログスイッチみたいなものの選択がRXD1側になってる感じがしました。(勝手な想像ですが.......汗)
  • In reply to NAKA:

    > 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+ のコード生成ツールの想定していないハードウェアの使い方ではないかと思いますが、メンテ性を考えると少々躊躇するものがありますね。

  • In reply to NAKA:

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

    fujita nozomu先生、チョコ先生 恐縮します!NAKA DEATH!

    「図2 - 6 端子タイプ8-1-4の端子ブロック図」もちらっと見てましたが、見流してました....汗)
    norio.okadaさんへの回答としては『あまり良い使い方ではないけど、動かないことはない』になるのでしょうか?
  • In reply to NAKA:

    チョコです。
    マニュアルに記載されている情報に基づいた使い方です。
    そもそもコード生成が初心者レベルなので,そこから一歩進んだ使い方と言うべきでしょう。
  • In reply to NAKA:

    使い方に問題はないと思いますが、コード生成ツールでは両立できない筈の UART1 と パルス出力モードをコード生成ツールが生成したコードを編集して実現するとなると保守性は落ちることとなるので、ドキュメントに明記するなりコメントをがっつり書くなりの作業は必要になると思います。
  • In reply to チョコ:

    チョコさまへ

    マニュアルに記載されている情報という点では、図7-12 パルス出力モードの動作例のタイミングチャートに、TRJO0 端子を使った例があります。 特に、そこにはTRJIO0機能と兼用しているポートに対するポート・モードレジスタのビットが0から1になった際に、TRJIO0 端子出力はハイインピーダンス状態とあります。 つまり、十分に想定された使い方であると記載されていると読み取れます。 8-1-4 や表4-4 でも機能ピンの上位として PMレジスタがあると読めます。
    チョコ様のおっしゃるマニュアルとはどこの記載のことでしょうか?
    お客様への提示の関係上、どこに記載があって、その関係上 CG では設定できないため、お客様希望のCGでの初期設定ではないことを許容いただくように説明をつけたいと思います。 ご教授いただけると助かります。
  • In reply to norio.okada:

    チョコです。
    私が通常参照しているのは,デバイスのハードウェア マニュアルです。
    ハードウェア マニュアルがデバイスの機能について記述した,唯一(?)の公開された資料です。
    デバイスを使用する際には,ハードウェア マニュアルの関連しそうな部分を参照しています。
    今回は,既に書き込んだ様に,端子機能を説明している「第2章 端子機能」の「2.1 ポート機能」
    部分を参照して,端子タイプ「8-1-4」を確定し,「2.4 端子ブロック図」にある「8-1-4」のブロック図を
    参照しました。
    また,「4.5.1 兼用機能使用時の基本的な考え方」も参考になるかと思います。

    基本的に,CGは簡単にプログラムを作成するための手段ではありますが,それ以上ではないと
    考えています。あくまで,利用する機能であり,利用できない部分は自前でやるべきです。
    これまでも,サンプルプログラム等で何度か書いていますが,CGの設定には首をひねるような
    設定があります(その最たるものが,WDTがディフォルトでオンになっていることです)。

    ということで,CGは万能ではないことを強調しておきます。
  • In reply to チョコ:

    チョコさまへ

    ありがとうございました。
    つまり、マニュアル記載している云々ではなく、
    CGは万能ではないということで理解しました。
  • In reply to fujita nozomu:

    fujita様、ありがとうございました。
    CGを使いこなしているお客様でしたので、沿った形で進めないと、CGによる上書きでコードが消えてしまうと考えてました。
    今回の件は RJタイマのソースを一旦生成し、リネームして上書き(削除)されない状態として、他の機能ブロックと喧嘩なく使えるように設定したいと思います。

  • In reply to NAKA:

    NAKAさまへ
    実験等していただきまして、ありがとうございました。
    理解としては、チョコ様のコメントの通り、万能ではない、ということです。
    マニュアル上からは使ってよい仕様だと理解しました。
    難しいですね、マニュアル読み解くのは。