R8C/35Cのブロックイレース、ウォッチドックタイマについて

R8C/35Cマイコン(ROM32KB品)について

ブロックイレースを行った場合、以下のようなイレース時間がかかります。(データシートに記載されていた)
平均300ms
最大4000ms

またCPUクロックが20MHzで動作中ウォッチドッグタイマは最大で以下の周期までにクリアしなければなりません。
128×16383÷20\,000\,000=104.9ms

ブロックAのような1Kとメモリサイズが少ない場合は間に合うのですが、ブロック3のような16Kとメモリサイズがでかくなった場合ウォッチドッグリセットがかかってしまいました。

そこで次の2点について質問させて下さい。
①ブロックイレース中もウォッチドッグタイマはカウント動作をしているのか。

②ブロックイレース中だけウォッチドッグタイマを停止させるようなことは可能か。

以上、よろしくお願いします。
  • スタッフのチョコです。

    まさし様の疑問点についてコメントさせていただきます。

    ブロックイレース中でも,ウォッチドックタイマは停止しません。

    R8C/35Cはバックグラウンドオペレーションによりプログラムの実行が可能となっております。つまり,ブロックイレース中でもプログラムを実行できます。そのプログラムの中でウォッチドックタイマをクリアしてください。これで,ウォッチドックタイマによるリセットは発生しなくなります。

  • チョコ様

    回答ありがとうございます。
    試してみたところ、やはりリセットがかかってしまいました。
    (ウォッチドッグをスタートさせない場合はイレースが正常に動作することは確認しました)

    今回イレース対象としているのがデータフラッシュ領域ではなく、プログラムROM領域であるブロック0~3です。
    バックグラウンドオペレーションの動作をデータシートで確認したのですが、データフラッシュ領域だけに書かれていました。

    バックグラウンドオペレーション機能はプログラムROM領域でもあるのでしょうか。


    またイレース処理でのウォッチドッグクリアはイレース開始する前、fst7のビットがビジーである間クリアするというコードで動作を試して見ました。
    上記のクリアタイミングに問題があればご指摘お願いします。

    以上、よろしくお願いします。
  • スタッフのチョコです。

    引き続き,まさし様の疑問についてコメントさせていただきます。

    R8C/35CのCPU書き換えモードにはEW0モードとEW1モードがございますが,どちらをご使用になっていますでしょうか。

    どちらのモードかで対応方法が違います。EW0モードでは,プログラムROMのイレーズ中にもCPUは動作します。(バックグラウンドでの動作は可能です。)
    EW1モードでは,プログラムROMのイレーズ中にはCPUはホールドします。
    もし,EW1モードをご使用になっている(そのように想像されますが)ならば,プログラムROMのイレーズ中にCPUは動作していないので,お問い合わせのような動作になることが考えられます。この場合には,サスペンド動作を使うことで対応ができます。イレーズ動作の前に,フラッシュメモリ制御レジスタ2(FMR2)のFMR20ビットでサスペンド動作を許可し,FMR22ビットで割り込み要求でのイレーズサスペンドリクエスト許可にしておいてください。この状態で,ウォッチドッグタイマをクリアしたいタイミングに間に合うようにタイマ割り込みを設定してからイレーズを実行してください。これで,イレーズを開始し,タイマ割り込みが発生すると,イレーズ動作からサスペンドモードに移行するので,そこでウォッチドッグタイマをクリアし,FMR2レジスタのFMR21ビットを0にしてイレーズを再開してください。これで,イレーズ中でもWDTでのリセットは発生しないはずです。

    R8C/35CグループでのプログラムROMの書き換えについては,両方のモードでのアプリケーションノートがございますので,そちらも参照ください。
    http://documentation.renesas.com/doc/products/mpumcu/apn/r8c/r01an0073jj_r8c.pdf

    http://documentation.renesas.com/doc/products/mpumcu/apn/rjj05b0541_r8cap.pdf
  • チョコ様

    回答ありがとうございます。

    失礼しました。
    お察しの通りEW1モードでのイレースを行っていました。

    またサンプル通りのEW0モードによるイレース処理にて、
    fst7を待つ際にウォッチドッククリアをしたところ正常にイレースされていることを確認しました。

    丁寧な対応ありがとうございます。

    以上、よろしくお願いします。