www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 im LPM


Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,
im LPM3 vom MSP430 ist der CPU inaktiv. Wenn ich im DebugerModus den 
LPM3 aktiviere kann ich trotzdem die nächsten Befehle ausführen(LED 
blinken lassen).
Wenn CPU off ist! Wie werden dann die Befehle ausgeführt? Habe ich 
irgendwie ein Denkfehler? Kann mir bitte Jemanden Das erklären
Danke

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu wird natürlich die CPU aktiviert. Sieht man auch am Stromverbrauch. 
Im Debug-Modus, wenn du Einzelschittbetrieb oder solche Sachen machst, 
übernimmt der Debugger die komplette Kontrolle über die CPU. Wenn du 
nicht debugst, und den LPM3 aktivierst, hält die CPU definitiv an dem 
Befehl an. Erst wenn du durch einen Interrupt die CPU weckst, gehts 
weiter(zumindest in der ISR erst mal).

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch nicht im Debug Modus blinkt die LED weiter nach dem einschlaten des 
LPM3.

C Code:
main{
...
LPM3;//
while(1){
LED1_ON;
delay_ms(1000);
LED_off;}
...
}
Irgenwie komisch oder? Wie kann die LED blinken wenn CPU aus ist.
Merken: Alle Interrupts aus.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch bitte mal den Code, mit dem du den MSP in LPM3 schickst.

mfg Alex

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist der define in msp430x14x.h:
#define LPM3  (SCG1+SCG0+CPUOFF).

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann ersetze doch mal das Macro in Deinem Quelltext durch dessen Inhalt:
main
{
  ...
  LPM3;//
  while(1)  
  {
    LED1_ON;
    delay_ms(1000);
    LED_off;
  }
main
{
  ...
  (SCG1+SCG0+CPUOFF);//
  while(1)  
  {
    LED1_ON;
    delay_ms(1000);
    LED_off;
  }


Merkst Du was?

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LED blinkt weiter! Keine funktions-Änderung

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn dann bitte so:
asm(bis.w LPM3,SR);

Oder über die von TI vergefertigten Funktionen. Findeste in der IAR Doku 
oder in den Examples von TI.

mfg Alex

Autor: Tobi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
In TI Example wird auch das Macro LPMx benutzt sieh Anhang Zeile 145. 
Andereseits hat den Assembler Befehl in der Funktion nichts geändert(die 
LED leuchtet weiter)!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Merkst Du was?

Anscheinend war der Zaunpfahl nicht ausreichend groß.

  (SCG1+SCG0+CPUOFF);

Das sind einfach nur ein paar numerische Werte, die Bits im 
Statusregister beschreiben:

#define CPUOFF              (0x0010)
#define SCG0                (0x0040)
#define SCG1                (0x0080)

Allerdings hast Du die Headerdatei nicht richtig gelesen, die von Dir 
erwähnte Macrodefinition ist für Assembler. Die in der gleichen 
Headerdatei vorhandene Macrodefinition für C sieht so aus:

#define LPM3_bits           (SCG1+SCG0+CPUOFF)
#define LPM3      _BIS_SR(LPM3_bits)     /* Enter Low Power Mode 3 */

_BIS_SR() ist eine Funktion, die den übergebenen Wert ins Statusregister 
schreibt.

Damit führt LPM3; sehr wohl das aus, was es soll. Könnte es sein, daß Du 
"nicht im Debug modus" falsch verstanden hast und damit Release- statt 
Debug-Code meinst, Dein Programm aber sehr wohl noch unter Kontrolle des 
Debuggers läuft?

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal den GESAMTEN Quelltext (Watchdog?, CLK init?,..).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.