こんにちは、SANSと申します。
RL78/L1Cを使って開発を進めていますが、起動時にリセットがかかってしまいmain()に戻る→少し処理が進んでまたmain()に戻るというループする挙動をします。
H/Wに問題はないようです(問題ないというのは推測ですが、少なくともVDDは安定しています)。
このようにソフト的にリセットが掛けられてしまう状況って何がありますか。
何でも良いので考えられる要因が思い当れば列挙して頂きたく。
ちなみにWDTはOFFにしています。
曖昧な質問であることは承知していますが、宜しくお願いします。
NAKAです。 RPERDIS = 1; //RAMパリティエラー・リセット発生を禁止 としたらどうでしょう?
> 1.RAMパリティエラーが発生する要因は何なのか
1. 宇宙線等の影響で化けたRAMを読み出した場合 2. 未初期化のRAMを読み出した場合 大体このどちらかだと思います。RAMのパリティは本来的には 1. の検出の為に用意されており、RAM が化けた状態で動作させるよりは止めるかリセットした方がマシな場合を想定してそのような機能が用意されています。 2. は RL78 では Ⅰ 未初期化の変数を読み出す Ⅱ プログラムの不具合でおかしな領域を読み出す Ⅲ 初期化されていないスタブ領域を含んだ構造体を代入等する 大体このような原因で起こりうる問題です。ⅠとⅡは本来的にプログラムの不具合なので修正すべき問題です。 Ⅲは RL78 固有の問題として偶に報告があります。本来的にプログラムの不具合ではなくコンパイラの出力コードを把握しないと解決しない問題なので根が深いです。下記のスレッドが参考になるかもしれません。 『RAMパリティ・エラーについて』 japan.renesasrulz.com/.../ram
> 2.RAMパリティエラーを無効にしても安全なのか
プログラムに不具合がなく、宇宙線等も滅多にないことだろうと判断できれば無効にしても構わないと思いますが、先に挙げたⅠとⅡは本来的に修正するべきものなので、その点はよく確認する必要があるでしょう。
NAKAです。 以前、チョコ先生に教えてもらいました(^^♪ "安全装置"とは安全機能の中の悪名高き"RAMパリティ・エラー検出機能"のことでしょう。 ディフォルトでONなので,初期化してないRAMをリードすると,パリティ・エラーを検出して リセットがかかります。(第27章を参照してください。) これを避けるには,RAMパリティ・エラー検出機能を停止した状態で,RAMを読み出し, 同じ値を書き戻す処理をやれば,パリティは正しくなるので,RAMパリティ・エラー検出を 許可しても,その領域をリードしてもリセットしなくなります。
P.S.
fujita nozomu先生に1分負けた!(T_T)