現在のプロジェクトでこの問題が発生しています。
私がそれに対処する方法は、RAMにカウンターのライブ値を保持することです。マイクロコントローラが生の入力電源電圧が低いことを検出できるように、ハードウェアを少し追加しました。もしそうなら、それはそれがしていることを停止し、ライブカウンター値をEEPROMに保存し、そして生の電源電圧の監視を待ちます。ヒステリシスがある状態で元に戻ると、マイクロは基本的に再起動します。そうしないと、電力が低下し続けると、最終的にマイクロが停止します。次の再起動時に、カウンター値がEEPROMから読み込まれ、次の電源切断までRAMで再びライブで使用されます。
EEPROMに小さな値を書き込むのに時間がかかりません。ほとんどの場合、既存の電源システムには、電圧の低下を検出できる十分なエネルギーストレージがあり、マイクロへの電力が動作またはEEPROM書き込みしきい値を下回る前に十分な保証実行時間があります。
私の場合、唯一の追加のハードウェアは、DC電源が途中でローカルリザーバーから電荷を吸い込むのを防ぐためのショットキーダイオードと、マイクロが生の入力電圧を読み取れるように分圧器として2つの抵抗器でした。残りはファームウェアです。
マイクロの電源電圧を直接ではなく、マイクロに電力を供給する最終電源への入力の電圧を監視する必要があることに注意することが重要です。後者が低くなるまでには、遅すぎるかもしれません。うまくいけば、すべてが正常に動作している最悪のケースよりも低く、マイクロの電源がマイクロへの調整された電圧を保証するために必要な電圧範囲より上にある電圧範囲があるはずです。私の場合、microの電源は48 Vから供給される降圧レギュレータでした。そのため、通常の範囲を下回る広い範囲がありますが、microは依然として確実に動作できます。