#include "ADC.h"

void InitADC (void)
{
TRISA = 0b00111111;		//(RA0 e RA1 como entradas)

//AD Port Configuration Control bits(de AN0 a AN3 activas)
ANCON0bits.PCFG0=0;
ANCON0bits.PCFG1=0;
ANCON0bits.PCFG2=0;
ANCON0bits.PCFG3=0;
ANCON0bits.PCFG4=0;

ANCON1bits.PCFG8=1;
ANCON1bits.PCFG9=1;
ANCON1bits.PCFG10=1;
ANCON1bits.PCFG11=1;
ANCON1bits.PCFG12=1;

//Voltage Reference Configuration bits (Vdd e Vss)
ADCON0bits.VCFG0=0;
ADCON0bits.VCFG1=0;

//Analog Channel Select bits (Channel 0 - AN0)
ADCON0bits.CHS0=0;
ADCON0bits.CHS1=0;
ADCON0bits.CHS2=0;
ADCON0bits.CHS3=0;

//AD Acquisition Time Select bits (2 TAD)
ADCON1bits.ACQT0=1;
ADCON1bits.ACQT1=0;
ADCON1bits.ACQT2=0;

//AD Conversion Clock Select bits (FOSC/32)
ADCON1bits.ADCS0=0;
ADCON1bits.ADCS1=1;
ADCON1bits.ADCS2=0;

//AD Result Format Select bit (left)
ADCON1bits.ADFM=0;

//AD Calibration bit (NORMAL MODE)
ADCON1bits.ADCAL=0;

//AD On bit
ADCON0bits.ADON=1;

IPR1bits.ADIP = 1; //estabelece interrupt do AD como sendo de alta prioridade
INTCONbits.GIEH = 1; //activa os interrupts de alta prioridade
INTCONbits.GIEL = 0; //não activa os interrupts de baixa prioridade


PIE1bits.ADIE = 1; // AD interrupt activo
}