Matt23

watchdog interval

Oct 18th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.73 KB | None | 0 0
  1. #include "msp430x14x.h"
  2.  
  3. volatile int counter = 0;
  4. volatile int seconds = 0;
  5.  
  6. void setIntervalTime(int sec) {
  7.     seconds = 31 * sec;
  8. }
  9.  
  10. int main() {
  11.     WDTCTL = WDTPW + WDTTMSEL; //select the timer mode
  12.     BCSCTL1 |= XTS | DIVA1 | DIVA0;
  13.      
  14.     do {
  15.         IFG1 &= ~OFIFG;
  16.         for (int i = 0; i < 255; i++);
  17.     }
  18.     while ((IFG1 & OFIFG));
  19.    
  20.     WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL;
  21.  
  22.     IE1 = WDTIFG; //enable the interrupt
  23.     P2DIR = BIT1;
  24.     _EINT();
  25.     setIntervalTime(5);
  26.     while (1);
  27. }
  28.  
  29. #pragma vector = WDT_VECTOR
  30. __interrupt void wdttimer(void) {
  31.     counter++;
  32.     if (counter == seconds) {
  33.         P2OUT ^= BIT1;
  34.         IFG1 &= ~WDTIFG;
  35.         counter &= 0;
  36.     }
  37. }
Add Comment
Please, Sign In to add comment