Hallo ihr Lieben! Ich arbeite mit dem CCE und bekomme nun die Warnung, dass meine CPU aus ist. Ich habe mich ein wenig schlau gelesen, dass es daran liegen wird, dass ich zu viele Deklarationen vor der main() habe und deshalb der Watchdog einspringt, bevor ich ihn aktivieren kann. Wie kann ich sicherstellen, dass das das Erste ist, was passiert? Kann mir da einer helfen?
Frank schrieb: > Ich arbeite mit dem CCE Der Acronymfinder sagt: What does CCE stand for? Your abbreviation search returned 148 meanings.
Code Composer Essentials Core Edition...also Eclipse
Die Glaskugel sagt, dass es Code Composer Essentials ist und sich um einen MSP430 handelt. Du musst mit der passenden Anweisung dem Linker mitteilen, dass er den Code zum Deaktivieren des Watchdogs vor die Initialisierung packt. Aber CPU off scheint was anderes zu sein, denn wenn der WDT anspringt, bevor große Arrays initialisiert sind, macht der MSP ständig einen Reset. Für den GCC geht das so:
1 | void low_level_init(void)__attribute__((__naked__, __section__(".init3"))); |
2 | |
3 | void low_level_init(void) |
4 | {
|
5 | WDTCTL = WDTPW+WDTHOLD; //Sitz....gib leise. |
6 | }
|
Sowas ähnliches gibts sicherlich auch beim CCE, musst du in der Anleitung suchen.
Ok, hab ich mal rein kopiert, geht leider nicht direkt ;-)
Während der Entwicklung sollte man den Watchdog generell ausgeschaltet lassen. Erst wenn die komplette Funktion fertig und getestet ist, wird als letzter Schritt die Watchdogfunktion hinzugefügt. Der Grund ist, daß ein Watchdog Entwicklungsfehler verschleiert und das Debugging erschwert. In der Entwicklung willl man ja Fehler beseitigen und daher muß man sie auch bemerken. Peter
Peter Dannegger schrieb: > Während der Entwicklung sollte man den Watchdog generell ausgeschaltet > lassen. Ja, das hab ich ja...nur habe ich gelesen, dass es Probleme geben kann, wenn das Initialisieren der Variablen länger dauert, als der Watchdog für einen Überlauf braucht...daher kann man den direkt als aller erstes ausschalten...nur weiß ich nicht wie Finde das nicht mit dem __low_level Befehl für denCode Composer
Naja, 1:1 ist das natürlich nicht auf den CCE Compiler anwendbar. Da musst du mal die Doku lesen. ich hab hier irgendeine von CCE3, da gibts Abschnitt 6.9 System Initialization da steht drin, wie das abläuft. Ansonsten mal auf der TI Seite im Forum fragen oder eine Mail an de Support. Wie gesagt, ich denke aber dass es daran nicht liegt. Legst du die CPU schlafen in der main(), wenn du alles initialisiert hast?
Peter Dannegger schrieb: > Während der Entwicklung sollte man den Watchdog generell ausgeschaltet > lassen. Das kann man so generell nicht sagen. Wenn man die Reset-Flags mitloggt, bemerkt man den Absturz bzw. das Festhängen sehr wohl und ist mitunter froh, dass der Wachhund zugebissen hat. Das hat schon so manchen MOSFET oder die angeschlossene Last gerettet. Man bedenke, man verläßt kurz das Zimmer, um etwas Wasser wegzutragen und wenn man wiederkommt, brennt die Arbeitsplatte. Mit Wachhund sieht man das blinken der StatusLED oder hört mitunter das in die Begrenzung fahrende Netzteil oder bemerkt andere zyklische Symptome.
Christian R. schrieb: > Legst du die CPU > schlafen in der main(), wenn du alles initialisiert hast? Nein, die CPU geht nicht schlafen.
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.