いつもお世話になります、NAKAといいます。
先日、社内で頼まれちょっとした実験機器をRL78/I1Eを使ったボードで作りましたが、「動かなくなっちゃた」とのことで、手元に戻ってきました。確かに"うん"とも”すん”とも動かないので、ハードを壊したのかなと思って戻ったボードを確認しましたがどこも悪くなさそうです。そこでもう一度プログラムを書き直したら、なにごとも無く動きます。よくよく考えてみると、この基板はRFPで書き込まず、CS+のデバッグでデータをDLしただけの状態だったことを思い出しました。RFPでフラッシュメモリに書き込まないと、プログラムが消えてしまう可能性もあるのでしょうか?今までは消えたことが無かったのであまり気にしてませんでした。基板を貸した先でどんな扱いを受けたかが不明ですが、社内他部署で書き直したとは思えません。よろしくお願いいたします。
NAKAさんRL78の場合、リセットで値が変らないのが明文化(保証)されているのは、STOPモード中だけみたいですね。(ライトアクセスがないから?)UM上、スタックポイントが不定と書かれているので、リセット時にどこのアドレスが破壊されていても文句は言えないのかな。といいつつ、実機で見る限りSP値はいつも同じだったりしますけど。。。あとライトアクセス中にWDTリセットが入ると、ライトされているアドレスのRAM値は不定値になります。(WDTは低速OCO動作なのでメインクロックと非同期だから)
ということで、アンオフィシャルな見解としては、WDTの周期を確認して、WDTリセットが絶対に入らないタイミングでRAMアクセスしている限りはRAMは保持されます^^
RESFを見て、パワーオンリセット時は初期化して、それ以外のリセット発生時は初期化しないようにすれば、いいと思います。乱数的にRAM値を使いたいなら未初期化のRAMを使ってもいいと思いますけど、ふつープログラムは最初に「何か」値を設定しますよね?!
PS自分の家の庭で果物とか野菜がとれると楽しいですよねー。うちは日当たりが悪いので、イチゴ狩りとかブルーベリー狩りに出かけてます^^
チョコ先生 ありがとうございます。
データシート確認しました。全く気にしたことのない機能でした。勉強になりました。