
#include "io430.h"
#include "stdint.h"
#include "intrinsics.h"

volatile uint16_t delay1,delay2;

void main(void)
{
  WDTCTL = WDT_ADLY_16;               // WDT ~50 ms periódussal
  BCSCTL3 |= LFXT1S_2;                // LFXT1 = VLO (~ 10 kHz)
  IFG1 &= ~OFIFG;                     // Clear OSCFault flag
  BCSCTL2 |= SELM_3 + DIVM_0;         // MCLK = LFXT1
  IE1 |= WDTIE;                       // WDT interrupt engedélyezése
  P1DIR |= BIT0+BIT6;                 // P1.0 P1.6 legyen kimenet
  P1OUT |= BIT0+BIT6;                 // P1.0 P1.6 kezdetben világít
  delay1 = 30;                        // LED1 periódusa 509 ms
  delay2 = 70;                        // LED1 periódusa 1717 ms
  __low_power_mode_3();               // Interrupt és LPM3 engedélyezése 
}

// Watchdog Timer megszakításának kiszolgálása
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void) { 
  if(--delay1==0) {                   // Számláljuk a megszakításokat
    P1OUT ^= BIT0;                    // P1.0 állapotának átbillentése
    delay1 = 30;                       // Lejárt számláló újratöltése
  } 
  if(--delay2==0) {
    P1OUT ^= BIT6;                    // P1.6 állapotának átbillentése
    delay2 = 70;                       // Lejárt számláló újratöltése
  }
}

