こんにちは。よこです。
RL78 G23で自作のリプロのプログラムを使ってデバッグを行っていますが、デバッグを開始すると実行中にリセットがかかってしまい、まともにデバッグができていません。
リセットはマイコン起動後、530ms程度に発生しており、同じ時間で何度も発生している状況です。
リセットが発生している地点の関数は本来、143us程度で実行が完了しますので動作がおかしい状況です。
ですが、リセットが発生している関数内のすべての処理をステップ実行すると問題なく実行でき、その後の処理も問題なく動作しております。
どのような対策をすればいいのでしょうか。
チョコです。
時間から考えて、ウォッチドッグ・タイマのオーバフローによるリセットが発生していることが原因ではないかと思われます。
その場合には、オプション・バイトの000C0Hでウォッチドッグ・タイマの動作を停止してみてください。
以上
チョコさん
ご返事ありがとうございます。
オプションバイトの000C0H番地の値を7F->6Fに変更しましたが、現象の解決にできませんでした。
デバッグでメモリに書き込まれたデータが正しいどうかも確認しました。
メモリの000C0H番地にも正しく6Fが書き込まれておりました。
加えて、WDTの設定を以下に示します。
>オプションバイトの000C0H番地の値を7F->6Fに変更しましたが、現象の解決にできませんでした。
そうなると、可能性が高いのは、「RAMパリティ・エラー検出機能」によるリセットがかかったことです。
書き込みを行っていないRAMを読み出してはいないでしょうか。
プログラムの頭で、リセット・コントロール・フラグ・レジスタ(RESF)を読み出して、リセット要因を確認してみるか、RAMパリティ・エラー制御レジスタ(RPECTL)のRPERDISビットをセットして「RAMパリティ・エラー検出機能」の動作を停止してみてください。
ご連絡ありがとうございます。
よこです。
ご返信が遅くなり申し訳ありません。
調べてみたところ、リセット・コントロール・フラグ・レジスタ(RESF)のIAWRFのフラグが立っていました。
不正メモリ・アクセスによる内部リセットが発生していることがわかりました。
一度、リプロプログラムとアプリケーションプログラムで共通にしているセクションで使用しない変数を整理したところ、リセットがかからずにプログラムが動作することがわかりました。
先ずは、解決してよかったですね。