-         

Ergebnis 1 bis 9 von 9

Thema: Zustand von SRAM nach Reset

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2006
    Beiträge
    20

    Zustand von SRAM nach Reset

    Anzeige

    Hallo,

    was passiert eigendlich mit den Daten im SRAM bzw. in den General Purpose Registern (also R0...R31) wenn ein Softreset (z.B. watchdog Reset) stattfindet?

    Wenn ich die Spannung unterbreche, dann ist es klar, dann sind die Daten weg, der SRAM ist ja schließlich flüchtig. Aber bei einem watchdog Reset müssten die Daten doch eigendlich erhalten bleiben, weil die Spannung ja nicht abgeschaltet wird.

    Leider habe ich dazu nix im Datenblatt gefunden. Da ist nur angegeben, dass die IO-Register auf die Initialwerte zurückgesetzt werden. Von dem restlichen SRAM steht da leider nix.

    Hier im Forum habe ich dazu unterschiedliche Meinungen gefunden, die einen sagen, die Daten bleiben in so einem Falle erhalten, die anderen sagen dass der SRAM undefinierte Zustände einnimmt.

    Kann mir jemand weiterhelfen?

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Willst du mit den SRAM-Daten weiterarbeiten, woher weißt du wo was steht, relevante Daten wie IO und Stack werden zurückgesetzt.
    Hubert

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2006
    Beiträge
    20
    Ich möchte in einem Programm eine Art Laufzeitmessung laufen lassen und die aktuelle Zeit ist bei mir dann im SRAM abgelegt bzw. in einem der Arbeitsregister. Und diese Zeit soll nicht bei einem watchdog Reset wieder bei null beginnen, darum wäre es ja von Vorteil wenn diese daten dann noch vorhanden sind.

    woher weißt du wo was steht
    na ich weiß ja wohin ich das vorher gespeichert habe

    relevante Daten wie IO und Stack werden zurückgesetzt
    das steht ja glücklicherweise auch im Datenblatt
    leider schweigt dass datenblatt was mit den Daten im RAM passiert

    notfalls müsste ich die Daten im EEPROM ablegen, der Zugriff dauert aber im Vergleich zum RAM viel zu lange

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zumindestens die Multifunktionsregister werden vom Watchdog nicht plattgemacht. Daher kann man auch mit 7 Befehlen einen 1-Sekunden-Blinker programmieren: http://www.roboternetz.de/phpBB2/zei...ag.php?t=18714

    Das ist im Datenblatt nicht explzit angegeben. Ich könnte mir denken, dass es beim SRAM ähnlich ist. Einfach mal ausprobieren!

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Mit den Daten passiert nichts, warum auch, wer oder was sollte etwas damit tun solange du den Strom nicht abschaltest. Bist du dir nur sicher das das Prog beim Neustart dir auf diese Stelle nicht etwas hinschreibt, der Platz ist ja nicht als belegt gekennzeichnet.

    Hubert

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von Hubert.G
    Bist du dir nur sicher das das Prog beim Neustart dir auf diese Stelle nicht etwas hinschreibt, der Platz ist ja nicht als belegt gekennzeichnet.
    In ASM ist das kein Problem, und in anderen Sprachen gibt es meist die Möglichkeit, Variablen als nicht automatisch initalisiert anzulegen.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von Hubert.G
    Bist du dir nur sicher das das Prog beim Neustart dir auf diese Stelle nicht etwas hinschreibt, der Platz ist ja nicht als belegt gekennzeichnet.
    In ASM ist das kein Problem, und in anderen Sprachen gibt es meist die Möglichkeit, Variablen als nicht automatisch initalisiert anzulegen.
    In avr-gcc wäre es zb "unsigned int nicht_initaliserte_variable __attribute__ ((section (".noinit")));"
    Und um nach dem ersten Start definierte Startwerte zu schreiben, checkt man einfach, was den letzen Reset ausgelöst hat: wars der Watchdog, nichts tun, wars nen power-on, dann initialiseren.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2006
    Beiträge
    20
    das mit dem watchdog-Blinker is ne ganz interessante Sache... schöne Idee
    dann dürfte das mit dem RAM ja eigendlich auch funktionieren, schließlich sind die Arbeitregister ja auch nur ein Teil des RAMs
    werd ich wohl mal nen Versuch machen müssten

    Bist du dir nur sicher das das Prog beim Neustart dir auf diese Stelle nicht etwas hinschreibt, der Platz ist ja nicht als belegt gekennzeichnet.
    ich programmiere in Assembler, dann dürfte es eigendlich nicht passieren, dass etwas in den RAM gelegt wird, bevor ich nicht ausdrücklich den Befehl dafür gebe... könnte höchstens in 'C' problematisch werden

    [edit]: ups... da war uwegw schneller mit der Assembler Erklärung

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    24.07.2006
    Beiträge
    20
    Und um nach dem ersten Start definierte Startwerte zu schreiben, checkt man einfach, was den letzen Reset ausgelöst hat: wars der Watchdog, nichts tun, wars nen power-on, dann initialiseren.
    genau so hab ich mir das auch vorgestellt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •