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
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
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.
Nachtrag: Es reicht natürlich eine Lösung, also entweder in ASM oder in C.
>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"
Für solche langen Sprünge gibts setjmp()/longjmp(). Das involviert dann überhaupt keinen Reset oder Initialisierung irgendwelcher globaler Variablen, also muss der Code das dann berücksichtigen.
Jochen schrieb: > Software-Reset Reset ist Reset und es wird der definierte Zustand eingenommen. Wenn das Sytem reinitialisiert werden soll, läßt sich das wie gewünscht programieren, mit Stack, Variablen Initialisierung, usw.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.