Forum: Mikrocontroller und Digitale Elektronik MSP430G2553: Watchdog auch während LPM3?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven Scholz (Gast)


Lesenswert?

Hallo Gemeinde,

kurze Frage:
Ich verwende derzeit einen MSP430 i2c-Treiber der momentan endlos auf 
entsprechende Status-Bits des I2C-Bausteins polled:
z.B.:

/* Wait for the start condition to be sent and ready to transmit 
interrupt */
while ((UCB0CTL1 & UCTXSTT) && ((IFG2 & UCB0TXIFG) == 0));

/* Wait for the data */
while ( (IFG2 & UCB0RXIFG) == 0 );

Mit dieser Lösung bin ich leider nicht ganz zufrieden.
Wenn nur ein Gerät am i2c-Bus sich aus welchen Gründen auch immer 
"verabschiedet" steht die SW halt für immer in einer der 
endlos-while()-Schleifen.

Zudem verbraucht der MSP430 in der Schleife so um die 300uA.
Ich würde die CPU daher gerne schlafen legen (LPM3) und von dem 
entsprechenden I2C-Interrupt wieder aufwecken.

Allerdings:
Was ist wenn der Interrupt niemals kommt, da ein angeschlossenes 
i2c-Gerät sich nicht meldet oder spinnt?

Ich würde daher gerne den Watchdog parallel mitlaufen lassen, sodass ich 
aus diesem Endlos-Wartezustand wieder rauskomme...
Den Watchdog würde ich vom ACLK speisen und auf 1000ms setzen.
Nach einer 1 Sekunde würde die SW dann komplett neustarten, den I2c 
baustein wieder neu-initialisieren und versuchen das i2c-Gerät wieder 
anzusprechen.

Die Frage ist, kann man das realisieren? Schlägt Watchdog auch zu, wenn 
man in LPM3 ist?
Wie würdet ihr einen Timeout realisieren OHNE polling?

Herzlichen Dank!!!

von Stefan (Gast)


Lesenswert?

MSP430x2xx Family User's Guide
10 Watchdog Timer+ (WDT+) ....................341
10.2.6 Operation in Low-Power Modes ......345

von Sven Scholz (Gast)


Lesenswert?

Also so wie ich es jetzt verstanden habe, läuft der WDT auch in LPM3 
mit, vorausgesetzt der wird vom ACLK gespeist.

Dann passt das ja ganz gut...

Danke!

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]
  • [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.