MSP430 Watchdog Interruptflag

OP #2003954
Lesenswert?
• ▲
▼
Hallo,

Ich wollte den Watchdog-Timer in meinem Programm implementieren um einen 
Reset zu erzwingen, falls sich die Software irgendwo auf gehangen hat.
Bei einem Neustart durch einen Watchdog-Reset erhoffe ich mir, meine 
verwendeten Variablen beim Neustart zurück zu setzen.

Der Watchdog besitzt im IFG1-Register ein WDTIFG-Flag doch irgendwie ist 
dieses immer gesetzt und zurücksetzen funktioniert nicht. (Der Watchdog 
ist bis jetzt noch deaktiviert, ich habe nur erstmal dieses Flag 
versucht auszulesen und zu löschen)

Gibt es noch eine Möglichkeit die anderen Reset-Varianten bei einem 
Neustart auszuwerten(Bsp.-weise einen Brown-Out oder Power-On-Reset)?

Verwendeter Controller ist der MSP430F169.

Ich danke schon mal für die Tipps und Ratschläge.
Persönliche Seite #2004469
Lesenswert?
• ▲
▼
Im User's Guide der entsprechenden MSP430-Familie ist der Watchdog Timer 
ausführlich beschrieben.
Beim 'F169 ist das slau049*. Dort in Kapitel 10, das auf Seite 192 
beginnt.

Die Brown-Out-Detection erfolgt über den SVS, Kapitel 6, ab Seite 148.
Für Dich ist das auf Seite 154 beschriebene Register SVSCTL und dort das 
Bit SVSFG interessant.

*) 
http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=slau049f&fileType=pdf
OP #2005219
Lesenswert?
• ▲
▼
Hallo,

ich habe mir jetzt mal ein TI-example zum Thema Watchdog zur Hand 
genommen und dieses etwas modifiziert.
Damit wollte ich testen wann das Interrupt-Flag vom Watchdog zurück 
gesetzt wird.
Ich habe gelesen, dass das Interruptflag nach verlassen der 
Serviceroutine zurueck gesetzt wird, leider konnte ich das bei mir nicht 
bestätigen. Auch Softwareseitiges zurücksetzen des IFG bringt keinen 
Erfolg.

Entweder habe ich es überlesen oder man benötigt das Passwort nur wenn 
man in das Watchdog-Control-Register schreiben möchte und nicht wenn man 
auf das Interrupt-Flag-Register zugreift

Sieht jemand einen Fehler in meinem Testprogramm?
Ich bin für jeden Tipp dankbar.

Programm-Code:
1
#include  <msp430f169.h>
2

3
  unsigned char a='0';    // Test-Variable
4
  unsigned char b='0';    // Test-Variable
5

6
void main(void)
7
{
8
    WDTCTL = WDT_MDLY_32;    // Set Watchdog Timer interval to ~30ms
9
    IE1 |= WDTIE;            // Enable WDT interrupt
10
    P4DIR |= 0x04;           // Set P4.3 to output direction
11

12
  while(1)
13
  {
14
    b='0';
15
    if(WDTIFG)
16
    {b='1';}                // >BREAKPOINT<
17
      else
18
      {b='2';}  
19
      _BIS_SR(LPM0_bits + GIE);   //  interrupt
20
  }
21
}
22

23
// Watchdog Timer interrupt service routine
24
#pragma vector=WDT_VECTOR
25
__interrupt void watchdog_timer(void)
26
{
27
  if(WDTIFG)
28
  {a='1';}                 // >BREAKPOINT<
29
  
30
    P4OUT ^= 0x04;                  // Toggle P4.3 
31
  
32
    IFG1 &= ~WDTIFG;    // Interruptflag soll geloescht werden
33
    
34
    if(WDTIFG)  
35
  {a='2';}
36
    else
37
    {a='3';}    // Auswertung ob es wirklich gelöscht wurde            
38
    _BIC_SR_IRQ(LPM0_bits);    // >BREAKPOINT<
39
}
PS: Die Breakpoints haben den Programmablauf angehalten und meine 
Variablenüberwachung im CodeComposerStudio aktualisiert!

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.