#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "MCG.h"
#include "ADC.h"
#include "PDB.h"

#define LED1_DD		PTFDD_PTFDD2 = 1
#define LED1		PTFD_PTFD2

   
void main(void) 
{
  EnableInterrupts; /* enable interrupts */
  LED1_DD;

  vfnMCG_Init();
  
  vfnADC_Init();
  vfnADConfigChannel(0);
  vfnADCHWTrigger(ADC_HWTRG_PDB);
  
  vfnPDBInit();
  vfnPDBConfig(PDB_CONTINUOUS_MODE);
 
  ADCSC1A = (ADC_CH4 | ADCSC1A_AIENA_MASK);		// enable interrupt
  ADCSC1B = (ADC_CH4 | ADCSC1B_AIENB_MASK);		// enable interrupt
  ADCSC1C = (ADC_CH4 | ADCSC1C_AIENC_MASK);		// enable interrupt
  ADCSC1D = (ADC_CH4 | ADCSC1D_AIEND_MASK);		// enable interrupt
  ADCSC1E = (ADC_CH4 | ADCSC1E_AIENE_MASK);		// enable interrupt
  ADCSC1F=  (ADC_CH4 | ADCSC1F_AIENF_MASK);		// enable interrupt
  ADCSC1G = (ADC_CH4 | ADCSC1G_AIENG_MASK);		// enable interrupt
  ADCSC1H = (ADC_CH4 | ADCSC1H_AIENH_MASK);		// enable interrupt

 
  //ADCSC2_ADTRG = 1 ;  Hardware trigger enabled. ADC conversion starts by either Back-back PDB or Channeln Delay PDB triggers
  PDBC2_SWTRIG = 1;	 // Start PDB by software trigger
  
  for(;;) 
  {
    if (ADC_COCO)
    {
    	ADC_COCO_CLEAR;
    	LED1 ^= 1;
    }
	  __RESET_WATCHDOG(); /* feeds the dog */
  }
}
