igendel icon

MSP430G2553 WDT Interrupt Blinky

igendel | PRO | 03/07/21 08:04:28 PM UTC | 0 ⭐ | 1373 👁️ | Never ⏰ | []
C |

900 B

|

None

|

0 👍

/

0 👎

// Demo: Green LED blink from main code, red LED blink from WDT interrupt
// Target: MSP430G2 Launchpad, with MSP430G2553 IC
 
#include <stdint.h>
#include <msp430.h> 
 
int main(void) {
 
    volatile uint16_t x;
 
    WDTCTL = WDTPW | WDTHOLD;   // stop watchdog timer
 
    P1DIR = 0b01000001; // Pin P1.6 (green LED) and P1.0 (red LED) are Outputs
 
    BCSCTL3 |= 32; // ACLK from internal VLOCLK
 
    // Resume WDT in Timer Mode, from ACLK, /8192, Reset count.
    WDTCTL = WDTPW | WDTTMSEL | WDTSSEL | WDTIS0 | WDTCNTCL;
 
    IE1 |= WDTIE; // Enable WDT interrupt
    __enable_interrupt();
 
    // Regular code to blink the green LED
    for ( ; ; ) {
 
        for (x = 25000; x; --x) {} // Poor man's delay
        P1OUT ^= 0b01000000; // Toggle green LED
 
    }
 
    return 0;
}
 
 
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void) {
 
    P1OUT ^= 0b00000001; // Toggle red LED
 
}
 

Comments