はじめまして、yasuoと申します。
RL78/G14 のデータ・フラッシュに関してご教示ください。
マニュアル「データ・フラッシュ・ライブラリ Type04」の1.2項に 状態遷移図が載っており、
opened状態でPFDL_Execute(Erase)等の 実行後に状態が sequencer busyとなりますが、
このsequencer busy状態 でのPFDL_Close()の実行でフラッシュ・ライブラリを終了させる
ことは可能でしょうか?
マニュアルを見てますと、どうもopened状態でないと PFDL_Close()をコールしてはいけないと
自分は捉えているのですが・・・
この質問の意図は、電断検出にてデータ・フラッシュの書き込み制御を 諦めてフラッシュライブラリを終了させ、
即座にSTOPモードに入りたい場面があるためです。
よろしくお願いいたします。
わわいさん
お返事ありがとうございます。
RL78自身はスーパーキャパでマイコン自身の電源電圧を保持しているので
内蔵SRAMまるごとバックアップして2,3日はデータが消失しないようにしています。
ただ、極力マイコンの消費電力を抑えるために外部電源電圧低下をIRQ割り込みで
検出したらSTOPモードに移行させるようにしています。
このSTOPモードの移行にフラッシュ・ライブラリを終了させる必要があります。
ちなみにデータ・フラッシュには機器の設定データを保存します。この設定データは、
2,3日で消えると面倒な物で、設定データ自身の更新頻度もかなり低い為、
内蔵データ・フラッシュに保存しようと考えておりました。
データ・フラッシュの書き損じについては電源ON時にバックアップされている内蔵SRAMの
内容を改めて書き直し、電源ONせずに2,3日以上経過して内蔵SRAMのデータが消失していたら、
書き直しは諦めようと考えておりました。
わわいさんお返事ありがとうございます。>そうなっているのであれば、電源断のイベントでフラグを立てるだけ、にしておいて、
>メイン処理では普通にフラッシュ処理を進め、イレーズなり書込みなりの処理が終了し
>た区切りでSTOP処理をさせるようにします。実はわわいさんの仰る通りの処理にしてあります。ただ、イレース(PFDL_Execute(Erase))の総合処理時間のMax時間が300ms程あるので、電源断からSTOPモードに移行するのに300ms以上かかってしまうのは時間的にちょっと長いと思い、
BGOのイーレス実行中(sequencer busy状態)をPFDL_Close()で中断し、フラッシュライブラリを
終了できれば良いなと思い今回の質問を投稿したしだいです。
Yasuoさん FSL_StandBy()関数を使えば消去処理を中断できますよ。(ステータス・チェック・ユーザ・モードで起動する必要あり) そのあとPFDL_Close()すれば正常なシーケンスになると思います。
いきなりPFDL_Closeコールしてフラッシュシーケンサが止まれば、それでいいとは思いますけれども止まったかの確認ができませんし、close関数はシーケンサーを触らないと記載されているのでcloseではシーケンサーが止まっていない可能性があります。(電流を見ればBGOしてるか分かりますけど)