Forum: Mikrocontroller und Digitale Elektronik RESET: Watchdog vs ASM ijmp


von Timo P. (latissimo)


Lesenswert?

Hallo!

Mit Assembler kenne ich mich nicht gut aus. Das macro habe ich in einem 
C-Code gefunden. Es dient zum Reset bei z.B. Timeouts o.ä.

Gerne würde ich den Unterschied zwischen einem "echten" Reset(wie z.B. 
durch den Watchdog hervorgerufen) und folgendem macro erfahren:

#define RESET() {asm("ldi r30,0"); asm("ldi r31,0"); asm("ijmp");}


Werden Speicherinhalte genauso behandelt, wie bei einem WDT-RST?


Danke für Erklärungen!
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Timo P. schrieb:
> Werden Speicherinhalte genauso behandelt, wie bei einem WDT-RST?
Was steht denn im Datenblatt deines uCs?
von Klaus 2. (klaus2m5)


Lesenswert?

Beim ATMEGA/ATTINY bleiben nach Watchdog-Reset und Soft-Reset die 
Speicherinhalte (RAM) erhalten. Bei allen anderen nur 42.
von Timo P. (latissimo)


Lesenswert?

Wenn die Inhalte im Ram erhalten bleiben, so werden sie jedoch im code 
bei eienr Definition/Deklaration einer Variable:

char abc = 0; wieder befüllt.


Wenn ich also einen RX-Buffer z.B. von der UART habe:


char uart_rx_buf[MAX_BUF];

dann bleibt der Buffer nach dem Reset per: ijmp befüllt?!?
von Stefan E. (sternst)


Lesenswert?

Timo P. schrieb:
> dann bleibt der Buffer nach dem Reset per: ijmp befüllt?!?

Nein, denn alle nicht explizit initialisierten statischen Variablen 
werden implizit mit Null initialisiert. Wenn du das nicht willst, musst 
du sie in die .noinit Section packen.

Außerdem: in Bezug auf den RAM-Inhalt gibt es gar keinen Unterschied 
zwischen echtem Reset und Softare-Reset (Sprung nach 0).
von Timo P. (latissimo)


Lesenswert?

Genau die Antwort wollte ich hören!

Danke!
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan Ernst schrieb:
> Außerdem: in Bezug auf den RAM-Inhalt gibt es gar keinen Unterschied
> zwischen echtem Reset und Softare-Reset (Sprung nach 0).

Der Unterschied liegt in den IO-Registern: ein Sprung nach Adresse
0 ändert diese nicht, ein Reset (egal welcher) setzt sie auf die
dokumentierten Resetwerte zurück.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.