フラッシュROM書き込み/消去動作波形
フラッシュROMの「書き込み時」及び「消去時」はCPUは停止します。しかし、割り込み要因によってサスペンドする機能があり、 CPU動作を再開させる事が出来るので、必要な処理を実行後に「書き込み」及び「消去」を再開させています。
この動作の検証をする為に、それぞれの動作状態をポート出力波形で確認してみました。
回路図に記す様に、p3_3とp4_5は未使用ポートなので、これに各処理部でHigh/Lowを出力して動作状態を観られる様にしています。
![]() | 書き込み速度観測波形
1ch青: 1ms周期のタイマー割り込み処理開始時にポート反転処理させたポート波形。 2ch赤: フラッシュROM書き込み開始時にポート出力High。書き込み終了時にポート出力Lowを出力させたポート波形。 1バイトの書き込み時間は約150us。 左図スコープ2で、1Chの波形が立ち上がっているタイミングは、書き込み中に1ms周期のタイマー割り込みが発生して、 これによって書き込みが中断(サスペンド)して、CPU停止が解除されて割り込み処理を実行している様子です。 |
![]() | 消去速度観測波形
1ch青: 1ms周期の割り込み処理開始時にポート反転処理させたポート波形。 2ch赤: フラッシュROM消去開始時にポート出力High。消去終了時にポート出力Lowを出力させたポート波形。 1ブロック(1024バイト)の消去時間は約40ms。 消去中に1msのタイマー割り込みの都度消去処理は中断(サスペンド)している。 これにより割り込み処理は通常通り動作して訳であり、1ms周期の割り込み処理も遅れる事無く動作している。 (CPU停止状態から再起動迄の遅れが殆ど無い) |
![]() | 消去時のサスペンド動作波形
1ch青: 10ms周期のタスク開始時にポート反転処理させたポート波形。 2ch赤: フラッシュROM消去開始時にポート出力High。消去終了時にポート出力Lowを出力させたポート波形。 RTMにより一定周期で起動されるタスク(このタスクは10ms)もサスペンド機能により所定周期で実行されている。 これは、1msの割り込みによりフラッシュROM消去がサスペンド状態になるので、RTMが所定周期の起動要因に応じてタスクを起動して、 その後に再度消去処理を再開させている。 つまり、割り込み処理はマイコンの機能として実行出来、またRTMによって管理している定周期タスクも起動出来る仕組みが動作している 証の動作波形です。(一見消去中もCPUが停止して無い様な動作) |
![]() | 消去時のサスペンド無しの波形
1ch青: 1ms周期の割り込み処理開始時にポート反転処理させたポート波形。 2ch赤: フラッシュROM消去開始時にポート出力High。消去終了時にポート出力Lowを出力させたポート波形。 試しにサスペンドさせない設定の動作を確認してみたが、左図の様に消去中は1chのポート反転波形が停止しており、 割り込み処理が動作してない。 2chのHighの間はAブロックの消去タイミング。その後に1ch波形が停止している間はBブロックを消去しているタイミング。 この結果ではA、B双方のブロック(1024バイト×2)の消去時間は約73msである。 |