Hallo, nach dem Upload einer neuen Software über die JTAG-Schnittstelle startet das GCC-Programm auf meinem MSP430F149 ganz korrekt mit zurückgesetzten Variablen, die Counter z.B. mit den Anfangswerten 0. Wenn ich aber nur die Spannung abschalte (der MC ist dann wirklich spannungsfrei) und das im Flash vorhandene Programm durch erneutes Anlegen der Spannung wieder starte, haben die Variablen noch die vorigen Werte und starten nicht bei 0. Hat jemand einen Tip, mit welchem Befehl ich den Prozessor beim Start des Programmes kontrolliert komplett zurücksetzen kann. Ich habe schon verschiedenes probiert, funktioniert aber nicht.
Wie wärs mit einem konstruktiven Beitrag und nicht irgendeinem Quatsch ?
Meines Wissens gibt es hier zwei Möglichkeiten : 1) Im c-Startup code alle Speicherstellen löschen (nullen) 2) Wenn 1) nicht vorhanden bzw. zu umständlich wg. Assembler dann alle wichtigen Variablen mit Null (bzw. Default-Wert) im C-Code bei der Definition initialisieren.
Verbinde doch ein Portpin mit dem Reset, der über Pullup auf High gezogen wird. Der Prozessor fährt den Port im Tristate hoch und Du machst diesen Port bei Bedarf zum Ausgang, der auf Low liegt.
Hi, setzte einen Pointer auf den RAM und setzte den Inhalt der RAM-Adressen auf 0.
Hi Wo ist eigentlich das Problem? Variablen werden bei Bedarf durch das Programm initialisiert. Welchen Wert sie davor haben, ist absolut egal. Sich aber darauf zu verlassen, das die Variablen schon einen 'Startwert' haben, zeugt von schlechten Programmierstil. MfG Spess
Da die Variablen im SRAM des MSP430 liegen, sind sie bei Spannungsausfall weg. Wenn da noch was da ist, dann kann das nur durch den CStartUp Code kommen, den der kompiler automatisch generiert. Vor der eigentlichen main() werden alle globalen Variablen initialisiert, wenn du sie bei der Deklaration entsprechend initialisierst, gleich auf deinen Startwert. Allerdings kann man sich nicht drauf verlassen, dass sie auf Null gesetzt werden, wenn man nix angibt. Das macht dann jeder Kompiler nach gutdünken. Der Debugger führt vor dem Start je nach Implementierung noch einige so genannte Funcletts aus, das kann schon sein, dass der nochmal explizit alle nicht initialisierten Variablen auf 0 setzt.
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.