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 ともに発生します。

Parents
  • > ハード的な仕様としては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 と パルス出力モードをコード生成ツールが生成したコードを編集して実現するとなると保守性は落ちることとなるので、ドキュメントに明記するなりコメントをがっつり書くなりの作業は必要になると思います。
  • チョコさまへ

    マニュアルに記載されている情報という点では、図7-12 パルス出力モードの動作例のタイミングチャートに、TRJO0 端子を使った例があります。 特に、そこにはTRJIO0機能と兼用しているポートに対するポート・モードレジスタのビットが0から1になった際に、TRJIO0 端子出力はハイインピーダンス状態とあります。 つまり、十分に想定された使い方であると記載されていると読み取れます。 8-1-4 や表4-4 でも機能ピンの上位として PMレジスタがあると読めます。
    チョコ様のおっしゃるマニュアルとはどこの記載のことでしょうか?
    お客様への提示の関係上、どこに記載があって、その関係上 CG では設定できないため、お客様希望のCGでの初期設定ではないことを許容いただくように説明をつけたいと思います。 ご教授いただけると助かります。
  • チョコです。
    私が通常参照しているのは,デバイスのハードウェア マニュアルです。
    ハードウェア マニュアルがデバイスの機能について記述した,唯一(?)の公開された資料です。
    デバイスを使用する際には,ハードウェア マニュアルの関連しそうな部分を参照しています。
    今回は,既に書き込んだ様に,端子機能を説明している「第2章 端子機能」の「2.1 ポート機能」
    部分を参照して,端子タイプ「8-1-4」を確定し,「2.4 端子ブロック図」にある「8-1-4」のブロック図を
    参照しました。
    また,「4.5.1 兼用機能使用時の基本的な考え方」も参考になるかと思います。

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

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

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

  • NAKAさまへ
    実験等していただきまして、ありがとうございました。
    理解としては、チョコ様のコメントの通り、万能ではない、ということです。
    マニュアル上からは使ってよい仕様だと理解しました。
    難しいですね、マニュアル読み解くのは。
Reply
  • NAKAさまへ
    実験等していただきまして、ありがとうございました。
    理解としては、チョコ様のコメントの通り、万能ではない、ということです。
    マニュアル上からは使ってよい仕様だと理解しました。
    難しいですね、マニュアル読み解くのは。
