Das geht?
Dazu müsste der BOD maskierbar sein und sichergestellt sein, daß die VCC lange genug ausreichend hoch ist, um den EEPROM zu schreiben und nicht einen inkonsistenden Zustand zu hinterlassen, weil zB dauern der BOD triggert.
In einer Anwendung bin ich dieses Problem folgendermassen angegangen, wie auch von wkrug vorgeschlagen:
Die Spannungsversorgung sieht so aus:
Netzteil -- X -- Linearregler -- Diode -- Goldcap -- µC
Der Punkt X wird über einen NPN invertiert (ich nehme ein Kanal eines ULN2803) und mit einem INT-Port des µC verbunden. INT ist IN + PullUp.
Wenn das Netzteil Spannung liefert, funzt die Schaltung ganz normal und treibt Motoren oder weiß der Teufel was.
Wird das Netzteil ausgeschaltet, steigt die Spannung am X-Port. Das erkennt man, deaktiviert alle Hardware und legt sich in den SLEEP-Mode schlafen. Der LOW-Level am INT, ausgelöst wenn das Netzteil wieder Saft liefert, weckt den µC auf (das geht leider nur mit LOW). Da der NPN beim Schlafen sperrt, fliesst über den PullUp kein Leckstrom.
Mit dieser Strategie schaffe ich mit einem ATmega88 bis zu 8 Stunden bei VCC=4.5V hinter der Diode und C=1F des Goldcap.
Mit einem ATmega88V (geht bis 1.8V) dürfte sich die Zeut deutlich verlängern.
Falls die Zeit kürzer ist und du nicht in den SLEEP gehen willst/brauchst, dann man den SLEEP und die Invertierung des X-Signals sparen, wodurch der Zusatzaufwand im Layout durch eine einzige Leitung -- evtl mit Begrenzerdiode und Widerstand -- besteht (kleiner NPN + Basiswiderstand ist aber kaum mehr Aufwand als Z-Diode + Widerstand).
Den EEPROM brauch man in diesem Fall nicht zu bemühen. Er wird nur dazu verwendet, Benutzereinstellungen/Konfigurationen zu speichern.
Lesezeichen