Ich habe dieses Problem in einem aktuellen Projekt.
Ich gehe damit um, indem ich den Live-Wert des Zählers im RAM behalte. Ich habe ein wenig Hardware hinzugefügt, damit der Mikrocontroller erkennen kann, dass die rohe Eingangsspannung niedrig ist. Wenn ja, stoppt es, was es tut, speichert den Live-Zählerwert im EEPROM und wartet dann auf die Überwachung der Rohstromspannung. Wenn es mit einer gewissen Hysterese wieder hochgeht, startet das Mikro im Wesentlichen neu. Andernfalls wird das Mikro schließlich gestoppt, wenn die Stromversorgung weiter ausfällt. Beim nächsten Neustart wird der Zählerwert aus dem EEPROM geladen und dann bis zum nächsten Ausschalten wieder live im RAM verwendet.
Es dauert nicht lange, einen kleinen Wert in das EEPROM zu schreiben. Höchstwahrscheinlich verfügt Ihr vorhandenes Stromversorgungssystem über genügend Energiespeicher, um zu erkennen, dass die Spannung niedrig wird, und dennoch über eine ausreichende garantierte Laufzeit, bevor die Stromversorgung des Mikros den Betriebs- oder EEPROM-Schreibschwellenwert unterschreitet.
In meinem Fall war die einzige zusätzliche Hardware eine Schottky-Diode, um zu verhindern, dass die Gleichstromversorgung auf dem Weg nach unten Ladung aus dem lokalen Reservoir saugt, und zwei Widerstände als Spannungsteiler, damit das Mikro die rohe Eingangsspannung lesen kann. Der Rest ist Firmware.
Es ist wichtig zu beachten, dass Sie die Spannung am Eingang der Endversorgung des Mikros beobachten sollten, nicht direkt die Netzspannung des Mikros. Wenn letzteres sinkt, kann es zu spät sein. Hoffentlich gibt es einen Spannungsbereich, der unter dem schlechtesten Fall liegt, wenn alles richtig funktioniert, und über dem, was die Stromversorgung des Mikros benötigt, um eine geregelte Spannung für das Mikro zu gewährleisten. In meinem Fall war die Versorgung des Mikros ein Buck-Regler, der mit 48 V gespeist wurde. Es gibt also einen großen Bereich, der unter dem Normalwert liegt, in dem das Mikro jedoch immer noch zuverlässig arbeiten kann.