Children
  • okada様、fujita様、チョコ様
    コメントありがとうございます。コード生成担当の鈴木と申します。
    コード生成の基本方針としまして、デバイスユーザーズマニュアルを完全に網羅するものではなく、明確に記載している設定が簡単できるツールと考えております。

    タイマRJのパルス出力モードに関しては、「カウントソースをカウントし, タイマのアンダフローで, 極性を反転したパルスを出力する」とデバイスUMで記載されています。そのため、コード生成では、TRJIO0(P11), TRJO0(P12)をセットとして端子を確保しています。

    ハードウェア的には、RXD1(P11), TRJO0(P12)を使うことは可能と思いますが、コード生成ではサポートしておりませんので、コードを編集してください。
    以上、よろしくお願いします。
  • NAKA様、テストまでして頂き、ありがとうございます!
    これからも宜しくお願いします
  • 鈴木 康之さま
    いつもお世話になりますNAKAです。
    テスト投稿兼なので内容は無いよ!なのですが......オヤジか!汗)
    こういうTOOL作るのって本当に大変ですよね!
    先日、センサーでデータ取得し、SDカードにログするようなマイコン仕事をしました。ユーザの気持ちを察し、リアルタイムで本当に良好なデータが取れているか、BLE通信でパソコンにデータを飛ばす機能をおまけで付けてあげました。パソコンでモニタできるよう、パソコン側のグラフ表示や設定を変更するくらいの簡易のTOOLをC#で作ってあげて渡したら、パソコンTOOLに”あれができない?””これもできない?”いろいろ言われてしまいます。究極には”BLEで受けたデータをロギングできない?”とか言ってきます。そもそもSDカードにログするんでしょ!といいましたが、まぁいいかと思い機能追加しておきました。鈴木さまが作られたコード生成TOOLはたくさんの方に使われると思うのでなおさらでしょうね!

    チョコ先生、fujita nozomu先生
    どうもNAKAは考える調べるより先にやってしまうタイプです。さしずめチョコ先生、fujita nozomu先生は知的な頭脳派、NAKAは体を動かす肉体派でしょうか?.......(笑)

    P.S.
    知りたいことがあります。前に投稿した内容を修正する方法です。昔の環境では出来てたましたが、この新しい環境ではどのような操作でできるのでしょうか?みなさん後で文章に棒線ひっぱったりされているのでできそうなのですが.................?

     

    >チョコ先生!!

    できました!!ありがとうございます。

    ”Like ★★★☆☆ More” とあったので、好きな書き込みのとき★を付けて、”もっと”好きな時に押すボタンかと思ってました。.....汗)

  • チョコです。

    下の方に,「More」と表示されているところをクリックするとポップアップ メニューが表示されるので,Editを選択すれば,
    修正できるはずです。

    editと書き込んでpostしたものをEditに変更してみました。

  • チョコ先生!!

    上記のようにできました!!ありがとうございます。

    ”Like ★★★☆☆ More” とあったので、好きな書き込みのとき★を付けて、”もっと”好きな時に押すボタンかと思ってました。.....汗)
  • NAKAさま、鈴木です。コード生成全般のサポートを行っています。
    コード生成は開発部隊がおりまして、RL78/13グループで16人月ほどかかっております。RL78/I1Eグループは、もう少し多くかかっています。
    なぜかというと全てのパッケージについて競合端子のチェック、周辺機能の設定を行うコードが独自に必要なためです。
    そして、それぞれに評価を行うため、かなりの開発人数がかかっています。
    マイコンのグループごとに開発するので、コードの流用はあっても、開発は膨大になっています。
    開発部隊の苦労もあるので、皆様に使って頂けると嬉しいです!!

    コード生成に要望などありましたら、開発部隊に伝えますので、今後とも宜しくお願いします。
  • チョコです。
    鈴木さん,INTP端子については,INTPで使用すると,入力ポートとしても設定できません。
    これは,INTPの使い方としては問題です。INTPを両エッジに指定したときに,割り込み処理で
    端子の状態を読み出して立ち上がりか立下りかを判断します。
    立下りエッジや立ち上がりエッジ検出でもチャタリング対策で端子の状態をチェックする必要が
    あります。これらの使い方は基本的な使い方です。
    これは全てのRL78で共通の内容です。
    このスレッドへのレスで,コード生成と異なる使い方を問題にするお客様がいるようなので,
    INTP指定時に入力ポートが選択できるようにしてください。逆に,入力ポート設定時にも
    INTP指定できるようにしてほしいです。
    ぜひ,ご検討ください。
  • チョコさん、お世話になっております。鈴木です。
    INTPで使用すると、そのポートは入力ポートに設定されます。ポートGUIで入力ポート設定を許してしまうと、同じコードがr_cg_int.cとr_cg_port.cに出力することになります。そのため、ポート設定では ! マークで設定を許さないようにしています。
    INTP使用時はポートが入力ポートになります、というガイドはしていきたいと思います
    以上、よろしくお願いします。
  • チョコです。
    鈴木さん,回答ありがとうございます。
    単に"!"だけでは本当に設定してはいけない場合と区別できません。
    「INTP使用時にも入力ポートとして使用できます」と直接的な文言にしてください。
    分かっている人はいいのですが,初心者には直接的なコメントじゃないと不安に
    感じるかと思います。
  • チョコです。
    鈴木さん,この場を借りてもう1件お願いしたいところがあります。
    RL78のDMAではSFRの名称が使えるのですが,DTCではSFR名称が使用できず,
    絶対アドレスのみになっています。
    何とかSFR名称を指定できればありがたいのですが。
    DMAとDTCでは転送対象が異なるのは理解していますが,実際の使い方では
    SFRとメモリの転送が主になるので,DTCでSFR名称が使えないのはきついです。