Hallo, Ich arbeite mit IAR Vollversion 4.3 MSP430F5438 Programmer von Olimex MSP430-JTAGTiny-V2 Folgendes Problem: Ich führe Download&Debug aus, dann steht der Debugger wie im oberen Teil des Bildes bei main(). Bei "Go" läuft er normal los. Den Programmlauf kann ich mit "break" stoppen. Wenn ich dann die Taste "Reset" betätige, sollte der Debugger doch wieder bei main() stehen, macht er aber nicht. Siehe unteren Teil des Bildes. Ich habe schon ein bisschen gesucht und vermute, dass es an dem doch größeren Umfang meiner verwendeten Variablen liegt, die alle initialisiert werden müssen, bis der Debugger bei der Deaktivierung des WDT ankommt. Zwischenzeitlich spricht der WDT an. WDTCTL = WDTPW + WDTHOLD; steht aber als erster Befehl hinter main() Es soll einen Startup-Code geben, in dem man schon vor der Initialisierung der Variablen den WDT deaktivieren kann. Wo ist dieser Code? Wo muss ich welche Projekteinstellungen verändern? Danke schonmal im Voraus... Martin
Der Speicher ist nicht so unendlich groß, dass der Watchdog zuschlägt. Das beschriebene Verhalten kannst du unter den "Projektoptionen/Debugger" einstellen. In dem Dialog gibt es die Option "Run to main".
Hallo, Die Option "Run to" war bereits aktiviert. In dem darunterliegenden Feld ist "main" eingetragen. Ich habe aber soeben die Lösung gefunden: Es lag tatsächlich an der Initialisierungszeit. Deshalb ist er nicht nach main sondern immer zu ?cstart_begin gesprungen und hat dabei im Debug-log Fenster target reset angezeigt. Hier der Hinweis von IAR: http://supp.iar.com/Support/?note=37778 Nach einfügen der Datei in mein Projekt funktioniert wieder alles wie gewohnt.
Martin schrieb: > Ich habe aber soeben die Lösung gefunden: > Es lag tatsächlich an der Initialisierungszeit. Deshalb ist er nicht > nach main sondern immer zu ?cstart_begin gesprungen und hat dabei im > Debug-log Fenster target reset angezeigt. Für die CCS-Nutzer:
1 | int _system_pre_init(void) { |
2 | WDTCTL = WDTPW + WDTHOLD; |
3 | return 1; |
4 | }
|
irgendwo im Projekt eingefügt löst das Problem dort. Max
Martin schrieb: > habe aber soeben die Lösung gefunden Danke für deine Rückmeldung! Die Note kannte ich nicht. Du hast ja auch einen MSP mit 16kB RAM verwendet. Das habe ich nicht beachtet. Ich finde die Lösung aber nicht sehr glücklich. Wenn man den Watchdog braucht, sollte er laufen. Besser wäre zu prüfen, ob man wirklich mehr als 4kB initialisierte Variablen braucht. Oder man initialisiert die Variablen in mehren Blöcken und bedient dazwischen den Watchdog.
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.