タイマー設定

こんにちは。

MRSSK(ルネサスソリューションスターターキット)のプログラムを公式HPからダウンロードしてきて,

見ていたら疑問点がありましたので、教えて下さい。

 

開発環境:CS+,

対象マイコン:RL78G1F

ダウンロードプログラム : RL78G1F_MRSSK_SPM_LESS_120_DIP_CSP_CC_V100

プログラム内容: スターターキット(24V Motor Control Evaluation System for RX23T)とRL78G1FのCPUカードを使ってセンサレスモーターを動かすというものです。

 

プログラム中のタイマーの初期設定の部分が分かりません。

文章でうまく説明できないので、図を作りました。質問は3つ有ります。

1. TIOSの設定について

2.プログラム自動生成で動作クロックCK01を選択したい

3.TMR03の設定について、回路図を見ると有効エッジを入力する端子が解放になっているので、タイマーをスタート出来ない?

 

分かる方がいましたら教えて下さい。

よろしくお願いします。

Parents
  • チョコです。
    RL78/G1Fのスターターキットは見たこともありませんが,誰も回答しないようなので,コメントさせてもらいます。

    1. TIOSの設定について
    これは,あくまで想像ですが,TIOSレジスタの各ビットの意味から考えて,最初の演算は論理和ではなく,論理積(下位5ビットの値を抽出)ではないかと思われます。次の論理積は逆に論理和で,入力としてTRDIOB0を選択したかったのかもしれません。それが,システムとして意味があるかどうかは分かりかねます。

    2.プログラム自動生成で動作クロックCK01を選択したい
    これは,指定できません。コード生成が勝手に決めてしまいます。

    3.TMR03の設定について、回路図を見ると有効エッジを入力する端子が解放になっているので、タイマーをスタート出来ない?
    ソフトでトリガーできます。
    これは,ディレイカウントでは,コード生成が勝手にTI03の選択を行ってしまうようです。
    私は,ソフトウェアでトリガをかけるような使い方をよくしていますが,その場合にもコード生成するコードからTI03の設定を削除できませんでした。そこで,mainが起動後にこの設定をクリアして使っています。
    (TAU自体は,ソフトでトリガできるのですが,コード生成が対応できていません。)
  • チョコさん返信ありがとうございます

    >>1. 最初の演算は論理和ではなく,論理積(下位5ビットの値を抽出)ではないかと思われます。
    >>次の論理積は逆に論理和...
    そうですよね。
    私もそう思いましたが、公式で配られているプログラムかつ,初級者なので自信がありませんでした。

    >>2. 指定できません。コード生成が勝手に決めてしまいます
    わかりました。最後に手動で変更するようにします。

    >>3. ソフトでトリガーできます。
    このサンプルコードは自動生成されてない気がします(自動生成コードの見た目と全然違いますので)。
    STSは001 (図の赤線がずれていますが) になっており、MD033:MD001で、ワンカウントモードになっています。
    RL78/G1FのUser'sManualハードウェア編6.5.3によると、
    TSを1にするとTEが1になり、TIの入力を待つとなっていて、
    ソフトウェアトリガスタート出来ないと思いますが、出来るのでしょうか?
    (見落としているだけでmain関数のどこかで、TI03を再設定している?)
  • チョコです。

    >TSを1にするとTEが1になり、TIの入力を待つとなっていて、

    >ソフトウェアトリガスタート出来ないと思いますが、出来るのでしょうか?

    できます。

    手元にRL78/G1Fの環境はないので,RL78/G13のTBで確認してみます。

    下に示すように,コード生成でTM03を50usのディレイ・カウンタに設定してみました。

    この設定で,以下のプログラムに示すようにTM03を起動してトリガ待ちにします。TS0LでTM03をトリガした後は,変数g_timeをインクリメントする無限ループします。

    TM03の割り込み処理にブレークポイントを設定して実行すると,以下のような結果となりました。

    ウォッチ1で変数g_timeの値が0x0141でTM03の割り込みが入ってきていることが分かります。

    TI03は何もいじっていませんし,何回実行しても変数g_timeの値は0x0141なので,ソフトでトリガ可能なことが確認できたことになります。

    ここで,変数g_timeを使ったのは,ハードウェア マニュアルの「図6 - 66 ディレイ・カウンタとしての動作のブロック図」にTSmnが直接割り込み制御回路に行くルートがあったので,トリガしてすぐにはINTTM03が発生していないことを確認するためです。(ディレイ・カウンタで使用しているワンカウント・モードでのTMRmnレジスタのMDmn0ビットの説明に「トリガで割り込みは発生しない」とは書かれているのですが,念のためです。)

    この結果から,TI03トリガ入力に設定されていてもソフトでトリガできることが確認できます。

  • チョコさん返信遅れました。

    わざわざ試して下さり、あがとうございます。

    チョコさん返信を参考にして試してみてやっと理解できました。

     

    そして6.8.6に記述がありました。「TSmn=1 →TEmn=1になる→もう一度TSmn=1にするとダウンカウントスタートする。」

     

Reply
  • チョコさん返信遅れました。

    わざわざ試して下さり、あがとうございます。

    チョコさん返信を参考にして試してみてやっと理解できました。

     

    そして6.8.6に記述がありました。「TSmn=1 →TEmn=1になる→もう一度TSmn=1にするとダウンカウントスタートする。」

     

Children
No Data