Atmel Raminhalt nach Spannungsverlust

Raminhalt eines Mikrocontrollers nach Spannungsverlust.
Atmel Mikrocontroller habe ja üblicherweise ein SRAM eingebaut, dessen Grösse von einigen Dutzend Bytes bis hin zu mehreren 10kBytes reichen kann. In diesem Ram können zum Beispiel Variablen abgelegt werden, oder Daten gespeichert werden, alles was ein Programm üblicherweise mit RAM Speicher halt so macht.

Doch wie verhält sich der Inhalt dieses RAM Speichers bei kurzfristigen Spannungseinbrüchen ?

Ist es möglich, hier einige Sekunden zu überbrücken, während der Prozessor keinen Strom hat, so dass die Daten eventuell noch erhalten bleiben ? Damit könnte man vielleicht einige nützliche Dinge anstellen, leider gibt das Datenblatt hier keine konkreten Anwendungshinweise, also sind eigene Experimente gefragt.

Um dieses Verhalten zu erforschen, habe ich ein kleines Assembler Programm geschrieben. (Quellcode hier) Es beschreibt auf einen langen Tastendruck einen 8 Bytes langen RAM-Bereich mit einem Bytemuster und zeigt diesen nach einem kurzen Tastendruck als 16 Hexadezimal-Ziffern wieder an.

Das Vorgehen ist also klar:

Speicherbereich beschreiben

Spannung wegnehmen

Spannung wieder anlegen

Nachschauen, ob sich am Speicherinhalt etwas geändert hat.

Die ganzen Experimente wurden auf einem STK500 durchgeführt.

Ein erster Test mit einem MEGA32 16PU Prozessor verlief durchaus positiv, etwa 0.5 Sekunden ohne Spannung konnten überbrückt werden.

ABER:


Langsames Abklingen der Versorgunsspannung.

Eine genauere Betrachtung stellte dieses Resultat wieder in Frage. Wenn man sich die Versorgungsspannung im Abschaltmoment ansieht, bemerkt man, dass diese nach einem steilen Abfall in ein langsameres, exponentielles Absinken übergeht. Um also auszuschliessen, dass diese langsam abklingende Spannung das Ergebnis beeinflusst, habe ich die Versorgunsspannung zusätzlich mit einem 100 Ohm Widerstand belastet, um die Speicherkondensatoren auf dem Board schneller zu entladen.


Sehr schnelles Abklingen mit 100 Ohm Entladewiderstand.

Jetzt ergab sich ein vollkommen anderes Bild. Selbst kurze Spannungseinbrüche (diese wurden manuell durch Aus/Einschalten erzeugt) verfälschten den Speicherinhalt praktisch bis zur Unkenntlichkeit. Erst bei sehr kurzen Spannungseinbrüchen (hier schaffte ich manuell etwa 100ms) bleibt ein Teil des Inhalts erhalten, aber trotzdem kippen immer einige Bits.


Kurzer Spannungseinbruch von 100ms.

Raminhalt nach 100ms Spannungseinbruch. Ursprünglich waren alle Bytes auf $ff

Aber dennoch ergaben diese Experimente ein interessantes Ergebnis:


Typischer, reproduzierbarer Raminhalt nach längerem Spannungseinbruch.

Nach längerer Abschaltzeit ergibt sich sehr häufig dasselbe Bitmuster im RAM-Speicher, der RAM Inhalt ist also nach einem Power Up nicht wirklich zufällig, wie häufig angenommen. Also sollte man vorsichtig sein, wenn man den RAM Inhalt etwa zum Initialisieren eines Zufallsgenerators verwendet.

Ein normaler Reset bei bestehender Betriebsspannung veränderte den RAM Inhalt übrigens erwartungsgemäss nicht!

Fazit: Das im Prozessor integrierte SRAM verliert seinen Speicherinhalt sehr schnell, nach einigen 10ms ist dieser komplett unbrauchbar geworden. Man kann dieses Speicher also nicht zuverlässig dazu verwenden, Daten über kurze Spannungseinbrüche hinwegzuretten. Und, besonders interessant: Das RAM Muster nach längerer Stompause ist immer relativ konstant, wahrscheinlich bedingt durch die internen Fertigungsabweichungen der einzelnen RAM Zellen. Das Verwenden des Brown Out Detektors hatte übrigens keinerlei Einfluss auf das Ergebnis.

Übrigens legt das im Test verwendete LCD Modul ein ganz anderes Verhalten an den Tag: Wenn es einmal mit Daten beschrieben wurde, werden diese auch nach etlichen 10 Sekunden ohne Spannung wieder angezeigt, wenn man es wieder unter Spannung setzt. Der Speicher ist hier also wesentlich 'Nicht-flüchtiger'. Ich hatte eben gehofft, einen ähnlichen Effekt beim Atmel feststellen zu können, wurde aber zumindest bei meinem Testobjekt Mega32 16PU enttäuscht!

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1116438