MSP430F2418: Software Reset ohne GPIOs zu ändern

Gast #2651297
Lesenswert?

Hallo zusammen,

wie kann man bei einem MSP430F2418 einen Software-Reset auslösen, der 
wieder bei der Main() anfängt, den Stack leert aber die GPIOs belässt.
Ein Watchdog-Reset führt nämlich dazu, dass auch die GPIO-Register auf 
Tri-State gehen.

Danke für die Hilfe.

Gruß
Jochen
#2651414
Lesenswert?

Hallo Jochen


Nein, das ist nicht möglich mit diesem MCU. Bei einem reset wird der 
ganze Baustein zurückgesetzt. Was du machen könntest wäre die Werte, 
welche an den Ausgängen liegen, speichern, den reset durchführen, und 
dann als allererstes in deiner Init() Funktion die Werte wieder laden 
und ausgeben. Der Nachteil wäre einfach dass die Pins kurz hochohmig 
werden.

Was noch zu beachten ist, ist dass die Ausgänge beim Reset "undefiniert" 
werden und deshalb ein Pull-Up bzw. ein Pull-Down Widerstand benötigen 
könnten, damit die anderen Bauteile, die du ansteuerst, nicht anfangen 
zu spinnen.


Alex
Gast #2651565
Lesenswert?

Ich weiß nicht, ob es funktioniert:
In ASM ein Sprung an die Adresse 0xFFFE (Reset Vektor). In C ein 
Funktionspointer anlegen, den auf 0xFFFE zeigen lassen und aufrufen. 
Siehe Seite 15 im Datenblatt.
Gast #2651579
Lesenswert?

>den Stack leert aber die GPIOs belässt.
Wozu soll dass denn gut sein?
Wenn der Stack 'ne Macke weg hat, dann hast Du was falsch programmiert!

Ansonsten: Statemachine
1. State: WDT anhalten + GPIO-Init; "NextState = 2. State"
2. State: restliche Inits; NextState = 3. State"
...
x. State: SW-Reset: "NextState = 2. State"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren