書き込み保護レジスタについて

他人が書いたRX66Tのコードのレビューをしております。

私はRX66Tの使用経験がありません。(RX231とかは経験済みです。)

 

そこで書き込み保護レジスタの使用方法について質問があります。

汎用PWMタイマには、汎用PWMタイマ書き込み保護レジスタ(GTWP)なるものがついているようです。

このコードを書いた人は該当する汎用PWMタイマのレジスタを初期化する前にGTWPでレジスタやビットへの書き込みを許可していますが、元に戻して(禁止にして)いません。

この使い方は大丈夫なのでしょうか…?

保護を解除したら再度保護するもののような気もしますが、正しい使い方を知りたいです。

よろしくお願いいたします。

  • almondさん、こんにちは。NoMaYです。#お久しぶりです。

    > 保護を解除したら再度保護するもののような気もしますが、

    私もそう思います。以前、RTOS絡みですが(最後はRTOSと関係なく割り込み一般の話になりますが)、以下の投稿をしたこともあります。(ただ、ちょっと動作確認したいだけのプログラムでは、解除したままにしたプログラムを、先日かふぇルネに投稿していたりしますが、、、)

    FITのRTOS対応版BSPでレジスタライトプロテクトが解除された状態で他タスクへ遷移出来てしまうのは少し怖いと思うのですが、、、
    japan.renesasrulz.com/cafe_rene/f/forum5/5042/fit-rtos-bsp

    私は以下のような手順が良いのではないかと思っています。

    (A) 割り込みルーチン内で保護レジスタを触っていない場合

    ・保護を解除する区間は出来るだけ短くして、保護解除が不要になったらすぐに再度保護する

    (B) 割り込みルーチン内で保護レジスタを触っている場合

    ・解除期間中に割り込みに飛ばないよう、PSWリード&割り込み禁止→保護解除→操作→再度保護→PSW復帰、とする

    [訂正]すみません。考え直しました。解除期間中に別タスク/割り込みに遷移出来てしまうのは怖いですね、という投稿をしていたのに、上に書いた手順は良くないですね。一律、以下とするのが良いのではないかと思います。

    ・保護を解除する区間は出来るだけ短くして、解除が不要になったらすぐに再度保護する
    さらに
    ・解除期間中に割り込みに飛ばないよう、PSWリード&割り込み禁止→保護解除→操作→再度保護→PSW復帰、とする

  • プログラムが暴走等した場合でもPWMの出力がどうにかなることが許されない用途であれば神経を払うことは重要ですがそうでもない場合はそうでもなくて良い場合もあると思います。ケースバイケースです。
  • NoMaYさん

    ありがとうございます。

    そうですよね、その手順が一番安心できますよね。
    不安は取り除いておきたいものです。
  • fujita nozomuさん

    ケースバイケース…そりゃそうですよね。
    保護しなくていいんだったらしなくてもいいですけど、するに越したことはないと思いました。
    みなさんどうしていらっしゃるのかと思って聞いてみました。
  • > 保護しなくていいんだったらしなくてもいいですけど、するに越したことはないと思いました。

    やらなくて良いことはやらないほうが良いでしょう。
    やったところでメリットはなく、プログラムが僅かでも複雑化すれば不具合が生じる可能性は高まります。

    「なんかついてる機能は使ったら良いんじゃないか」という感覚は錯覚であり、あくまで要不要で判断するべきです。