
#include "io430.h"
#include "intrinsics.h"

int ertek1=0;                                 


void pwm(void);


void main(void){
         WDTCTL = WDTPW + WDTHOLD;        // WDT off
         BCSCTL1 = CALBC1_1MHZ;           // A gyárilag kalibrált 1 MHz
         DCOCTL = CALDCO_1MHZ;            // DCO frekvencia beállítása
         P1DIR |= BIT0 + BIT6 + BIT2;    // P1.0 P1.6 legyen kimenet
         P1SEL |= BIT1;                 // ADC bemenet P1.1
         P1SEL |= BIT2;                 // P1.2 -> TA0.1
         P1OUT &= ~(BIT0 + BIT6);           // P1.0 P1.6 =0 
//----------- ADC konfig -------------------
       ADC10CTL1 = INCH_1 + ADC10DIV_3 ;  // A1 bemmenet, ADC óra osztó /4
       ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE;
/*--Vcc & Vss a referencia, ADC10 bekapcsolása és megszakítás engedélyezése--*/
       ADC10AE0 |= BIT1;                 //P1.1 Analog bemenet engedélyezése
 	 P1IFG &= ~BIT1;            // P1.1 interrupt jelzőbit törlése
       __enable_interrupt();             // Megszakítás engedélyezése
        while(1){
          __delay_cycles(1000);          // Várunk egy kicsit
          ADC10CTL0 |= ENC + ADC10SC;    // Mintavétel és átalakítás ind
          __low_power_mode_0();          //cpu- alvás!
           
//-------------- Kiértékelő feltétel ------------------------------------------
      if (ertek1>511){                        // ha ertek nagyobb mint 511    
        P1OUT &= ~(BIT0 + BIT6);             // P1.0 P1.6 0-ba
        P1OUT |= BIT6;                       // P1.6 ZÖLD on
      }   
  else {                                     
    P1OUT &= ~(BIT0 + BIT6);                 // P1.0 P1.6 0-ba
    P1OUT |= BIT0;                           // P1.0 PIROS on
    }
    pwm();                                   //pwm beállító függvény
} 
}
//---------------------- ADC10 megszakítás-------------------------------------

#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
 
  P1IFG &= ~BIT1;            // P1.3 interrupt jelzőbit törlése
  ertek1 = ADC10MEM;         // Ad konverzió étréke az ertek-be
  __low_power_mode_off_on_exit();  //felébresztés!
}


void pwm(void){               //pwm függvény
 CCR0 = 20000-1;             // PWM Period
 CCTL1 = OUTMOD_7;          // CCR1 beállítás
 CCR1 = ertek1+1050;                // CCR1 PWM kitöltés
 TACTL = TASSEL_2 + MC_1;}   // SMCLK
