Hi JarJar,
der Flash ist ein SPI-Flash. Dieser wird benutzt um Daten, wie z.B.
Programmparameter oder Messdaten zu speichern. Mann könnte auch Daten
im internen RAM halten. Die externe Lösung mit dem FLASH ist jedoch
sicherer, weil der FLASH-Speicher nicht gepuffert werden muss. Außerdem
mehr Speicherplatz als das interne RAM. Datenverlust ist somit
ausgeschlossen wenn die Spannung weg ist.
RTC: Der Atmel hat einen Real-time Timer, das ist richtig. Allerdings
habe ich mich entschlossen eine separate RTC einzusetzen, da die
Stromaufnahme der externen RTC deutlich geringer ist (ca. 300nA) als
die Stromaufnahme das Controllers im UltraLowPower-Mode (ca. 38µA).
Selbst wenn nur die Core läuft sind es 4µA. Ein positver Nebeneffekt
ist der geringere Programmieraufwand für die RTC. Weiterhin steht der
interne RealTimer für andere Aufgaben zur Verfügung.
Eine meiner eigenen Vorgaben für mein Modul war, die Pufferung mit
möglichst geringem Stromverbrauch zu realsieren. Daten werden im Flash
gespeichert, sodass nur noch die externe RTC mit einer Batt. gepuffert
werden muss.
Der Supervisor hat nur untergeordnet die Funktion, das Reset-Signal zu
generieren. Primär hat der Baustein die Funktion die
Batterieumschaltung auf die RTC zu realsieren sowie eine Überwachung
der Pufferbatterie (oder einer anderen Spannung) zur Verfügung zu
stellen. Exterene Komponenten außerhalb des Moduls (wie. Z.B.
Komparator) entfallen somit. Ein kleiner Vorteil ist auch, dass der
externe Reset solange erzeugt wird, bis 3,0 Volt überschritten werden.
Der OnChip Brownout-Detector überwacht jedoch nur die Core-Spannung
(1,8V). Über die externe Lösung läuft der Controller somit erst dann
an, wenn alle erforderlichen Spannungen im grünen Bereich sind (nicht
nur Core, sondern auch Flash und I/O-Spannung).
Gruß Tom