Hallo! Ich habe jetzt unter Windows (mspgcc mit msp430-gdbproxy, msp430-gdb und msp340-insight) das allseits bekannte Testprogramm auf den MSP430F149 (Olimex JTAG-Adapter + Olimex Header-Board mit dem MSP430F149, 32kHz-Quarz) geladen und gestartet (nur dieses C-Programm, keine weiter Timer-Konfiguration o.Ä.): ----------------------------------------------- #include <io.h> void wait(void); //prototype for wait() int main(void) { P1DIR=0xFF; //port 1 = output P1OUT=0x01; //set bit 0 in port 1 for(;;) { //infinite loop P1OUT=~P1OUT; //invert port 1 wait(); //call delay function } } void wait(void) //delay function { volatile int i; //declare i as volatile int for(i=0;i<32000;i++); //repeat 32000 times } ----------------------------------------------- Es funktioniert soweit alles, mich wundert nur folgendes: Lasse ich den MSP frei laufen (GDB-Proxy nicht gestartet bzw. JTAG-Adapter nicht angschlossen), so blinkt die LED an Port 1.0 ca. 60 mal pro Minute (ca. 1 Hz). Starte ich den MSP über Insight oder direkt über dessen GDB-Konsole (run bzw. continue), so blinkt die LED ca. 160 mal pro Minute (ca. 2,7 Hz). Nun meine Fragen: 1. Kennt jemand dieses Problem? 2. Was ist die Ursache für dieses Phänomen? 3. Kann jemand mit seinem MSP diesen Versuch kurz durchführen und mir berichten, ob er den gleichen Effekt beobachten kann? Grüsse, Manfred
Ich habe es eben mal mit genau Deiner Hard-und Softwarekonfiguration ausprobiert. Wenn ich im Insight auf continue clicke kriege ich eine Periode von 1,1 s, also etwa 1 Hz. Wenn ich den JTAG ab- nehme und nach kurzem Warten die Versorgungsspannung wieder anklemme bekomme ich ebenfalls 1,1 s. Habe mir das auf dem Oszilloskop angeschaut. Da Du in dem Programmbeispiel den Oszillator nicht konfigu- rierst sollte Dein f149 mit DCO-Takt auf etwa 800 kHz laufen. Woran es bei Dir mit den verschiedenen Fre- quenzen liegt kann ich nicht sagen. Hast Du das Pro- gramm mit der mspgcc - Option -g compiliert ? (Ich habe die Option -O weggelassen) Ansonsten ist bei mir alles so konfiguriert wie auf der mikrocontroller.net Seite beschrieben.
Ich habe nun auch mal die -O Option beim Compilieren weggelassen. Ändert aber bei diesem einfachen Programm wahrscheinlich nicht viel. Ich habe jetzt mal XT2 (der ja bei mir nicht vorhanden ist) ausgeschaltet und XT1 (32kHz) auf MCLK und SMCLK gelegt. Anschliessend habe ich die Verzögerungsschleife auf 3200 erniedrigt. Jetzt blinkt die LED sowohl unter Insight wie auch im Freilauf mit ca. 0,4Hz. Irgendwas muss bei mir noch anders sein, dass der DCO (der ja aktiv ist, wenn nix konfiguriert ist?) durch das Debuggen beeinflusst wird. Mich würde brennend interessieren was! Manfred
Nochmal ich... Ich habe jetzt mal probiert, den DCO explizit zu definieren: BCSCTL1 = XT2OFF + RSEL2; BCSCTL2 = 0; DCOCTL = DCO1 + DCO2; Das sollte den DCO auf etwa 1000kHz einstellen. Jetzt komme ich mit und ohne Debugging bei einer 32000er Verzögerung auf ca. 1,1Hz. Bei Dir, Kai, funktionierts ohne explizite Definition? Wie entstehen eigentlich die Standard-800Hz des DCO? Wenn man nix konfiguriert (alle Register auf 0) dann kommt laut UserManual doch was anderes raus... Manfred
Das mit den 800 kHz habe ich irgendwo in einer der Anleitungen gelesen, vermutlich slau049c.pdf. Nach einem Reset müssen nicht zwangsläufig alle Register 0 gestellt sein ! Die DCO wurde so gebaut, daß der Takt nach einem Power up im mittleren Bereich und eben bei etwa 800 kHz liegt. Warum Du im ersten Bei- spiel unterschiedliche Frequenzen für Debugging und Standalonebetrieb bekommst weiß ich leider auch nicht.
Das Problem entsteht, weil gdbproxy beim Programmieren die Takteinstellung des MSP430 verändert sie aber nacher nicht mehr zurückstellt. Ein "monitor reset" sollte reichen um das Problem zu beheben(zumindest bei mir). mfg, R2D2
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.